codeforces Educational Round 16 E. Generate a String
来源:互联网 发布:i like it what is it 编辑:程序博客网 时间:2024/06/14 01:13
题目链接
分析:
乍一看这道题感觉dp不能做,然后跑图论。spfa和dijkstra跑的话可能会复杂度太大。
实际上这道题dp可以做的,需要仔细想一下。
对于每个dp[i], 有三种转移方法
先讨论偶数:偶数不可能从dp[i + 1]转移过来。这样想:i + 1作为一个奇数,只可能从i和i + 2转移过来,如果是前者,那么dp[i] < dp[i + 1], 与偶数从dp[i + 1]转移的前提dp[i] > dp[i + 1]矛盾;如果是后者,那么可以确定的一点就是dp[i + 1]的转移没有经过dp[i],这样一定存在一次翻倍。那么dp[i]的转移就是需要在一次翻倍的前提下再有字母的删除,花费是y+kx,这样一定比dp[i]从dp[i/2]转移只有一次y来得大,这也不可能。所以,讨论下来,
再讨论奇数:奇数只可能从dp[i - 1]和dp[i +1]转移过来。如果dp[i]从dp[i + 1]转移,那么i+1作为一个偶数,一定只可能从dp[(i+1)/2)转移过来。为什么呢?如果dp[i+1]从dp[i]转移,那么dp[i] < dp[i + 1],就与dp[i]从dp[i +1]转移的前提dp[i] > dp[i + 1]矛盾,所以不可能。于是总结一下奇数的转移方程
然后就是O(N)的计算了。
没写代码,就不贴了
0 0
- 【Educational Codeforces Round 16】 Codeforces 710E Generate a String
- Educational Codeforces Round 16 -- E. Generate a String (DP)
- Educational Codeforces Round 16 E. Generate a String-DP
- Educational Codeforces Round 16 E. Generate a String (dp)
- Educational Codeforces Round 16 E. Generate a String
- Educational Codeforces Round 16 E 题 Generate a String
- codeforces Educational Round 16 E. Generate a String
- DP方程——Generate a String ( Educational Codeforces Round 16 E)
- Educational Codeforces Round 16 (A-E)
- codeforces E. Generate a String
- Codeforces-710E Generate a String
- codeforces 710E Generate a String(dp)
- CodeForces 710E Generate a String (DP)
- CodeForces-710E Generate a String(DP)
- Codeforces 702 (Educational Codeforces Round 15) A~E
- Educational Codeforces Round 6 A.B.C.D.E
- Educational Codeforces Round 9 E.Thief in a Shop
- Educational Codeforces Round 9 E. Thief in a Shop
- 幻读和不可重复读的区别
- 深入理解函数内部原理(5)——闭包
- 虚继承下对象的内存分布
- 近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等)
- 对于 RxJava2 的 认知与直接应用(一)
- codeforces Educational Round 16 E. Generate a String
- 关于RabbitMQ的远程ip访问的解决方法
- Token
- 自动补全插件 jquery.autocomplete
- stm32笔记--1硬件
- 如何获取永久性的facebook page access token
- 设置对话框中编辑框的背景颜色和字体颜色
- Mybatis在Xml中处理大于号和小于号的方法
- JS与OCX交互