[codeforces 1369C] RationalLee 自大到小分配+自少向多分配+不定长数组的使用

C# 进程间 双内存共享 高帧率图像传输 演示了两个进程之间通过 双内存共享 的方式, 来实时处理图像,并以高帧率(40~60FPS)传输的基本示例。 进程间内存共享的优点:高性能、低延迟、资源效率高、简单可靠。 适用场景:实时图像处理、大数据传输、多进程协作、实时监控系统,等等。 阅读详情

Codeforces Round #651 (Div. 2)  参与排名人数14559

[codeforces 1369C]    RationalLee   自大到小分配+自少向多分配+不定长数组的使用

总目录详见https://blog.youkuaiyun.com/mrcrack/article/details/103564004

在线测评地址http://codeforces.com/contest/1369/problem/C

ProblemLangVerdictTimeMemory
C - RationalLee GNU C++17Accepted140 ms10800 KB

题目大意:给定一个数组,将其元素分配到不同的朋友手上,找到每个朋友手上元素的最大值,最小值,求和,寻找一种分配方式,让其和最大。输出这个最大和。

样例解释如下:

4 2
1 13 7 17
1 3

48
朋友1分配的元素17,最大值是17,最小值是17,和值是17+17=34
朋友2分配的元素1,13,7,最大值是13,最小值是1,和值是13+1=14
最大和值是34+14=48


6 2
10 10 10 10 11 11
3 3

42
朋友1分配的元素11,10,10,最大值是11,最小值是10,和值是11+10=21
朋友2分配的元素11,10,10,最大值是11,最小值是10,和值是11+10=21
最大和值是21+21=42


4 4
1000000000 1000000000 1000000000 1000000000
1 1 1 1

8000000000
朋友1分配的元素1000000000,最大值是1000000000,最小值是1000000000,和值是1000000000+1000000000=2000000000
朋友2分配的元素1000000000,最大值是1000000000,最小值是1000000000,和值是1000000000+1000000000=2000000000
朋友3分配的元素1000000000,最大值是1000000000,最小值是1000000000,和值是1000000000+1000000000=2000000000
朋友4分配的元素1000000000,最大值是1000000000,最小值是1000000000,和值是1000000000+1000000000=2000000000
最大和值是2000000000+2000000000+2000000000+2000000000=8000000000

赛中,第一发WA,想歪了,经过不断模拟才纠正了想歪的思路,若想看纠正过程,可看AC代码之后的内容。

基本思路:第一步,将数组元素自大到小排序,将朋友能分配到的元素个数自少到多排序。

两次分配,第一次,将数组元素自大到小,分配给每个朋友一个元素。

第二次,将剩下的数组元素自大到小,先分配给需求数量少的朋友,充分分配完后,再分配给需求逐渐增多的朋友,直至分配完成。

具体过程如下:

10 4
10 9 8 7 6 5 4 3 2 1
1 2 3 4

55

第一遍分配:
朋友1分配:10
朋友2分配:9
朋友3分配:8
朋友4分配:7

第二遍分配:
朋友1分配:10
朋友2分配:9 6
朋友3分配:8 5 4
朋友4分配:7 3 2 1


朋友1分配:10,最大值是10,最小值是10,和值是10+10=20
朋友2分配:9 6,最大值是9,最小值是6,和值是9+6=15
朋友3分配:8 5 4,最大值是8,最小值是3,和值是8+4=12
朋友4分配:7 3 2 1,最大值是7,最小值是1,和值是7+1=8
最大和值20+15+12+8=55

AC代码如下:

#include <cstdio>
#include <algorithm>
#include <vector>
#define maxn 200010
#define LL long long
using namespace std;
int a[maxn],w[maxn];
LL ans;
vector<int> q[maxn];
int cmp(int a,int b){
	return a>b;
}
void solve(){
	int n,k,i,cnt,j;
	scanf("%d%d",&n,&k);
	for(i=1;i<=n;i++)scanf("%d",&a[i]);
	for(i=1;i<=k;i++)scanf("%d",&w[i]);
	sort(a+1,a+1+n,cmp);//自大到小排序
	sort(w+1,w+1+k);//自少到多排序
	cnt=0,ans=0;
	for(i=1;i<=k;i++)q[i].clear();
	for(i=1;i<=k;i++)q[i].push_back(a[i]),w[i]--;//第一次分配
	j=k+1;
	for(i=1;i<=k;i++)//第二次分配
		while(w[i])q[i].push_back(a[j]),w[i]--,j++;
	for(i=1;i<=k;i++)
		ans+=q[i][0]+q[i][q[i].size()-1];
	printf("%lld\n",ans);
}
int main(){
	int t;
	scanf("%d",&t);
	while(t--)solve();
}

