#### Codefores 706C ## ##

  • 题目大意:给你n个字符串,要求满足字典序排序 等价于 s[i]>=s[i-1]。每个操作需要花费能量,操作只能反转。如果不能满足题意输出-1。
  • 题目分析:动态规划。dp数组有两种状态,反转与不反转,可用0/1表示。有四种情况, dp[now][0]与dp[now-1][0/1],dp[now][0/1]与dp[now-1][0]
#include<bits/stdc++.h>
#define me(a,b) memset(a,b,sizeof(a))
#define MAX 100005
#define INF 1e16
#define LL long long
using namespace std;LL dp[MAX][2];
string s[MAX],ds[MAX];
LL cost[MAX];
int main() {int n;while(cin>>n){for(int i=1;i<=n;i++)cin>>cost[i];for(int i=1;i<=n;i++){cin>>s[i];ds[i]=s[i];reverse(ds[i].begin(),ds[i].end());}for(int i=1;i<=n;i++)dp[i][0]=dp[i][1]=INF;dp[1][0]=0;dp[1][1]=cost[1];for(int i=2;i<=n;i++){if(s[i]>=s[i-1])dp[i][0]=dp[i-1][0];if(ds[i]>=s[i-1])dp[i][1]=dp[i-1][0]+cost[i];if(s[i]>=ds[i-1])dp[i][0]=min(dp[i-1][1],dp[i][0]);if(ds[i]>=ds[i-1])dp[i][1]=min(dp[i-1][1]+cost[i],dp[i][1]);}printf("%I64d\n",min(dp[n][1],dp[n][0])==INF?-1:min(dp[n][1],dp[n][0]));}return 0;
}

注意数据范围,用了一次0x3f 果断太小 ,大家还是别偷懒 写个for吧。

Codeforces 706C相关推荐

  1. 【CodeForces - 706C】Hard problem(dp,字典序)

    题干: Vasiliy is fond of solving different tasks. Today he found one he wasn't able to solve himself, ...

  2. G - Hard problem CodeForces - 706C DP

    #include<bits/stdc++.h> using namespace std;typedef long long ll; string a[100000 +10], b[1000 ...

  3. codeforces706C

    Hard problem CodeForces - 706C 现在有 n 个由小写字母组成的字符串.他想要让这些字符串按字典序排列,但是他不能交换任意两个字符串.他唯一能做的事是翻转字符串. 翻转第  ...

  4. codeforces的dp专题

    1.(467C)http://codeforces.com/problemset/problem/467/C 题意:有一个长为n的序列,选取k个长度为m的子序列(子序列中不能有位置重复),求所取的k个 ...

  5. CodeForces 375D Tree and Queries

    传送门:https://codeforces.com/problemset/problem/375/D 题意: 给你一颗有根树,树上每个节点都有其对应的颜色,有m次询问,每次问你以点v为父节点的子树内 ...

  6. 「日常训练」Bad Luck Island(Codeforces Round 301 Div.2 D)

    题意与分析(CodeForces 540D) 是一道概率dp题. 不过我没把它当dp做... 我就是凭着概率的直觉写的,还好这题不算难. 这题的重点在于考虑概率:他们喜相逢的概率是多少?考虑超几何分布 ...

  7. 【codeforces 812C】Sagheer and Nubian Market

    [题目链接]:http://codeforces.com/contest/812/problem/C [题意] 给你n个物品; 你可以选购k个物品;则 每个物品有一个基础价值; 然后还有一个附加价值; ...

  8. CodeForces 获得数据

    针对程序的输出可以看见 CodeForces :当输入.输出超过一定字符,会隐藏内容 所以:分若干个程序进行输入数据的获取 1. 1 for (i=1;i<=q;i++) 2 { 3 scanf ...

  9. codeforces水题100道 第二十七题 Codeforces Round #172 (Div. 2) A. Word Capitalization (strings)...

    题目链接:http://www.codeforces.com/problemset/problem/281/A 题意:将一个英文字母的首字母变成大写,然后输出. C++代码: #include < ...

最新文章

  1. matlab里面如何保留小数特定位数(转载)
  2. android项目中导入opencv库,将第二个JNI库包含到我的Android项目(OpenCV)后...
  3. Hibernate持久化类与主键生成策略
  4. (转)基于libRTMP的流媒体直播之 AAC、H264 推送
  5. 数据结构-图-Java实现:有向图 图存储(邻接矩阵),最小生成树,广度深度遍历,图的连通性,最短路径1...
  6. simulink怎么生成vxworks的执行程序_让天下没有难改的Simulink模型
  7. Unix/Linux笔记全集
  8. Hadoop、Spark等5种大数据框架对比,你的项目该用哪种?
  9. 简谈百度坐标反转至WGS84的三种思路
  10. imnoise, imnoise2 imnoise3
  11. visio画图-去掉visio中多余的连接点
  12. 人资(人事)送命连环问,51个问题。
  13. AUTOCAD——表格样式
  14. 06 ElasticSearch模板搜索
  15. html插入图片用px为单位,怎样把PPT尺寸的单位设置为px像素
  16. 手写Hashmap第二版
  17. 怎么在计算机中搜索可移动硬盘,电脑如何识别移动硬盘
  18. 罗杨美慧 20190919-3 效能分析
  19. BootStrap表格详解
  20. elasticsearch自定义打分操作

热门文章

  1. JS内置DATE对象部分函数对日期的支持只到1901年
  2. 3d游戏建模制作流程详解 丨漫威宇宙【万磁王】
  3. 手绘与码绘的比较——实战之梵高《星空》
  4. html5 梵高 星,复华文旅:穿越吧!梵高
  5. 11个热门物联网开发平台的比较
  6. 酷安7.3、新增黑名单和举报
  7. php数字两位小数_PHP 数字价格格式化,保留两位小数
  8. “2021年度ICT产业龙虎榜”揭晓,九州云喜提“双黄蛋”
  9. 最简单的创建多级目录文件夹
  10. 51单片机如何跳出wile循环_单片机C语言之串口通信协议(代码分享)