codeforces 706c
来源:互联网 发布:python 获取当前周数 编辑:程序博客网 时间:2024/09/21 06:34
这个题就是不断的暴力转移,可能是我dp很少写,这是个很简单的dp,还有string的用法。很实用,swap很方便。主要就是几个转移。还有就是注意数据范围,他那个是long long,定义无穷大的时候不能用0x3f3f3f3f因为用了的话还有数据比他大,所以还是用1e15.
#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<string>#include<iostream>using namespace std;const long long INF = 1e15;long long c[100010] , dp[100010][2];string str[100010][2];string reverse(string s){ string res=s; int i,len=res.length(); for(i=0;i<len/2;++i) swap(res[i],res[len-1-i]); return res;}int main(){ long long n , i; while(~scanf("%I64d",&n)){ for( i = 0 ; i < n ; i++) scanf("%I64d",&c[i]); for( i = 0 ; i < n ; i++){ // scanf("%s",str[i][0]); cin >> str[i][0]; str[i][1] = reverse(str[i][0]); } for( i = 0 ; i < n ; i++) dp[i][0] = dp[i][1] = INF; dp[0][0] = 0 , dp[0][1] = c[0]; for( i = 1 ; i < n ; i++){ if(str[i][0] >= str[i - 1][0])//前一个大于后一个 dp[i][0] = dp[i - 1][0]; if(str[i][1] >= str[i - 1][0])//前一个转移大于后一个 dp[i][1] = dp[i - 1][0] + c[i]; if(str[i][0] >= str[i - 1][1])//前一个不转移大于后一个 dp[i][0] = min(dp[i][0] , dp[i - 1][1]); if(str[i][1] >= str[i - 1][1])//前一个转移大于后一个转移 dp[i][1] = min(dp[i][1] ,dp[i - 1][1] + c[i]); if(dp[i][1] == INF && dp[i][0] == INF)//如果转移不了 break; } if(i == n){ printf("%I64d\n",min(dp[i - 1][0] ,dp[i - 1][1])); } else printf("-1\n"); } return 0;}
0 0
- Codeforces 706c dp
- Codeforces 706C
- codeforces 706c
- Codeforces-706C Hard problem
- codeforces 706C-(简单DP)
- codeforces 706C 简单dp
- CodeForces 706C Hard problem
- 【Codeforces 706C . Hard problem】
- codeforces 706C Hard problem
- Codeforces 706C Hard problem
- Codeforces 706C Hard problem(dp+字符串)
- codeforces 706 C. Hard problem #367 div2
- 【动态规划】Codeforces 706C Hard problem
- Codeforces 706C Hard problem (DP)
- Codeforces 706C Hard problem (DP)
- CodeForces 706C Hard problem【dp】
- CodeForces #367(706C)|动态规划
- CodeForces 706 C. Hard problem(dp)
- Linux文件系统相关
- XCode7报 App Transport Security has blocked a cleartext HTTP (http://) resource load since it is inse
- Java学习---文件操作的一些常见问题!
- mac sublime3快捷键
- 二十、修改头像(1)----选择相册
- codeforces 706c
- java 继承中成员变量和方法的问题
- JAVA SimpleDateFormat 中英文时间格式化转换
- 移动端兼容性问题
- 华为机试题
- Catch That Cow
- Android自定义View的官方套路
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- 标准输出流