9.6 动规训练  题解

----Frosty_Jackal

定义Dpmax[i][j] 表示l~r之间最大的得分,由题意得拆环为链,将1~n的枚举范围扩大到1~2*n ,外层枚举区间长,内层枚举l,在l~r之间设置断点 dpmax[l][r]=max(~,dpmax[l][k]+dpmax[k+1][r]),在内层的最后加上l到r的区间之和,代表此次合成取得的得分;

最小值同理,答案为i=1~n 之间 ,dp[i][i+n-1];

先将所有S相加,若为奇数直接输出0 。 。 。将sum=sum/2,dp[0]=1,将容量设为sum应用0-1背包,最终答案除以2即可。

dp[0]=1;for(int i=1;i<=n;++i)for(int j=sum;j>=w[i];j--)dp[j]+=dp[j-w[i]];

先按左、右端点升序排序,dp[i]=max(dp[j]+a[i].r-a[i].l,dp[i])  注意j可以为0,此为抛弃前面的所有场次而只选当前场次,ans等于dp1~n的最大值

第一维枚举x1+y1,第二维枚举x1,第三维枚举 x2,看做两个纸条都由1,1传递到m,n。

如X1==x2 且x1+y1不为 n+m,

dp[i][x1][x2]=max(~,dp[i-1][x1][x2],dp[i-1][x1-1]dp[x2-1],dp[i-1][x1][x2-1],dp[i-1][x1-1][x2];

注意x1>=1,>=i-n,<=(i-1),<=m,x2>=1,>=i-n,<=i-1,<=m;

答案是dp[n+m][m][m];

由于T<=1e6

对于每一秒都去枚举,走路和跑步分别为s1,s2。

int m,s,t;cin>>m>>s>>t;int s1=0,s2=0;for(int i=1;i<=t;i++){s1+=17;if(m>=10) {s2+=60;m-=10;}else m+=4;if(s2>s1) s1=s2;if(s1>s){cout<<"Yes"<<endl<<i<<endl;return 0;}}cout<<"No"<<endl<<s1<<endl;return 0;

区间DP,先预处理2的1~m次幂p[],每行读入整行num,将dp数组赋予极小值,dp[L][R]由num[l]*p[k]+dp(l+1,r),dp(l,r-1)+num[r]*p[k]转移;其中k=m-(R-L)  { 模拟易得出的规律 }

由于由未知状态转移至当前,故采用记忆化搜索的方式,当dp[l][r]时return ;

#define bll __int128bll dp(int L,int R){if(f[L][R]!=-1) return f[L][R];if(R-L>=1) f[L][R]=max(num[L]*p[k]+dp(L+1,R),dp(L,R-1)+num[R]*p[k]);else f[L][R]=num[L]*p[k];return f[L][R];}

注意答案较大,但__int128足够。__int128需用快读快写,而且需要特判ans=0时putchar(‘0’)

if(!ans) printf("0");(此快写无法读出0)


void print(bll x){if(!x) return ;if(x) print(x/10);putchar(x%10+'0');}inline int read(){int X=0,w=1;char ch=getchar();while(ch<'0' || ch>'9' ) {if(ch=='-') w=-1;ch=getchar();}while(ch>='0' && ch<= '9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();return X*w;}

Dj算法,注意只能由编号小的转移而来!

Dp[i][j]为a 1~i 与b 1~j 最长公共子序列的长度,可以得出dp[i][j]=max{dp[i-1][j],dp[i][j],dp[i-1][j-1](当a[i]==b[j]成立)},目标dp[n][m].

动规日常训练题解 难度普及+相关推荐

  1. 关于数位动规(入门到进阶,难度中档)

    数位动规,就是对于数位进行动规(日常一句废话···) 刚好今天听数位dp,就总结一下最近写的题吧.郭神说要学懂数位dp,还是要搞懂它内部是怎么工作的.比如一个有大小的数,我们在这里剥夺它作为一个整数的 ...

  2. 正则表达式匹配(动规)

    文章目录 题目 思路 转移方程 特征 再探 i 和 j 代码 题目 请实现一个函数用来匹配包含 . 和 * 的正则表达式.模式中的字符 . 表示任意一个字符,而 * 表示它前面的字符可以出现任意次(含 ...

  3. codeforces日常训练 C. Cutting Out - 二分搜索答案

    codeforces日常训练 C. Cutting Out - 二分搜索答案 题干 You are given an array s consisting of n integers. You hav ...

  4. bzoj3875 【Ahoi2014】骑士游戏 spfa处理后效性动规

    骑士游戏 [故事背景] 长期的宅男生活中,JYY又挖掘出了一款RPG游戏.在这个游戏中JYY会 扮演一个英勇的骑士,用他手中的长剑去杀死入侵村庄的怪兽. [问题描述] 在这个游戏中,JYY一共有两种攻 ...

  5. 【POJ3612】【USACO 2007 Nov Gold】 1.Telephone Wire 动规

    题意: 给出若干棵树的高度,你可以进行一种操作:把某棵树增高h,花费为h*h. 操作完成后连线,两棵树间花费为高度差*定值c. 求两种花费加和最小值. 题解: 跟NOIP2014 D1T3很像. 暴力 ...

  6. 硬币找零——背包问题,以及循环、递归、动规共通性

    在这个题目的基础上,我了解了一下这几个"编程写法",并对循环.递归.dp有了新的想法.从原理上,这几个想法都是大事化小.小事化了.只不过方向不同罢了. 根据The Algorith ...

  7. CF2B The least round way(贪心+动规)

    题目 CF2B The least round way 做法 后面\(0\)的个数,\(2\)和\(5\)是\(10\)分解质因数 则把方格中的每个数分解成\(2\)和\(5\),对\(2\)和\(5 ...

  8. 树形动规_(技能树)

    技能树(SGOI) skill.pas/c/cpp [问题描述] 玩过 Diablo 的人对技能树一定是很熟悉的.一颗技能树的每个结点都是一项技能,要学会这项技能则需 要耗费一定的技能点数.只有在学会 ...

  9. 洛谷 P1073 最优贸易 (分层图状态转移+SPFA,求最长路径;另附某dalao的超短代码:暴力+动规)

    题目链接1 题目链接2 另附某dalao的超短代码:暴力+动规 P1073 最优贸易 题目描述 C国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市. 任意两个城市之间最多只有 ...

最新文章

  1. 基于癌症基因组学数据的miRNA 功能模块识别算法研究
  2. RedHat linux inittab详解
  3. 分享:Android程序员,必备精品网站大汇总
  4. 经典C语言程序100例之五六
  5. java dvr_java实现海康NVR/DVR设备工作状态获取
  6. 【算法题目】数组中的逆序对
  7. tbytes 转 十六进制 string
  8. 2021数学建模B题 空气质量二次模型
  9. 财务总监的秘密:不用代码和Excel,10分钟做出高大上财务分析
  10. 如何批量删除 Word 文档的只读密码?
  11. 我与学霸的距离计算机,你与学霸的距离,可能就差本笔记
  12. C语音:输入两个整数,要求输出其中值较大者。要求用函数来找到大数。
  13. 分享124个ASP源码,总有一款适合您
  14. 讯时O口MX8网关对接昆石软交换vos3000
  15. iOS 拓展,icon,尺寸 开发系列 吕文翰
  16. Win7 的安全快捷键使用技巧
  17. 0160 十分钟看懂时序数据库(I)-存储
  18. java爬虫爬取天猫指定店铺下全部商品详细信息(实时价格、尺码、库存等) 超详细(思路篇)!
  19. 我把废旧Android手机如何改造成Linux服务器
  20. Java 并发编程解析 , 如何正确理解Java领域中的内存模型

热门文章

  1. 【《深入理解计算机系统》读书笔记(3)】 第3章 程序的机器级表示
  2. 第一个Google Glass项目
  3. 憎恨之心最强套装攻略_憎恨之心S套装最好 | 手游网游页游攻略大全
  4. 一个好的产品经理如何把控项目进度和跟进进度
  5. 【考研英语语法】十三种时态
  6. SegmentFault 巨献 1024 程序员护卫队#1红岸的呼唤
  7. 【05】Oracle创建用户、修改密码
  8. React官方中文文档【安装】
  9. 五大最佳开源java性能监控工具
  10. win10 KMS 激活