codeforces 710E
2016-09-01 19:02
218 查看
题意:给你一个文本,现在这个文本是空的,你有两种操作,一种是加入或者删除一个字符耗时间x,另外一种操作是对文本复制然后粘贴一份,比如原来有c个字符现在有2*c个字符,耗时间y,要你求生成n个字符的最小时间、
思路:dp[i]代表生成i个字符的最小时间,那么如果i是奇数,那么i这个状态只能由增加一个字符和减少一个字符而来,即dp[i] = min(dp[i-1]+x, dp[i+1]+x),还有本身的状态,而如果i是偶数的话就可以由dp[i-1]+x dp[i+1]+x dp[i/2]+y,但每次更新完都要做一个预处理、具体看代码
另外dp[1]的值一定是x、
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef __int64 ll;
const int qq =2e7+10;
const ll MAXN = 1e15+15;
ll dp[qq];
int main(){
ll n,x,y;scanf("%I64d%I64d%I64d",&n,&x,&y);
for(int i=0; i<qq; ++i) dp[i] = MAXN;
dp[1] = x;
for(int i=2; i<n+n; ++i){
if(i%2==1) dp[i] = min(dp[i], min(dp[i-1]+x, dp[i+1]+x));
else dp[i] = min(dp[i], min(dp[i+1]+x, min(dp[i-1]+x, dp[i/2]+y)));
for(int j=i*2; j<n+n; j=j*2)
dp[j] = min(dp[j], dp[j/2]+y);
}
printf("%I64d\n", dp
);
}
这题A出来之后我自己都不信,QAQ ,从来没做出过E题阿,这题前前后后20分种都没花,居然就这么A了, 我不信、
之后也看了大牛们的代码、发现大牛们 i状态的时候是由 i-1或者i/2 状态转移而来 有点没搞懂、
思路:dp[i]代表生成i个字符的最小时间,那么如果i是奇数,那么i这个状态只能由增加一个字符和减少一个字符而来,即dp[i] = min(dp[i-1]+x, dp[i+1]+x),还有本身的状态,而如果i是偶数的话就可以由dp[i-1]+x dp[i+1]+x dp[i/2]+y,但每次更新完都要做一个预处理、具体看代码
另外dp[1]的值一定是x、
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef __int64 ll;
const int qq =2e7+10;
const ll MAXN = 1e15+15;
ll dp[qq];
int main(){
ll n,x,y;scanf("%I64d%I64d%I64d",&n,&x,&y);
for(int i=0; i<qq; ++i) dp[i] = MAXN;
dp[1] = x;
for(int i=2; i<n+n; ++i){
if(i%2==1) dp[i] = min(dp[i], min(dp[i-1]+x, dp[i+1]+x));
else dp[i] = min(dp[i], min(dp[i+1]+x, min(dp[i-1]+x, dp[i/2]+y)));
for(int j=i*2; j<n+n; j=j*2)
dp[j] = min(dp[j], dp[j/2]+y);
}
printf("%I64d\n", dp
);
}
这题A出来之后我自己都不信,QAQ ,从来没做出过E题阿,这题前前后后20分种都没花,居然就这么A了, 我不信、
之后也看了大牛们的代码、发现大牛们 i状态的时候是由 i-1或者i/2 状态转移而来 有点没搞懂、
相关文章推荐
- codeforces710E Generate a String(dp)
- Codeforces 710E Generate a String【dp】好题!
- CodeForces 710E Generate a String(DP)
- codeforces 710e
- 【Educational Codeforces Round 16】 Codeforces 710E Generate a String
- 【动态规划】【最短路】Codeforces 710E Generate a String
- Codeforces 710E Generate a String(dp或bfs)
- CodeForces - 710E (简单dp)
- codeforces 710E Generate a String(基础DP)
- codeforces 710E Generate a String(dp)
- CodeForces-710E Generate a String(DP)
- codeforces 710E Generate a String [dp]【动态规划】
- CodeForces 710E Generate a String (DP)
- Codeforces-710E Generate a String
- codeforces 163 Div2 A
- Codeforces 492E Vanya and Field(拓展欧几里得)
- Codeforces 653C Bear and Up-Down 【模拟】
- Codeforces 696B 树形dp,概率
- CodeForces 675 C Money Transfers
- CodeForces - 344A. Magnets