赛中,第一发WA,想歪了,经过不断模拟才纠正了想歪的思路,若想看纠正过程,可看AC代码之后的内容。

10 4
10 9 8 7 6 5 4 3 2 1
1 2 3 4

面对如上数据
朋友1分配:10,最大值是10,最小值是10,和值是10+10=20
朋友2分配:9 6,最大值是9,最小值是6,和值是9+6=15
朋友3分配:8 5 3,最大值是8,最小值是3,和值是8+3=11
朋友4分配:7 4 2 1,最大值是7,最小值是1,和值是7+1=8
最大和值20+15+11+8=54

分配显然有问题:

面对如上数据,应这样分配
朋友1分配:10,最大值是10,最小值是10,和值是10+10=20
朋友2分配:9 6,最大值是9,最小值是6,和值是9+6=15
朋友3分配:8 5 4,最大值是8,最小值是3,和值是8+4=12
朋友4分配:7 3 2 1,最大值是7,最小值是1,和值是7+1=8
最大和值20+15+12+8=55

 

AT32F403A ADC采集实战:如何用V2库精准读取可变电阻电压(附完整代码) 本文详细介绍了基于AT32F403A微控制器和V2库实现高精度ADC采集的工程化方法。内容涵盖从基础的单通道轮询配置到多通道扫描与DMA传输的进阶应用,并重点分享了提升ADC采集精度的关键技巧,包括采样时间优化、软件滤波算法以及硬件布局考量,提供了完整的实战代码,帮助开发者解决数据跳动、稳定性等常见问题。 阅读详情

相关推荐

NVIDIA 2025 Board Design Engineer 校招笔试

电路分析,矩形波阶跃反馈驱动​,误差信号。非常简单,数电or​离散基础。第一题是考试规矩知情确认。大二暑假做的,纯体验​。五六题太长,下篇分享。

m0_74253823的博客 1125

C. RationalLee(贪心+思维)

李想在他的朋友之间分配他背包里的所有整数,这样,第i个朋友将得到正好是wi个整数,每个整数将被交给正好一个朋友。1≤k≤n)--李拥有的整数和李的朋友的数量。李想让他的朋友尽可能地快乐,换句话说,他想让朋友的快乐之和最大化。每个测试案例的第二行包含n个整数a1,a2,...,an(-109≤ai≤109)--李拥有的整数。对于每个测试案例,打印一个单一的整数--Lee能够实现的最大幸福之和。让我们把一个朋友的幸福感定义为他将得到的最大和最小的整数之和。接下来的3t行包含测试用例--每三行一个。

m0_64158084的博客 299

基因树构建全流程:从OrthoFinder到iTOL的保姆级教程(附兰科植物案例)

本文提供了一份从OrthoFinder到iTOL的基因树构建全流程保姆级教程。详细解析了利用OrthoFinder构建物种树、IQ-TREE构建无根基因树、Notung进行树调和生根,以及最终在iTOL中实现专业可视化的每一步操作与实战经验,并以兰科植物NB-ARC基因家族为例进行演示,帮助研究者系统掌握基因树分析方法。

tequila的博客 521

2021-03-03

题目链接 https://codeforces.com/problemset/problem/1369/B B. AccurateLee time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output Lee was cleaning his house for the party when he found a messy string under the c

m0_50690890的博客 301

Python 爬虫实战:共享单车数据采集全流程与市场洞察深度剖析

本文介绍了如何利用Python爬虫技术获取和分析共享单车运营数据。文章从项目背景出发,详细阐述了系统架构设计,包括数据抓取、清洗存储、分析和可视化模块。通过Scrapy、BeautifulSoup等工具实现数据采集,使用Pandas进行数据清洗,并借助Matplotlib进行可视化分析。实战部分展示了爬虫代码示例和城市分布、使用频率等分析案例。最终指出数据驱动分析有助于了解行业现状和市场趋势,未来可结合机器学习等方法进行深入洞察。该技术方案为共享单车行业研究提供了有效的数据支持。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2232

全志A133的AndroidSDK

本小节来学习如何下载全志安卓SDK,SDK的目录,编译和烧录提示:以下是本篇文章正文内容,下面案例可供参考以上就是整个SDK的目录和编译烧录,目的在于让初学者快速了解整个源码的目录和编译出镜像喜欢就订阅吧。

qq_24093081的博客 4054

B. AccurateLee

time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Lee was cleaning his house for the party when he found a messy string under the carpets. Now he'd like to make it clean accurately and in

无知的我 2331

Dify基础:Dify平台的本地化部署(含windows部署中,常见问题及解决方案)

