Codeforces 180 division2 总结

这次真是好开心,过了四题,rating涨了200,尽管还是没有超过1700.。。。。

这次比赛构造性算法和贪心算法比较多,有些需要提出一些猜想再进行证明,没有特别水的题目,都多少有一点思维含量。

A:只有三种情况:全部向左;全部向右;左边一连串向右的脚印,右边一连串向左的脚印。前两种都好说,最后一种,可以从右边出发,向左走,然后停在边界处即可。

B:注意到船是可以抛锚的,因此用贪心来解就好了,凡是靠近目标的就前进,远离目标的就抛锚。

C:这题很有意思,需要观察出一些结论来。注意到如果a中1的个数为偶数,那么无论怎么进行操作,1的个数都不会增加,只可能减少或者保持不变;如果1的个数为奇数,则至多会多出一个1来;而且,只要a中1的最多个数不小于b中1的个数,一定是可以构造出来的。

D:也是贪心法,如果Alice的鱼多,一定满足要求,否则进行排序,从最大编号开始算,如果Bob的编号不小于Alice就继续扫描,只要出现Alice的编号大于Bob编号的情况,就可以满足要求。

E:division 2里面每一个人做出来,我参考了tourist的,真是大神啊。。。。只要能想办法构造出2/3*n的unique序列来就可以了,构造方法并不唯一。关键是注意到s序列是unique的,因此s序列排序后,第i位置的数一定不小于i,这是很重要的一点。

至于源代码,codeforces上面可以直接看别人的源代码(点击提交编号即可),我就不贴了。


ps:还成功hack了两个人,通过读别人的代码,我强烈感觉到:很多人的思维方式好奇怪啊。。。明明很简单的事要弄得特别复杂,不理解。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值