11.8日志

1.Problem - C - Codeforces

让我们从n个数中找出使得 周长p^2/面积s 最小的矩形,首先如果不思考直接枚举得到的是一个n^2复杂度的算法,我们可以尝试化简这个式子,假设我们的矩形是由a , a  b , b四条边构成的那么

p^2 / s = (2 * a + 2 * b) ^ 2 / (a * b)化简完之后可以得到8 + 4 * (a / b + b / a),很明显这里可以使用基本不等式,a + b >= 2 * sqrt(a * b) 我们其中要想取等号也就是令a + b最小当且仅当a == b的时候,那么也就是a和b的差值越小值越小,那么对于i我们只需要找到n个数中大小位于i两边的数进行枚举就行,这样时间复杂度就是O(n)了,我们将所有出现过两次的边放进vector中排序然后每个数字只与相邻的数枚举选最小即可

#define yyy cout<<"Yes"<<"\n" 
#define nnn cout<<"No"<<"\n" 
#define x first 
#define y second
#include<bits/stdc++.h>
using namespace std;typedef long long ll;
typedef pair<ll , ll> pii;
typedef pair<int , string> pis;
const int N = 1e6 + 10,inf = 0x3f3f3f3f,mod = 1e9 + 7;
const double pi = 3.1415926535898;int n;
int a[N];void work()
{cin>>n;vector <ll> b;map <ll , int> mp;for(int i = 1 ; i <= n ; i++){cin>>a[i];mp[a[i]]++;if(mp[a[i]] == 2){b.push_back(a[i]);mp[a[i]] = 0;}}pii ans;double minn = 1e18;sort(b.begin() , b.end());for(int i = 0 ; i + 1 < b.size() ; i++){ll x = b[i],y = b[i + 1];double sum = (2 * x + 2 * y) * (2 * x + 2 * y) * 1.0 / (x * y);if(minn > sum){minn = sum;ans = {x , y};}}cout<<ans.x<<" "<<ans.x<<" "<<ans.y<<" "<<ans.y<<"\n";
}int main()
{std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);int t;cin>>t;while(t--){work();}  
}   

2.C-小红打怪_牛客小白月赛104

二分答案,切记不能排序,最重要的是check函数,当我们固定mid回合后怎么最大化mid回合中的伤害呢,首先减去小红的全体伤害,然后将单体伤害和范围伤害分开考虑,使用次数分别是x和y,首先先考虑范围伤害当b[i]和b[i + 1]都大于0的时候使用范围,使用次数是min(b[i] , b[i+1]),遍历一遍之后剩下的都是单个存活的,这些都用单体伤害处理,我们需要看x和y的最大值是否小于等于mid,因此我们要最小化max(x , y),我们发现一个单体伤害可以由一个范围伤害平替换,因此x < y的时候我们令x = (x + y) / 2,y = (x + y + 1) / 2(哪个进一无所谓),若x > y,我们发现两个单体伤害可以平替一个范围伤害,也就是x - k = y + 2 * k ==> k = (x - y) / 3,因此令x = x - k,y = y + 2 * k,最后比较mid >= max(x , y)即可

#define yyy cout<<"Yes"<<"\n" 
#define nnn cout<<"No"<<"\n" 
#define x first 
#define y second
#include<bits/stdc++.h>
using namespace std;typedef long long ll;
typedef pair<ll , ll> pii;
typedef pair<int , string> pis;
const int N = 1e5 + 10,inf = 0x3f3f3f3f,mod = 1e9 + 7;
const double pi = 3.1415926535898;int n;
ll a[N],b[N];bool check(ll mid)
{for(int i = 1 ; i <= n ; i++){b[i] -= min(b[i] , mid);}ll x = 0,y = 0;for(int i = 1 ; i <= n ; i++){if(b[i] > 0 && b[i + 1] > 0){ll t = min(b[i] , b[i + 1]);b[i] -= t,b[i + 1] -= t;x += t;}}for(int i = 1 ; i <= n ; i++){if(b[i] > 0){y += b[i];}}if(y > x){y = (x + y + 1) / 2;}else if(y < x){ll k = (x - y) / 3;x -= k,y += 2 * k;}return mid >= max(x , y);
}int main()
{std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);cin>>n;for(int i = 1 ; i <= n ; i++){cin>>a[i];b[i] = a[i];}ll l = 1,r = 1e18;while(l < r){ll mid = (l + r) / 2;if(check(mid)){r = mid;}else{l = mid + 1;}memcpy(b , a , sizeof a);}cout<<r;
}   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/8865.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

php实现excel表格数据快速入库

项目场景&#xff1a;大概有一百来份excel表格数据需要整理入库&#xff0c;基础字段一样&#xff0c;如果按照传统的处理方法&#xff0c;需要先整理好数据&#xff08;数据清洗、合并等&#xff09;&#xff0c;并且按照系统导入模板整理出来&#xff0c;费时费力。 需要解决…

【青牛科技】GC5931:工业风扇驱动芯片的卓越替代者

在工业领域&#xff0c;工业风扇的稳定高效运行对于维持良好的生产环境至关重要。而驱动芯片作为工业风扇控制系统的核心元件&#xff0c;其性能直接影响风扇的工作状态。芯麦 GC5931 作为一款新型驱动芯片&#xff0c;在替代 A5931/Allegro 应用于工业风扇中展现出了非凡的优势…

CST案例分析:TLM算法仿真5G毫米波手机天线和整机

5G时代&#xff0c;产品复杂&#xff0c;更新换代快&#xff0c;如何快速仿真不同的设计版本是影响研发效率的关键问题。本期我们用达索系统SIMULIA自己的手机模型来演示5G毫米波的仿真。 &#xff08;图片仅为概念演示&#xff0c;未经达索系统授权不得使用&#xff09; 完整的…

