codeforces82 D. Two out of Three(记忆化搜索)
D. Two out of Three
设fi,jf_{i,j}fi,j表示为当前队伍开头的两个人是i,ji,ji,j时最小代价,分析可知本轮可以选择的方案有
- i,ji,ji,j两人,fi,j=ai+aj+fj+1,j+2f_{i,j}=a_i+a_j+f_{j+1,j+2}fi,j=ai+aj+fj+1,j+2
- i,j+1i,j+1i,j+1两人,fi,j=ai+aj+1+fj,j+2f_{i,j}=a_i+a_{j+1}+f_{j,j+2}fi,j=ai+aj+1+fj,j+2
- j,j+1j,j+1j,j+1两人,fi,j=aj+aj+1+fi,j+2f_{i,j}=a_{j}+a_{j+1}+f_{i,j+2}fi,j=aj+aj+1+fi,j+2
#include<bits/stdc++.h>using namespace std;constexpr int N=1010;
int n;
int a[N],f[N][N];
int dfs(int x,int y)
{if(f[x][y]) return f[x][y];if(y==n+1) return f[x][y]=a[x];if(y==n) return f[x][y]=max(a[x],a[y]);f[x][y]=max(a[x],a[y])+dfs(y+1,y+2);f[x][y]=min(f[x][y],max(a[x],a[y+1])+dfs(y,y+2));f[x][y]=min(f[x][y],max(a[y],a[y+1])+dfs(x,y+2));return f[x][y];
}
void print(int x,int y)
{if(y==n+1) return cout<<x<<'\n',void();if(y==n) return cout<<x<<' '<<y<<'\n',void();if(f[x][y]==max(a[x],a[y])+f[y+1][y+2])cout<<x<<' '<<y<<'\n',print(y+1,y+2);else if(f[x][y]==max(a[x],a[y+1])+f[y][y+2])cout<<x<<' '<<y+1<<'\n',print(y,y+2);else if(f[x][y]==max(a[y],a[y+1])+f[x][y+2])cout<<y<<' '<<y+1<<'\n',print(x,y+2);}
int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);cin>>n;for(int i=1;i<=n;i++) cin>>a[i];cout<<dfs(1,2)<<'\n';print(1,2);return 0;
}
codeforces82 D. Two out of Three(记忆化搜索)相关推荐
- 洛谷P1057 传球游戏(记忆化搜索)
点我进入题目 题目大意:n个小孩围一圈传球,每个人可以给左边的人或右边的人传球,1号小孩开始,一共传m次,请问有多少种可能的路径使球回到1号小孩. 输入输出:输入n,m,输出路径的数量. 数据范围:4 ...
- 图论 ---- F. Graph Traveler 记忆化搜索 + 思维预处理(数论同余恒等式)
题目链接 题目大意: q∈[1,1e5],n∈[1,1000],mi∈[1,10]q\in[1,1e5],n\in[1,1000],m_i\in[1,10]q∈[1,1e5],n∈[1,1000],m ...
- 思维dp ---- Codeforces Round #711 (Div. 2) - C. Planar Reflections[dp/记忆化搜索]
题目链接 题目大意: 就是给你n个平面和一个寿命为k的衰变粒子.开始粒子从左向右飞行,粒子每经过一个平面就会产生一个副本粒子,这个副本粒子比原粒子的寿命少1,即为k-1,并且飞行方向是原粒子的反方向. ...
- Discovering Gold LightOJ - 1030[概率dp或者记忆化搜索]
题目大意:有一个[1,n][1,n][1,n]的数轴,数轴上的每个对应位置上都有金矿,你初始位置是1,然后你每次都会投色子决定你下一步跳到哪里,如果你跳出了nnn,那么你就要重新投.问你跳到nnn的时 ...
- BZOJ 1589 Trick or Treat on the Farm (tarjan缩点,记忆化搜索)[Usaco 2008 Dec Gold]【BZOJ计划】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://hydro.ac/d/bzoj/p/1589 Problem 每年万圣 ...
- UVA437 巴比伦塔 The Tower of Babylon(矩形嵌套进阶版、DAG上DP、记忆化搜索)
整理的算法模板合集: ACM模板 本题和基础的矩形覆盖差不多,只不过变成了三维的长方形. 因为每次转移的时候只有顶面的x和y会影响决策的进行,所以我们只需要用一个二元组(a,b)(a, b)(a,b) ...
- [P1434 [SHOI2002]滑雪](DFS,记忆化搜索)
P1434 [SHOI2002]滑雪 题目描述 Michael喜欢滑雪.这并不奇怪,因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你 ...
- hdu 4722(记忆化搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4722 思路:简单的记忆化搜索,留意一下A==0时的情况就可以了. 1 #include<iost ...
- poj 1085 Triangle War 博弈论+记忆化搜索
思路:总共有18条边,9个三角形. 极大极小化搜索+剪枝比较慢,所以用记忆化搜索!! 用state存放当前的加边后的状态,并判断是否构成三角形,找出最优解. 代码如下: 1 #include<i ...
最新文章
- xp系统的计算机管理中用户在哪里,XP系统设备管理器中一片空白怎么修复?
- Python学习之路1 - 基础入门
- .Net线程问题解答
- bim建筑绘图计算机要求,BIM考试报名条件:想要成为一级BIM建模师需要达到哪些要求?...
- (转)Kafka 消费者 Java 实现
- 标称型数据和数值型数据_统计信息中的数据类型-标称,有序,间隔和比率数据类型,并举例说明
- Win11掉帧严重是怎么回事?Win11玩游戏掉帧的解决方法
- keras用cpu加速_GPU训练加速原理(附KerasGPU训练技巧)
- python--综合小案例--文件读取以及梳理
- 操作系统-UNIX三级索引技术
- python 输入一个整数,将该整数逆向输出
- 揭秘 Win8 电脑 OEM 分区创建
- AR Engine光照估计能力,让虚拟物体在现实世界更具真实感
- 使用Openssl签发SSL证书
- Python爬虫《自动化学报》数据爬取与数据分析
- layui tab用法大全,一键复制粘贴即可使用
- zbb20170811 linux 给用户授予文件夹权限
- 关于cloudreve在线播放视频没有声音的问题
- 如何彻底关闭windows10自动更新,禁用Windows Update
- 如何让系统加载自己写的驱动程序?
热门文章
- linux自动跑批,在linux中添加硬盘并在系统启动时自动挂载
- linux级别3怎么配置DNS,Linux下DNS服务器配置详解
- jodconverter水印java,OpenOffice实现Office转Pdf(支持自定义添加水印、页眉、页脚)
- mysql+误操作怎么恢复_MySQL 误操作后如何快速恢复数据
- html5 获取文件属性,H5新属性--file文件读取
- mysql函数保留小数_MySql自定义函数-关于保留小数位的特殊需求
- php去掉查询返回的字段序列,php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回...
- 杂牌手柄模拟xboxone手柄_手机就能玩Switch游戏,蛋蛋模拟器+盖世小鸡X2手柄体验...
- excel同一单元格怎么换行_excel表格内怎么换行 方法有两种 一看就会 新手教程...
- java并发之synchronized实现原理及其优化