原题链接:Problem - 1418C - Codeforces

题目大意: 有一个序列n个数,非0即1,有两个人,一个是你的朋友,一个是你。从左到右,从你的朋友先开始,每个人一次必须选一个或两个数。ta选完你选然后又是ta选...问你朋友最后得到数的最小值。

1.其实就是让你的朋友尽量得到更少的1,得到更多的0;

2.用0表示你朋友,1表示你自己。状态转移:用dp[i][0]表示打的第i个怪,且是你朋友打完的。dp[i][1]表示打的第i个怪,且是你打完的。

2.状态转移方程:

//如果朋友拿这个数,就取a[i - 1]是我最后拿的加上a[i]和a[i - 2]是我最后拿的加上..

dp[i][0] = min(dp[i - 1][1] + a[i], dp[i - 2][1] + a[i - 1] + a[i]); //朋友取的第一个数两个数中的第二个数

dp[i][1] = min(dp[i - 1][0], dp[i - 2][0]);

AC代码: 

#include<bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
#define ios ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);
typedef pair<int, int> PII;
const double pi = acos(-1.0);
#define rep(i, n) for (int i = 1; i <= (n); ++i)
#define rrep(i, n) for (int i = n; i >= (1); --i)
typedef long long ll;
#define sqar(x) ((x)*(x))const int N = 2e5 + 10;
int dp[N][2]; //第i关的时候分别是朋友取a[i]这个值还是我取这个值时朋友的最小值 0:朋友 1 :我
int a[N];int main(){int n,t;cin >> t;while(t--){cin >> n;rep(i, n) cin >> a[i];dp[1][0] = a[1]; dp[1][1] = INF; //初始化dp[2][0] = a[1] + a[2]; dp[2][1] = a[1]; //dp[i][0]、dp[i][1]都是朋友的最小值,所以dp[2][1]是a[1]而不是a[2]                                                                                                      for(int i =3; i <= n; i++){dp[i][0] = min(dp[i - 1][1] + a[i], dp[i - 2][1] + a[i - 1] + a[i]); //上一次我选了一个还是两个dp[i][1] = min(dp[i - 1][0], dp[i - 2][0]);}cout << min(dp[n][0], dp[n][1]) << endl;}return 0;
}

C. Mortal Kombat Tower(cf)dp相关推荐

  1. B. Catching Cheaters(cf)dp

    原题链接:Problem - 1446B - Codeforces 题目大意:给你两个字符串A,B,让你分别从A,B中截取子串(连续)C,D,然后这两个串的最长公共子序列长度是LCS(C,D),让你找 ...

  2. C. Sweets Eating(cf)dp

    原题链接:Problem - 1253C - Codeforces 题目大意: 糖果每天最多吃m个,一共n个糖果.糖果第d天吃的花费是a[i] * d 问你吃k块糖果的最小花费是多少. 思路:先把每颗 ...

  3. B. Orac and Models(cf)dp

    原题链接:Problem - 1350B - Codeforces 题意: 求一个下标单调递增且互为倍数,即满足j > i且j为i的倍数,并且s[i] < s[j]的最长子序列. 其实和最 ...

  4. 子矩阵(暴搜(全排列)+DP)

    子矩阵(暴搜(全排列)+DP) 一.题目 子矩阵 时间限制: 1 Sec  内存限制: 128 MB 提交: 1  解决: 1 [提交][状态][讨论版] 题目描述 给出如下定义: 1. 子矩阵:从一 ...

  5. DisplayPort1.4协议学习(一)DP协议概览

    DisplayPort1.4协议学习(一)DP协议概览 Note:本文为DP1.4协议学习系列的第一篇,本篇首先从DP整体结构上简要说明DP协议的传输方式 有关传输速率对比的问题,请STFW(Sear ...

  6. ansible tower(awx) Centos7搭建与使用总结(非docker部署)

    ####一.项目背景 #####由于最近入职新公司,公司中实现运维自动化的架构中主要用到ansible,但是ansible脚本主要部署于服务器指令行中不太直观.经搜查资料,得知ansible towe ...

  7. SIMATIC S7-300 Profibus通讯——(3)DP/DP Coupler使用

    SIMATIC S7-300 Profibus通讯 --(3)DP/DP Coupler使用-- 1 DP/DP Coupler模块概述 DP/DP Coupler用于连接两个Profibus-DP主 ...

  8. (转)dp动态规划分类详解

    dp动态规划分类详解 转自:http://blog.csdn.NET/cc_again/article/details/25866971 动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间 ...

  9. B. Frog Traveler(cf)bfs

    原题链接:Problem - 1601B - Codeforces 题目大意:一个青蛙它从井底跳出去.从x点可以网上蹦[0, ax]的距离到y点,到了y点之后又会掉下来by步.问你它最少走多少步出去. ...

  10. B. Integers Have Friends(cf)二分 + st表

    原题链接:Problem - 1548B - Codeforces 解决RMQ(区间最值)问题的算法. 总结的来说求rmq问题有多种方法:线段树,ST表等 线段树预处理O(nlogn),查询O(log ...

最新文章

  1. 网上学python靠谱吗-0基础自学Python靠谱吗?如何快速学会?
  2. memchace监控统计
  3. 怎么看空调定时成功_风管机和中央空调傻傻分不清?看了你就明白怎么选了
  4. Extjs4:改变Grid单元格背景色(转载)
  5. pb中将已经建好的Grid类型转为Tabular类型
  6. 通过setTimeout来取消因大量计算造成的网页卡顿
  7. C++控制向文件中写入浮点数的格式
  8. SpringMVC 返回值分类
  9. Windows编程中引入winsock2.h后导致的错误解决
  10. CSU 1803 2016(数论)
  11. string的compare operator
  12. 高精度PSEnet文本检测在windows/linux运行教程
  13. kotlin_Kotlin print(),println(),readLine(),Scanner,REPL
  14. html email template
  15. android html转ubb,将 html 转成 ubb代码的小脚本
  16. 西瓜视频4K修复技术还原经典,为内容创新打开新思路
  17. 现代通信网(第1章 绪论)
  18. java -g_Java G1深入理解(转)
  19. Android系统SystemUI启动过程
  20. Rust中的channel

热门文章

  1. U盘装Win11教程 系统之家装机教程
  2. 刚培训的java程序员怎么找工作,快来看鸭~
  3. 找到投资人的几种途径和方法
  4. Facebook,Twitter,Linkedin分享
  5. empty怎么发音_英语单词empty怎么读,empty的音标是什么,empty是什么意思 - 音标网...
  6. Chrome下载大文件速度慢经常失败
  7. 自动关闭QQ迷你首页的小程序(加上自己的一些理解)
  8. 迷你云服务器怎么开,迷你世界迷你云服怎么开_迷你世界迷你云服打开方法_玩游戏网...
  9. 软件测试周刊(第54期):管他乐观还是悲观,都滚蛋,干就完了。
  10. 最优化理论与方法1--理论基础