第一种比较简单,只需要在浏览器中,打入https://dify.ai/就可以。这个指令虽然看起来简单,但实际上涉及到对docker的使用。这个项目既然有github地址,那它一般就是开源的。我们点开这个github地址,便能看到dify的私有化部署方式。我们可以看到,还是上面那个图,有个按钮,是指向该项目的Github地址的。第二步:按照dify的github给出的指令,对dify进行安装。第一步:我们把dify下载到自己的电脑(或者服务器)上。这里,我们只考虑第二种方式,也就是私有化部署。

xiezhipu的博客 1万+

Codeforces C. RationalLee (思维) (Round #652 Div.2)

传送门 题意: 给你n个数,有m个朋友,每个朋友要拿其中w[i]个数,每个人获得的幸福值是他拿的数的最大值与最小值的和,如果只有一个数最大值最小值都是它,让你求出所有人能获得的最大幸福值是多少? 思路: 由于每个朋友的幸福值是其得到的max和min的和,那么就要保证其最大值经量大 将a[]和w[]都先按升序排列,将依次最大的a[i]分给w值为1的朋友,这样他的幸福值就是max*2,贡献值增长最快。 将所有w[i]为1的处理完后,再将a数组的max和min分配给w[i]最大的朋友,剩余的w[i] - 2个

Satur9的博客 437

vivo X200 Ultra前瞻系列(1):重塑影像旗舰标准

在色彩风格化、视频专业度上实现了安卓阵营的突破性进步。其2亿像素长焦、双LYT-818传感器及5轴防抖技术,对追求个性化创作的用户具有强吸引力。若真机表现能兑现硬件承诺,X200 Ultra有望重新定义手机影像的“专业”标准。然而,其厚重设计、价格门槛及生态适配问题,仍需市场检验。vivo X200 Ultra作为2025年上半年影像旗舰,以“全焦段夜视仪+电影级视频”为核心卖点,主打。,对标小米15 Ultra、OPPO Find X8 Ultra等竞品。,顶配版(24GB+2TB)逼近万元。

专注:太空算力、AI infra、异构调度、大模型成本工程 963

手把手教你学Simulink--基于Simulink的开关磁阻电机电流斩波控制仿真建模

特点:定子和转子均由普通硅钢片叠压而成,没有永磁体或绕组在转子上。工作原理:利用转子旋转时不同位置的磁阻变化产生转矩。控制挑战:由于SRM的高度非线性和磁饱和效应,需要复杂的控制算法来优化性能。利用Simscape Electrical中的模块构建SRM的物理模型,配置参数如电阻、电感等。matlab深色版本% 添加SRM电机模块根据实际需求调整电机参数。通过上述步骤,我们简要介绍了如何基于Simulink进行开关磁阻电机的电流斩波控制仿真建模。

MHD0815的博客 306

C. RationalLee(贪心)

题目传送门 题意: 给你n个数,有m个朋友,每个朋友要拿其中w[i]个数,每个人获得的贡献是他拿的数的最大值加最小值,如果只有一个数最大值最小值都是它,让你求出所有人能获得的最大贡献是多少? 思路: 我们尽可能的把大的数给只拿一个数字的人,因为这样这些大数会被加两遍,然后我们安排剩下的人。我们知道一个人的贡献只和最大值最小值有关,中间那些是什么并不关心,所以我们从拿的最多的那个人开始,因为当前剩下的数中,最小和最大的那两个数肯定是要被计算的,所以我们把这两个数给到这个人,中间的话我们考虑贪心,把剩下尽可能小

Joker_He的博客 669

SPI 总线信号完整性与时序一致性测试

SPI总线测试的核心目标是验证其电气与时序行为是否满足芯片规格要求,确保通信可靠性

硬核科技 328

【菜笔cf刷题日常-1400】C. RationalLee(贪心)

思路:当该人仅分配1个数时要选取当前最大数,使最大数可以被加2次;其余的按照分配数从大到小枚举,每次选取当前最大数,其他选取当前最小数。

IamDickman的博客 337

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Codeforces Round #652 (Div. 2) C. RationalLee(思维,sort)

题目传送 题意: 给你n个整数(一些数可能为负),分给k个人(输入中给出每个人分多少个整数),现在每个人得到的价值为分给自己的整数中的最大值加上最小值。现在问所有人的获得的价值的最大值为多少? 思路: 我们先把n个整数和k个人所分的数量从小到大排个序。 1.现在我们要寻找这k个人中,有没有人只能得到一个整数,如果有的话,那么把最大的整数给他(因为他所能得到的价值是最大值的俩倍,所以最大的整数给他,对总体的价值肯定增长的越快) 2.把所有的只能得到一个数的人分配完了后,我们再排个序,使得剩下的人中分配的整数数

give it a try 458

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Codeforces Round #652 (Div. 2) A-D题

比赛链接:https://codeforces.com/contest/1369 A.FashionabLee 判断边数是否为4的倍数 #include <iostream> using namespace std; int main() { int T; cin>>T; while(T--){ int n; cin>>n; if(n%4==0)cout<<"YES"<&lt

qq_41648012的博客 315

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

[codeforces 1369D] TediousLee 树上找规律

Codeforces Round #651 (Div. 2) 参与排名人数14559 总目录详见https://blog.youkuaiyun.com/mrcrack/article/details/103564004 在线测评地址http://codeforces.com/contest/1369/problem/D

mrcrack的博客 858

codeforces1369C(贪心)

题意描述 Lee just became Master in Codeforces, and so, he went out to buy some gifts for his friends. He bought n integers, now it’s time to distribute them between his friends rationally… Lee has n integers a1,a2,…,an in his backpack and he has k friends. Lee

Dejavu的博客 369

CodeForce1369 - C. RationalLee - 排序+贪心

题目传送门:C. RationalLee 题目大意: 把n个数字分给k个朋友,每个朋友 i 的happiness是所拿到的 w[i] 个数字中最大值与最小值的和,问总的happiness最大为多少? 思路: 设最终答案为ans 每个人的happiness是所拿到的w[i]个数字中最大值与最小值之和,也就是只有最大值与最小值对ans产生了贡献,而在这之间的数对ans贡献为0,所以我们希望尽可能多的让小的数字贡献为0,大的数字尽可能做贡献,尽可能提高最小值之和。 那么就有以下几点: 对于w[i]

tourist1412的博客 425

#652 (Div. 2)C. RationalLee(贪心)

题目描述 Lee just became Master in Codeforces, and so, he went out to buy some gifts for his friends. He bought n integers, now it’s time to distribute them between his friends rationally… Lee has n integers a1,a2,…,an in his backpack and he has k friends. Le

li_wen_zhuo的博客 748

CodeForces - 1369E DeadLee(贪心+拓扑)

题目链接:点击查看 题目大意:Lee的厨房中有 n 道菜,每道菜的数量为 w[ i ] ,现在 Lee 会邀请 m 个朋友,每个朋友都有最爱吃的两道菜 x[ i ] 和 y[ i ] ,当朋友 i 来到 Lee 家后,会选择吃掉 x[ i ] 和 y[ i ] 各一份,如果 x[ i ] 没有了的话,那么他只会选择吃掉一份 y[ i ] ,如果 y[ i ] 没有了的话同理,但是如果 x[ i ] 和 y[ i ] 同时没有的话,这个朋友就会吃掉 Lee,问 Lee 能否安排一个合适的顺序以保证存活,输出

Falcon的博客 1699

codeforces1369D TediousLee

https://codeforces.com/problemset/problem/1369/D 一眼结论,从这棵树从下往上,能取就取,肯定能得到最大值,因为儿子数量更多一些,如果取父节点会影响很多子树。 然后再考虑,i=3,只能取跟节点的1个爪子,i=4的时候,从下往上取,取中间的爪子,根节点不会被取,i=5的时候,也不会取根节点 然后可以发现 对于level i , 由3棵子树+1个根节点形成,其中2棵i-2的树,1棵i-1的树 那么如果i-2和i-1都不取根节点,也就是i的根节点的子节点,那么

binarycopycode 434

1369C RationalLee

思路: 贪心法 for _ in range(int(input())): n, k = map(int, input().split()) a = sorted([*map(int, input().split())],reverse=True) m = sorted([*map(int, input().split())]) s = m.count(1) ans = sum(a[:k])+sum(a[:s]) for i in m[s:]: .

weixin_44049576的博客 228

CodeForces - 1089K King Kog's Reception (线段树,区间最大值,区间和)

???? ???? ???? const int MX = 1e6 + 10; #define lc (root<<1) #define rc (root<<1|1) #define lt (root<<1),l,mid #define rt (root<<1|1),mid+1,r ll mx[MX<<2],sum[MX<<2]; void ...

欢迎光临 我的心 306

codeforces #197 div.2解题报告

A. Helpful Maths time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Xenia the beginner mathematician is a third year stu

\(°ω°)\ 1276

C. Rational Resistance(思维)

Mad scientist Mike is building a time machine in his spare time. To finish the work, he needs a resistor with a certain resistance value.However, all Mike has is lots of identical resistors with unit ...

码农的一亩三分地 459
上一篇: [codeforces 1369B] AccurateLee 寻找左边界的1,右边界的0
下一篇: [codeforces 1369D] TediousLee 树上找规律
mrcrack
博客等级 码龄15年 1072粉丝 1063原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值