Codeforces Round #190 (Div. 1 + Div. 2)
2024-10-08 02:30:14
A. Ciel and Dancing
- 模拟。
B. Ciel and Flowers
- 混合类型的数量只能为0、1、2,否则3个可以分成各种类型各自合成。
C. Ciel and Robot
- 考虑一组命令得到的点集,那么后面的点的起始点会对应于其中点集中的一个点。
D. Ciel and Duel
- 两种策略:
- atk-atk:一个取最小的前若干个,一个取最大的若干个。
- atk-def、atk:对于def状态的,需要优先取最靠近的值抵消,剩余atk状态的也是取最近的。
E. Ciel the Commander
- 0应该设置成尽可能通过多的点对,此时树会变成若干棵子树,则变成了子问题,那么显然是点分治了。
F. D. Ciel and Flipboard
- 枚举第\(x\)行的翻转状态。
- 对于\(i \lt x\)的行来说,在不影响\(x\)行状态的条件下,\((i,j)\)和\((i+x+1,j)\)的翻转状态总是一致的。
- 考虑\(i<x\)的行,在不影响其他列的条件下,\((i,j)\)和\((i, j+x+1)\)的翻转状态应该是一致的。
- \(j=x\)的列需要单独考虑,如果不翻转,则对其他列无影响。如果翻转,那么对于所有\(j<x\)的点\((i, j)\)和\((i, j+x+1)\)的翻转状态总是相反的。
- 于是对于每一行来说,相对于其他行都是独立的。考虑\(j=x\)的翻转状态,可以得到两种类型的和,\[type0=max(a(i,j)+a(i, j+x+1), -a(i,j)-a(i,j+x+1))\\type1=max(a(i,j)-a(i,j+x+1),-a(i,j)+a(i,j+x+1))\]
G. Ciel and Gondolas
- 朴素的dp做法容易想:\(dp(i,j)\)表示用\(i\)辆车拉走\(j\)个人的最小代价,复杂度\(O(n^2k)\)。
- \(opt(i,j)\)表示\(dp(i,j)\)的最优决策点,可证明\(opt(i,j)\le opt(i,j+1)\)。
- 根据决策点的单调性,可以使用分块dp优化,时间复杂度\(O(nklogn)\)。
最新文章
- [Math &; Algorithm] 拉格朗日乘数法
- 不同servlet版本的web.xml的头部信息
- 怎样设置一个DIV在所有层的最上层,最上层DIV
- asp.net 把数据导出为excel
- 简单的谈一下.NET下的AOP
- YII 集成jquery
- python 执行shell命令
- Git——git 上传时 遗漏文件解决办法
- Eclipse 改动凝视的 date time 日期时间格式,即${date}变量格式
- POJ 1007
- java网络编程(2)——UDP与TCP
- hive: join 遇到问题
- animation 动画
- ExcelUploadUtil
- Scrapy at a glance预览
- [math] sagemath
- golang 编译或链接 c语言动态、静态库的方法, golang 与 c语言 相互调用
- 37-Arrays.sort() 由大到小排序 和 对象数组排序
- 【转】【Centos】安装 lnmpa 集成开发环境
- redhat 7.2更新yum源时踩的坑