codeforce 367dev2_c dp
codeforce 367dev2_c dp
标签: dp
题意: 你可以通过反转任意字符串,使得所给的所有字符串排列顺序为字典序,每次反转都有一定的代价,问你最小的代价
题解:水水的dp。。。仔细想想就有了,一个位置要么反转要么就不反转。。。保证在满足条件时候转移
扔个代码:
#include<cstdio>
#include<cstring>
#include<string>
#include<iostream>
#include<algorithm>
#define ll long long
const int N = 100010;
const ll INF = 4557430888798830399LL;
ll dp[N][2];
ll c[N];
using namespace std;
int main()
{
string s[N];
int n;
while(~scanf("%d",&n))
{
for(int i = 0; i < n; i++) {
scanf("%I64d",&c[i]);
dp[i][0] = dp[i][1] = INF;
}
for(int i = 0; i < n; i++) cin>>s[i];
dp[0][0] = 0;
dp[0][1] = c[0];
for(int i = 1; i < n; i++){
string tm1 = s[i-1];
string tm2 = s[i];
reverse(tm1.begin(),tm1.end());
reverse(tm2.begin(),tm2.end());
if(dp[i-1][0]!=INF){
if(s[i-1]<=s[i]) dp[i][0] = min(dp[i][0],dp[i-1][0]);
if(s[i-1]<=tm2) dp[i][1] = min(dp[i][1],dp[i-1][0]+c[i]);
}
if(dp[i-1][1]!=INF){
if(tm1<=s[i]) dp[i][0] = min(dp[i][0],dp[i-1][1]);
if(tm1<=tm2) dp[i][1] = min(dp[i][1],dp[i-1][1]+c[i]);
}
}
ll ans = min(dp[n-1][0],dp[n-1][1]);
if(ans == INF) puts("-1");
else printf("%I64d\n",ans);
}
return 0;
}
codeforce 367dev2_c dp的更多相关文章
- Codeforce 721C DP+DAG拓扑序
题意 在一个DAG上,从顶点1走到顶点n,路径上需要消费时间,求在限定时间内从1到n经过城市最多的一条路径 我的做法和题解差不多,不过最近可能看primer看多了,写得比较复杂和结构化 自己做了一些小 ...
- codeforce#483div2D-XOR-pyramid+DP
题意:求给定区间中最大的连续异或和: 思路:DP的思想,先dp求出每个区间的异或和,再dp更新成当前这个dp[i][j]和dp[i-1][j].dp[i-1][j+1]中的最大值: 这样可以保证是同一 ...
- codeforce 597C-Subsequences(dp+树状数组)
题目和南阳那道题一样链接http://www.cnblogs.com/zzuli2sjy/p/4943774.html 代码: 1 #include<stdio.h> 2 #include ...
- codeforce——思维dp
Codeforces 822C Hacker, pack your bags!(思维) 题目大意:给你n个旅券,上面有开始时间l,结束时间r,和花费cost,要求选择两张时间不相交的旅券时间长度相 ...
- Slope Trick:解决一类凸代价函数DP优化
[前言] 在补Codeforce的DP时遇到一个比较新颖的题,然后在知乎上刚好 hycc 桑也写了这道题的相关题解,这里是作为学习并引用博客的部分内容 这道题追根溯源发现2016年这个算法已经在API ...
- 三维dp&codeforce 369_2_C
三维dp&codeforce 369_2_C 标签: dp codeforce 369_2_C 题意: 一排树,初始的时候有的有颜色,有的没有颜色,现在给没有颜色的树染色,给出n课树,用m种燃 ...
- codeforce 149D Coloring Brackets 区间DP
题目链接:http://codeforces.com/problemset/problem/149/D 继续区间DP啊.... 思路: 定义dp[l][r][c1][c2]表示对于区间(l,r)来说, ...
- codeforce 337D Book of Evil ----树形DP&bfs&树的直径
比较经典的老题 题目意思:给你一颗节点数为n的树,然后其中m个特殊点,再给你一个值d,问你在树中有多少个点到这m个点的距离都不大于d. 这题的写法有点像树的直径求法,先随便选择一个点(姑且设为点1)来 ...
- CodeForce VKcup C 树形dp
题意: 给出一棵树,一个人可以在树上跳,每次最多跳k(1≤k≤5)个点定义f(s,t)为从顶点ss跳到顶点tt最少需要跳多少次求∑(s<t)f(s,t) 链接: 点我 dp[i][j]表示以i点 ...
随机推荐
- ArcGIS API for JavaScript 4.2学习笔记[8] 2D与3D视图同步
同一份数据不同视图查看可能用的比较少,因为3D视图放大很多后就和2D地图差不多了,畸变很小,用于超大范围的地图显示时有用,很多时候都是在平面地图上进行分析.查询.操作.教学需要可能会对这个有要求? 本 ...
- bzoj 4237: 稻草人
Description JOI村有一片荒地,上面竖着N个稻草人,村民们每年多次在稻草人们的周围举行祭典. 有一次,JOI村的村长听到了稻草人们的启示,计划在荒地中开垦一片田地.和启示中的一样,田地需要 ...
- 原创js自动补全---auotocomplete
if ($("input.autocomplete_input").length > 0) { $("input.autocomplete_input") ...
- 解决linux重启后无法开启nginx问题“var/run/nginx/nginx.pid" no such file or directory问题
起因:每次重启虚拟机后,var/run/nginx/目录都会被删除,所以无法在这个目录创建nginx.pid文件, 可以自己创建var/run/nginx/目录,然后可以运行,但治标不治本,下次虚拟机 ...
- readAsDataURL(file) & readAsText(file, encoding)
readAsDataURL(file)会把文件内容转换为data类型的URL: data:text/plain;base64,b3JkZXItaWQJb3JkZXItaXRlbS1p... 这种d ...
- QA问答系统,QA匹配论文学习笔记
论文题目: WIKIQA: A Challenge Dataset for Open-Domain Question Answering 论文代码运行: 首先按照readme中的提示安装需要的部分 遇 ...
- C# 给DateTime赋值正确方式
DateTime xxx = new DateTime(2007,1,1,21,21,21); string time = new DateTime(2007, 1, 1, 21, 21, 21).T ...
- flask连接sqlalchemy数据库,实现简单的登录跳转功能
环境:python2.7 python库:flask,flask_wtf,wtforms,sqlalchemy 原理:运行app-连接数据库-打开登录页面-输入登录信息(错误->提示错误信息:正 ...
- Vue 子组件无法使用 $emit 向父组件传参
问题描述:
- 修改wamp中mysql的默认空密码
WAMP安装好后,mysql密码是为空的,那么要如何修改呢? 一.打开mysql控制台. 提示输入密码,因为现在是空,所以直接按回车. 二.输入"use mysql",意思是使用m ...