小猿口算炸鱼脚本

目录 写在前面&#xff1a; 一、关于小猿口算&#xff1a; 二、代码逻辑 1.数字识别 2.答题部分 三、代码分享&#xff1a; 补充&#xff1a;软件包下载 写在前面&#xff1a; 最近小猿口算已经被不少大学生攻占&#xff0c;小学生直呼有挂。原本是以为大学生都打着本…

【debug】QT 相关问题error汇总

总结一下碰到过的所有问题error以及解决方案 qt的UI更新之后构建后发现没有变化 取消项目中的Shadow build的勾选&#xff0c;作用是取消影子构建&#xff0c;此后构建目录与源码处于同一目录&#xff0c;每次编译更新程序使用的UI文件error: ‘class QWidget’ has no member…

滑动窗口最大值

239. 滑动窗口最大值 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 …

GEE 案例——利用哨兵-2 图像时间序列和谷歌地球引擎云计算自动绘制和监测香港海洋水质参数

目录 简介 结论 代码 结果 APP链接 引用 简介 对沿海水质的持续监测对于水资源管理和海洋生态系统的可持续性至关重要。 遥感数据&#xff08;如哨兵-2 卫星图像&#xff09;可提供用于时间序列分析的高分辨率观测数据&#xff0c;而基于云的谷歌地球引擎&#xff08;GE…

Redis4:Redis的Java客户端

欢迎来到“雪碧聊技术”CSDN博客&#xff01; 在这里&#xff0c;您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者&#xff0c;还是具有一定经验的开发者&#xff0c;相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导&#xff0c;我将…

基于Java Web的传智播客crm企业管理系统的设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

【Eclipse系列】eclipse安装与常规配置(含插件)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 一、下载与安装 二、常规设置 1.1.设置工作空间(workspace) 1.2.设置字体和字体大小 ​编辑 1.3.设置编码 1.4.去除验证(validation) 1.5.去除单词验证(spelli…

抗辐照MCU芯片工艺解析:如何保障芯片的可靠性

行星探索、轨道飞行器任务和空间研究在内的太空项目需要创新的航天器系统技术提供通信与处理功能。随着商业航天的发展&#xff0c;对于航天电子系统需要考虑高可靠与高性能的同时&#xff0c;还需要考虑降低开发成本和缩短上市时间。 以MCU芯片AS32A401为例&#xff0c;该芯片…

qt QKeySequence详解

1、概述 QKeySequence 是 Qt 框架中的一个类&#xff0c;用于表示和处理键盘快捷键序列。它提供了一种方便的方式来解析、存储和比较键盘快捷键&#xff0c;这些快捷键通常用于触发应用程序中的特定操作或命令。QKeySequence 支持多种格式的快捷键表示&#xff0c;包括单个按键…

【RMA】基于知识注入和模糊学习的多模态歧义分析

abstract 多模态情感分析&#xff08;MSA&#xff09;利用互补的多模态特征来预测情感极性&#xff0c;主要涉及语言、视觉和音频三种模态。现有的多模态融合方法主要考虑不同模态的互补性&#xff0c;而忽略了模态之间的冲突所导致的歧义&#xff08;即文本模态预测积极情绪&…

移动取证和 Android 安全

当今的数字时代已经产生了许多技术进步&#xff0c;无论是智能手机还是虚拟现实、人工智能和物联网 (IoT) 等下一代基础技术。 智能手机已不再只是奢侈品&#xff0c;而是我们生存所必需的东西。根据各种统计数据&#xff0c;如今全球有超过 50% 的人使用手机。 由于数据存储…

【Linux】简易版shell

文章目录 shell的基本框架PrintCommandLineGetCommandLineParseCommandLineExecuteCommandInitEnvCheckAndExecBuildCommand代码总览运行效果总结 shell的基本框架 要写一个命令行我们首先要写出基本框架。 打印命令行获取用户输入的命令分析命令执行命令 基本框架的代码&am…

Java 枚举

目录 枚举是什么 常用方法 构造方法 枚举的优缺点 枚举和反射 实现单例模式 枚举是什么 枚举&#xff08;enum&#xff09;&#xff1a;是一种特殊的类&#xff0c;用于定义一组常量&#xff0c;将其组织起来。枚举使得代码更具有可读性和可维护性&#xff0c;特别是在处…

【梯度下降法优化】随机梯度下降、牛顿法、动量法、Nesterov、AdaGrad、RMSprop、Adam

本文理论参考王木头的视频&#xff1a; “随机梯度下降、牛顿法、动量法、Nesterov、AdaGrad、RMSprop、Adam”&#xff0c;打包理解对梯度下降法的优化_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1r64y1s7fU/?spm_id_from333.999.0.0&vd_sourceecbdfcacb078d0…

五个高质量伤感视频素材资源站,帮你快速找到完美创作素材

在制作短视频、MV或者广告时&#xff0c;伤感主题的视频素材往往能触动观众的情感&#xff0c;让作品更具共鸣。无论是表达分手、离别&#xff0c;还是展现孤独与失落&#xff0c;合适的伤感素材对情感类创作至关重要。为帮助创作者找到优质的视频素材&#xff0c;以下推荐5个高…

天正建筑T20V8

链接: https://pan.baidu.com/s/1k-PcXJxHWPh3-6yAIfcaPg提取码: dvyn

JavaScript 实现文本转语音功能

全篇大概2000 字&#xff08;含代码&#xff09;&#xff0c;建议阅读时间10分钟。 引言 我将向大家展示如何使用 JavaScript 和 Web Speech API 快速实现一个“文本转语音”的 Web 应用。通过这个教程&#xff0c;你将了解如何让浏览器将输入的文本朗读出来。 预览效果 一、…