Codeforces Round #398 (Div. 2)题解
来源:互联网 发布:flash编辑软件 编辑:程序博客网 时间:2024/04/30 15:13
题目:http://codeforces.com/contest/767
吐槽:
这场的题目不太行啊,感觉B题麻烦的要死,CD都比B简单。
A Snacktower
分析:简单模拟一下即可。
B The Queue
题意:
排队在窗口买票,营业时间是[ts,tf],一个人办理业务需要的时间都是t
现在知道了n个人去到达的时间f[i]
现在小明要去买票,小明到达的时间如果跟n个人中某人一样,那么就在这些人后面排队。
问小明什么时候去等待的时间最少。
分析:
- 如果ts开始营业之前一个人都没到,那么小明肯定这个时候去最优。
- 否则如果一个人办完业务之后他后面那个人还没来,那么小明这个时候去最优。
- 上面2种情况小明都不需要等待,否则就需要枚举小明到的时间,小明要排队,那么肯定就是排在某个人到达时间的前1刻才会有最优结果,因为这样就会排在这个人前面。
- 上面三种情况都要注意小明到达的时间不能晚于tf-t,因为这就不能办完业务了。
C Garland
题意:
给一棵树,每一个点有个权值v[i],删除2条边,分成3棵树,使得三棵树的节点权值和相同。
分析:
dfs即可。
D Cartons of milk
题意:
小明有n盒牛奶, 超市里有m盒牛奶,牛奶都有保质期,小明必须在保质期之前喝完n盒牛奶,并且尽可能多的买一些牛奶。问最多买几盒?
分析:
显然是二分答案,买x盒牛奶(买牛奶的话肯定优先买保质期长的)。
然后判断原来的n个加上买的x个,看看是否可以喝完。因为n个和x个都是有序的,所以加在一起的话是O(n)。
时间复杂度nlogn。
E Change-free
题意:
有个人现在去购物,需要在n天去购物,每天需要c[i]卢布,但是找每个卢布会对收银员产生f[i]的消极影响,现在他有m个卢布,并且有无数的纸币,一个纸币可以兑换100个卢布(找零钱的话收银员会心情不好)。问最少给收银员产生消极影响的方案。
分析:
首先可以肯定的是第i天至少支付纸币c[i]/100张,还需支付c[i]%100卢布。那么如果没有足够的卢布,肯定需要支付1张纸币让收银员找零(这样就会产生(100-c[i]%100)*f[i]的消极影响,得到100-c[i]%100个卢布。如果有足够的卢布有2种选择,一种是支付卢布,另一种是支付一张纸币,让他找钱,因为这样可以把卢布留着后面用(有可能后面产生某个很大的消极影响)。
乍一看像是dp,但是要求方案,好像不行。
因为当前的抉择需要考虑以后的,所以从后面贪心就可以了~~每次如果有足够的卢布,就选择当前会有消极影响最大的那个支付。
现在唯一剩下的问题就是怎么判断有没有足够的卢布,这个可以预处理一下,先假设到i前面所有的都支付纸币就是最多可以收集的卢布。
- Codeforces Round #398 (Div. 2)题解
- Codeforces Round #398 (Div. 2) 题解(待续)
- Codeforces Round #398 (Div. 2) 题解
- 【codeforces】Codeforces Round #276 (Div. 2) 题解
- 【codeforces】Codeforces Round #277 (Div. 2) 题解
- 【codeforces】Codeforces Round #279 (Div. 2) 题解
- 【codeforces】Codeforces Round #283 (Div. 2) 【题解】
- 【codeforces】Codeforces Round #291 (Div. 2) 题解
- Codeforces Round #131 (Div. 2) 完整题解
- Codeforces Round #135 (Div. 2)题解
- Codeforces Round #192 (Div. 2) 题解报告
- Codeforces Round #194 (Div. 2) 题解
- Codeforces Round #216 (Div. 2)部分题解
- Codeforces Round #226 (Div. 2) 题解
- Codeforces Round #177 (Div. 2) 题解
- Codeforces Round #FF (Div. 2) 题解
- Codeforces Round #256 (Div. 2) 题解
- Codeforces Round #257 (Div. 2) 题解
- 30岁上下的你,现在混得怎么样?
- 函数是否应该设置为static
- Android——ViewPager及适配器PagerAdapter...
- poj初期 计算几何
- CodeForces - 697F Legen... AC自动机+快速幂
- Codeforces Round #398 (Div. 2)题解
- 常见的进程调度算法
- 1.CRM用户登录
- linux下vi命令修改文件及保存等使用方法整理
- 最大子序列和
- 【webpack】entry 和output的详细介绍
- C语言printf函数输出表达式中的计算顺序
- 关于: Don't know how to iterate over supplied "items" in <forEach>
- 在 Linux 下用户空间与内核空间数据交换的方式