博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[GCJ2017R2]Fresh Chocolate
阅读量:6698 次
发布时间:2019-06-25

本文共 2286 字,大约阅读时间需要 7 分钟。

题目大意:

  有n个团和很多盒糖,每个团中人数不一定相同,每盒糖中都有p颗糖。
  现在要给每个团发糖,要求每个人都要发到糖,只有一盒糖发完后才能发下一盒糖。
  发糖的顺序可以任意安排,问经过合理安排后,最多能让几个团吃到新开的糖。

思路:

  分类讨论+贪心。
  讨论p的不同取值。
  对于p=2时,如果人数是偶数,就肯定能满足,如果是奇数就两两配对,满足其中的一组。
  对于p=3时,如果刚好能被3整除,就肯定能满足,剩下余数为1的和余数为2的配对,再剩下来的每三组能满足一组。
  对于p=4时,如果刚好能被3整除,就肯定能满足,剩下余数为2的尽量和自己配对,余数为1的尽量和3配对。
  剩下来1和3的只会有一种,然后和2配对即可。
  一开始考试时全想到了,不过p=3的时候,对于1和2配对的情况,当时没想清楚,以为能满足两组。
  p=4的时候对于剩下的情况打表,似乎也打挂了。
  然后就只拿了30分。

1 #include
2 #include
3 #include
4 inline int getint() { 5 register char ch; 6 while(!isdigit(ch=getchar())); 7 register int x=ch^'0'; 8 while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0'); 9 return x; 10 }11 int main() {12 int T=getint();13 for(register int t=1;t<=T;t++) {14 int n=getint(),p=getint();15 if(p==2) {16 int ans=0,cnt=0;17 for(register int i=1;i<=n;i++) {18 if(getint()&1) {19 cnt++;20 } else {21 ans++;22 }23 }24 printf("Case #%d: %d\n",t,ans+((cnt+1)>>1));25 continue;26 }27 if(p==3) {28 int cnt1=0,cnt2=0,ans=0;29 for(register int i=1;i<=n;i++) {30 const int x=getint();31 if(!(x%3)) ans++;32 if(x%3==1) cnt1++;33 if(x%3==2) cnt2++;34 }35 if(cnt1==cnt2) {36 ans+=cnt1;37 }38 if(cnt1
>1;59 cnt2&=1;60 int min=std::min(cnt1,cnt3);61 ans+=min;62 cnt1-=min;63 cnt3-=min;64 if(cnt2&&cnt1>=2) {65 ans++;66 cnt1-=2;67 cnt2=0;68 }69 if(cnt2&&cnt3>=2) {70 ans++;71 cnt3-=2;72 cnt2=0;73 }74 if(cnt2) {75 ans++;76 } else {77 ans+=(cnt1+3)>>2;78 ans+=(cnt3+3)>>2;79 }80 printf("Case #%d: %d\n",t,ans);81 continue;82 }83 }84 return 0;85 }

 

转载于:https://www.cnblogs.com/skylee03/p/7637486.html

你可能感兴趣的文章
百度地图定位地址为空
查看>>
第 11 章 Paragraphs
查看>>
Redis在windows下的配置
查看>>
对互联网中常见地图的坐标系探讨
查看>>
44.2. JavaScript Charts
查看>>
C#设计模式(19)——状态者模式(State Pattern)
查看>>
ubuntun安装ssh,并远程链接服务器操作
查看>>
[唐诗]182宫中行乐词(其一)-李白
查看>>
设计模式之禅之六大设计原则-依赖倒置原则
查看>>
ML2 配置 OVS VxLAN - 每天5分钟玩转 OpenStack(146)
查看>>
【转】TCP协议的无消息边界问题
查看>>
SQL Server-数据类型(七)
查看>>
Android Studio项目整合PullToRefresh的问题记录
查看>>
Variant 与 内存泄露
查看>>
WebSocket实战之————GatewayWorker使用笔记例子
查看>>
动手实践 Linux VLAN - 每天5分钟玩转 OpenStack(13)
查看>>
C语言 第八章 函数、指针与宏
查看>>
177.2. repository 管理
查看>>
[20150629]12c物化视图刷新Out of place
查看>>
[20160201]db_link与子光标问题.txt
查看>>