Codeforces Round #367 (Div. 2) C. Hard problem
来源:互联网 发布:eclipse java ee 64位 编辑:程序博客网 时间:2024/06/06 07:14
原题链接
#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>#include <vector>#include <map>#include <cmath>#include <queue> #define MOD 998244353#define maxn 100005#define INF 1e18using namespace std;typedef long long ll;ll dp[maxn][2];int c[maxn];char pre[2][maxn], now[2][maxn];void Reverse(char *p1, char *p2){ int len = strlen(p1); for(int i = 0; i < len; i++){ p2[len-i-1] = p1[i]; } p2[len] = 0;}int main(){//freopen("in.txt", "r", stdin);int n;scanf("%d", &n);for(int i = 0; i < n; i++) scanf("%d", c+i); scanf("%s", pre[0]); Reverse(pre[0], pre[1]); dp[0][0] = 0, dp[0][1] = c[0]; for(int i = 1; i < n; i++){ scanf("%s", now[0]); Reverse(now[0], now[1]); dp[i][0] = dp[i][1] = INF; if(strcmp(now[0], pre[0]) >= 0 && dp[i-1][0] < INF) dp[i][0] = dp[i-1][0]; if(strcmp(now[0], pre[1]) >= 0 && dp[i-1][1] < INF) dp[i][0] = min(dp[i][0], dp[i-1][1]); if(strcmp(now[1], pre[0]) >= 0 && dp[i-1][0] < INF) dp[i][1] = dp[i-1][0] + c[i]; if(strcmp(now[1], pre[1]) >= 0 && dp[i-1][1] < INF) dp[i][1] = min(dp[i][1], dp[i-1][1] + c[i]); strcpy(pre[0], now[0]); strcpy(pre[1], now[1]); } ll ans = min(dp[n-1][0], dp[n-1][1]); if(ans < INF) printf("%I64d\n",ans); else puts("-1"); return 0;}
0 0
- Codeforces Round #367 (Div. 2)-C - Hard problem-DP
- 【Codeforces Round 367 (Div 2) C】【简单DP】Hard problem
- Codeforces Round #367 (Div. 2) C. Hard problem (DP)
- Codeforces Round #367 (Div. 2) C. Hard problem (dp)
- Codeforces Round #367 (Div. 2) C. Hard problem
- Codeforces Round #367 (Div. 2) C. Hard problem
- Codeforces Round #367 (Div. 2) C Hard problem(DP)
- Codeforces Round #367 (Div. 2)C. Hard problem
- Codeforces Round #367 (Div. 2) C. Hard problem (dp)
- Codeforces Round #367 (Div. 2) C. Hard problem(dp)
- Codeforces Round #367 (Div. 2) [C] Hard Problem
- Codeforces Round #367 (Div. 2) C. Hard problem
- Codeforces Round #367 (Div. 2) C. Hard problem (DP)
- Codeforces Round #367 (Div. 2) C Hard problem(dp)
- Codeforces Round #361 (Div. 2) C.NP-Hard Problem
- Codeforces Round #360 (Div. 2) C. NP-Hard Problem
- Codeforces Round #360 (Div. 2) C. NP-Hard Problem
- Codeforces Round #367 (Div. 2)Hard problem DP
- boost中的bind的四种使用环境
- LeetCode 213. House Robber II
- 安卓手机连接蓝牙打印机实现打印功能
- JAVA中int转String类型有三种方法
- dig archive.org 国际事件解析:用DNS欺骗获得一个 .int 域名的控制权
- Codeforces Round #367 (Div. 2) C. Hard problem
- 8.1 幽灵(no.1~no.10)
- 设计模式之责任链模式--- Pattern chain-of-responsibility
- poj 3186 Treats for the Cows (区间DP)
- HttpClient4.3.6版本以上的http和https请求写法
- Java 如何将String转化为Int
- Anaconda中spyder打不开,闪一下结束
- 程序员编程的 7 + 1 条小贴士
- Oracle round函数是什么意思?怎么运用?