
动态规划
LauZiyang
exploring
展开
-
省选专练SCOI2005扫雷
这是一个智商检测题状压DP。如果你玩过扫雷,并且内心有一棵平衡树(BB数),你就会发现答案只有0,1,2共计三种。于是法一:模拟。答案对不对只会取决于第一个是什么。模拟两边就好了。#include<bits/stdc++.h>using namespace std;int i,j,k,m,n,ans=2,a[10001],b[10001];void checkx(){ ...原创 2018-02-13 17:15:24 · 195 阅读 · 0 评论 -
R6饮料AK赛(NOIP模拟赛)/省选专练HDU 5713 K个联通块
我好菜啊100+60+30滚犊子吧,两天加起来才410搞个屁我一年前都可以考400不说了,题毕竟比较难T1还是水题但是比昨天难这是一个开绝对值不等式的题。根据对奇数和偶数的最优根的归纳一定有一个解是在原址上于是上界OnLogn水过#include<iostream>#include<cstdio>#include<algorithm>#include<...原创 2018-07-09 17:33:37 · 320 阅读 · 0 评论 -
R7好诗AK赛(NOIP模拟赛)/省选专练【2018雅礼集训】划分Divide
100+70+30我好菜啊T1模板题mannacher可过卡后缀数组/回文自动机/二分hash#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;const int N=...原创 2018-07-10 19:06:39 · 561 阅读 · 0 评论 -
省选专练[CQOI2007]涂色
不好理解的DP伪区间DPF(i,j)表示子串i-j实现的方式最小当i=j时明显为1当s【i】==s【j】时这里是理解的重难点:通过递归可知当你刷i的时候顺便刷到j就好了然后就是标准的区间DP完#include<bits/stdc++.h>using namespace std;int f[51][51]={};char ch[51]={};int n;int main(){...原创 2018-07-12 19:17:42 · 229 阅读 · 0 评论 -
省选专练APIO2009Oil采油区域
神仙题难点在于代码实现这狗日的题。。。首先暴力是这样的枚举三个坐标这是n^6做法,没什么卵用但是我们发现把一张图分割成3块那么可以做但是问题是这是情况多多的所以成了码农题#include<bits/stdc++.h>using namespace std;const int N=1801;int sum[N][N]={};int a[N][N]={};//左上 int b[N...原创 2018-07-13 20:48:41 · 468 阅读 · 0 评论 -
省选专练 [ZJOI2006]物流运输
这种是现在NOIP爱考的的东西啊!!!首先:明显想到最短路那么怎么搞?定义Cost(i,j)从第i天到第j天可行的最短路。F(i)为前i天最小代价,然后就随便搞了啊。#include<iostream>#include<algorithm>#include<cstring>#include<cmath>#includ...原创 2018-07-20 08:12:54 · 335 阅读 · 0 评论 -
省选专练之斜率优化[HNOI2008]玩具装箱toy
定义:S(i)为长度前缀和易得:由于L是常数L++令K为当前最优解则展开定义新函数带回原式转为斜率式完毕#include<iostream>#include<cstdio>#include<cmath>#include<algorithm>#include<cstring>...原创 2018-08-16 14:23:00 · 173 阅读 · 0 评论 -
省选专练之斜率优化[ZJOI2007]仓库建设
乍一看不好维护前缀和观察前缀关系:令 有:贡献为 暨拆开:故设: 对于朴素DP、转移有:设k为选中点有:消去相同项不妨设 有完毕#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#inc...原创 2018-08-16 22:00:33 · 121 阅读 · 0 评论 -
省选专练之HNOI2008遥远的行星
少见的模糊DP发现误差允许很大可以模糊着做,不暴力算#include<bits/stdc++.h>using namespace std;const int N=2e5+100;double m[N];double F[N];int sum[N];double a;int n;int main(){// freopen("test.in","r",s...原创 2018-09-11 21:21:59 · 175 阅读 · 0 评论 -
和Leo一起做爱线段树的好孩子 数据
Mr_H出了一道信息学竞赛题,就是给n个数排序。输入格式是这样的:试题有若干组数据。每组数据的第一个是一个整数n,表示总共有n个数待排序;接下来n个整数,分别表示这n个待排序的数。 例如:3 4 2 –1 4 1 2 3 4,就表示有两组数据。第一组有3个数 (4,2,-1),第二组有4个数(1,2,3,4)。可是现在 Mr_H做的输入数据出了一些问题。例如:2 1 9 3 2 按理说第一组数...原创 2018-09-11 21:29:26 · 5078 阅读 · 0 评论 -
[USACO12JAN]视频游戏的连击Video Game Combos
很早之前就做过啦补一下题解F(i,j)前i个的字符为j的匹配注意end要累加#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<queue>using nam...原创 2018-09-09 22:27:46 · 3533 阅读 · 0 评论 -
省选专练之避难向导
额树形DP+ST表倍增按照区间最长链的思路树形DPST表倍增(我写的有点丑)#include<bits/stdc++.h>using namespace std;typedef int INT;#define int long longinline void read(int &x){ x=0; int f=1; char ch=getcha...原创 2018-09-12 21:32:13 · 195 阅读 · 0 评论 -
字符串 [SDOI2014]数数
题目描述我们称一个正整数N是幸运数,当且仅当它的十进制表示中不包含数字串集合S中任意一个元素作为其子串。例如当S=(22,333,0233)时,233是幸运数,2333、20233、3223不是幸运数。 给定N和S,计算不大于N的幸运数个数。输入输出格式输入格式:输入的第一行包含整数N。 接下来一行一个整数M,表示S中元素的数量。 接下来M行,每行一个数字串,表示S中的一个元素。...原创 2018-09-10 16:55:46 · 5668 阅读 · 0 评论 -
省选专练之 CERC2017 Kitchen Knobs 炸鸡店
你正一家大型的快餐餐厅的巨型灶台上烹饪。这个灶台上有n个炉子排成一排,并按序标为1-n号。每个炉子都会被它的控制手柄所控制。这些手柄可不一般:每个手柄上面都有1-7的号码围成一圈。灶台的火力就是从它的控制手柄顶端开始顺时针读取数字而得到的。每一步你都可转动一个或多个相邻手柄——向任意方向转动任意几下。但是,同一步转动的手柄只能向同一方向转动同样的次数。找到最少的步数来吧所有的炉子都设定到可...原创 2018-09-19 22:57:07 · 344 阅读 · 0 评论 -
和Leo一起做爱数学的好孩子之[SHOI2014]概率充电器
著名的电子产品品牌SHOI 刚刚发布了引领世界潮流的下一代电子产品—— 概率充电器:“采用全新纳米级加工技术,实现元件与导线能否通电完全由真随机数决 定!SHOI 概率充电器,您生活不可或缺的必需品!能充上电吗?现在就试试看 吧!”SHOI 概率充电器由n-1 条导线连通了n 个充电元件。进行充电时,每条导 线是否可以导电以概率决定,每一个充电元件自身是否直接进行充电也由概率 决定。随后电...原创 2018-09-14 18:47:06 · 1672 阅读 · 0 评论 -
省选专练之[USACO08NOV]奶牛混合起来Mixed Up Cows
约翰家有N头奶牛,第i头奶牛的编号是Si,每头奶牛的编号都是唯一的。这些奶牛最近 在闹脾气,为表达不满的情绪,她们在挤奶的时候一定要排成混乱的队伍。在一只混乱的队 伍中,相邻奶牛的编号之差均超过K。比如当K = 1时,1, 3, 5, 2, 6, 4就是一支混乱的队伍, 而1, 3, 6, 5, 2, 4不是,因为6和5只差1。请数一数,有多少种队形是混乱的呢?Naive状压。直接记录最右端的...原创 2018-10-18 22:50:17 · 150 阅读 · 0 评论 -
省选专练之[USACO13NOV]没有找零No Change
约翰到商场购物,他的钱包里有K(1 <= K <= 16)个硬币,面值的范围是1…100,000,000。约翰想按顺序买 N个物品(1 <= N <= 100,000),第i个物品需要花费c(i)块钱,(1 <= c(i) <= 10,000)。在依次进行的购买N个物品的过程中,约翰可以随时停下来付款,每次付款只用一个硬币,支付购买的内容是从上一次支付后开始...原创 2018-10-18 22:52:10 · 165 阅读 · 0 评论 -
省选专练之 [HAOI2009]毛毛虫
题目描述对于一棵树,我们可以将某条链和与该链相连的边抽出来,看上去就象成一个毛毛虫,点数越多,毛毛虫就越大。例如下图左边的树(图 1 )抽出一部分就变成了右边的一个毛毛虫了(图 2 )。输入输出格式输入格式: 在文本文件 worm.in 中第一行两个整数 N , M ,分别表示树中结点个数和树的边数。接下来 M 行,每行两个整数 a, b 表示点 a 和点 b 有边连接...原创 2018-10-15 22:33:56 · 252 阅读 · 0 评论 -
转载:DP常见题目
这里的dp范做根据网上的动态归法分析和网上的有个100个dp方程做的,题解很多是原版,没怎么动,有些是别人的一些其他做法,还有一些自己的想法。如果看到题解很别人一样,那就是摘自别人的。且这里只是一半。由于本文有些摘自网上,如有原主看到不想在此贴出的,请说明,将会撤出。如此文方法错误,或者冒犯某些原博主的文章还请见谅,还请指出,非常感谢机器分配(HNOI’95)0-1背包变形tyvj1089smrt...转载 2018-07-09 12:34:02 · 657 阅读 · 0 评论 -
NOIP冲刺(大水题专练)NOIP2009最优贸易
以前帮初学的脑洞过这个题实际上还是多有趣的问题是这样子的:你需要买一次(所以这和APIO那个没什么关系)定义dS为到目前为止从起点到现在最小值dT为从这里到终点最小值#include<bits/stdc++.h>using namespace std;const int N=1e5+100;inline void read(int &x){ x=0; char ch=...原创 2018-07-08 17:11:34 · 175 阅读 · 0 评论 -
省选专练[JLOI2011]飞行路线
水题但是我弱啊去年10月份模拟赛我居然没做起分层图最短路dp[i][j]表示到i点用了j次膜法的最小值于是水过啊#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>using namespace std;con...原创 2018-06-02 14:22:27 · 164 阅读 · 0 评论 -
省选专练SCOI2014方伯伯的商场之旅
这算不算是数位DP? Who Knows。算法核心: 如果朴素算法最傻逼的那种: 效率:O(R-L1+1)*log(k,r)^2好的你只能跑20分那么仔细一看,诶?有人跑了30分暴力! 他们很明显少挂了一个log。怎么优化? DP优化无外乎这几种,这里就是前缀和。维护前缀:效率log(k,r); 然后:最重要的一步 ——> (^▽^)! 我们贪心。 先考虑所有数结论点都是1号点。 那么怎么l...原创 2018-02-27 17:29:18 · 232 阅读 · 0 评论 -
省选专练【SCOI2013】火柴棍数字
第一贪心。引理:对于可以取出的数字要让可达性最大。在队首填1.如果可达性为奇数?那么队首是7别的是1.坑点。对于每个数转换为别的数,其本质是01可达性分组背包。组:组数为n每个组有严苛的10个物件。我们需要维护一个常量数组int trans[10][10]={ 0, 4, 2, 2, 3, 2, 1, 3, 0, 1, 0, 0, 2, 0, 0, 1, 1, 0, 0, 0, 1, 4, ...原创 2018-02-28 16:02:26 · 887 阅读 · 3 评论 -
省选专练ZJOI2005午餐
这是个好题考察dp优化,dp,贪心,01背包变种。好首先对吃饭时间从大到小排序,因为一队人打饭时长总和一样。dp(i,j)表示前i个人,第一组用j的时间。放第一个背包:dp[i][j]=min( max(dp[i-1][j-a[i].w],j+a[i].v) )放第二个背包:dp[i][j]=min( max(dp[i-1][j],sum[i]-j+a[i].v) )最会遍历一遍。然后就是滚动数组...原创 2018-02-21 21:35:18 · 136 阅读 · 0 评论 -
省选专练NOIP2017宝藏
遥想当年。SCOI考一个状压就差不多了。且看今宵。NOIP都得考上状压dp。好了这个状压比较好想。首先供上我联赛的时候写的代码:->#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define ll long longusing namesp...原创 2018-03-10 16:52:51 · 478 阅读 · 0 评论 -
省选专练 [SCOI2009]游戏
题目的意思:求总和n以下所有LCM的和这是一个先线性筛。然后就是多重背包了。因为对于一串数的LCM是一个质数最高幂之积。#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<cstring>using namespace std;...原创 2018-02-25 17:53:21 · 214 阅读 · 0 评论 -
省选专练SHOI2017分手是祝愿
ε=(´ο`*)))唉,我什么时候才能找到女票啊。这个题实际对于考生很友好。考试可以利用暴力推出正解。对于5成数据:k==n那么很明显倒着关灯是唯一最优解。此时那些约数要选是一个集合。那么如何处理这个集合?定义f(i)表示这个集合内还有i个没选f(i)成立的期望是:f(i-1)=(i)/(n)+(n-i)/(n)*(f(i+1))转换一下:0=i*(f(i)-f(i-1))+(n-i)*(f(i)...原创 2018-03-23 15:21:55 · 198 阅读 · 0 评论 -
省选专练USACO11FEBGOLD奶牛抗议
水题。由于之前存在一个前缀和和大于某个值的条件直接树状数组优化罢了。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;typedef int INT;#define ...原创 2018-03-23 23:12:35 · 336 阅读 · 0 评论 -
省选专练POI2008BLO
这真的算树形DP?这是明显的求割点。然后枚举siz子树,利用正难则反的思想求答案n*n-sigma SIZi^2#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<stack>us...原创 2018-03-23 23:16:17 · 152 阅读 · 0 评论 -
省选专练POI2007ATR
状压DP我们先跑k次dijkstra记录下全源的最短两两路径。那么,我们状态压缩,考虑是否可达。#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<cstring>#include<queue>using name...原创 2018-03-23 23:19:14 · 190 阅读 · 0 评论 -
省选专练SCOI2008奖励关
状压DP转移模式像极了POI2007ATR还是读进来预处理可达性状态模式。然后倒着跑(因为这是期望状压)#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;double ...原创 2018-03-23 23:28:11 · 129 阅读 · 0 评论 -
省选专练(这个真的有省选难度?)期望入门铃仙
在幻想乡,铃仙•优昙华院•稻叶是从月球逃到永远亭的月兔。同样居住在永远亭的地球兔子因幡帝老是对铃仙恶作剧。某一天,铃仙终于决定要惩罚一下帝,不过首先得在迷途竹林里把帝抓住。永远亭的迷途竹林可以视为一个由N个路口(编号1..N),M条单向路连接的区域。开始时,帝在路口1,每一个单位时间,帝会以相同的概率走到相邻的路口或是停留在当前路口,一条路可以重复走,但是帝不会走回头路,也就是说如果帝从路口x走到...原创 2018-03-25 15:57:48 · 665 阅读 · 0 评论 -
省选专练【SDOI2009】学校食堂
状压DP为什么是状压DP‘对于100%的数据,满足1 ≤ N ≤ 1,000,0 ≤ Ti ≤ 1,000,0 ≤ Bi ≤ 7,1 ≤ C ≤ 5。’容忍度超级小。于是可以枚举每一维容忍度的状态。f(i,j,k)表示已经放好了i-1个对于第i-i+7个的状态为j上一次买菜是据当前k的人。#include<iostream>#include<cstdio>#includ...原创 2018-03-21 19:40:09 · 145 阅读 · 0 评论 -
省选专练SCOI2009windy数
数位DP但是并不需要记忆化搜索,只需要拼块就好了#include<bits/stdc++.h>using namespace std;typedef int INT;#define int long longint f[13][10]={};int a[10]={};int solve(int x){ if(x==0) return 0; int len=0; w...原创 2018-05-09 23:48:13 · 122 阅读 · 0 评论 -
省选专练IOI2000邮局(S4共享单车)
第一次秒掉IOI的题啥?数字三角形?第一,很明显n^3可以过,那不就水了吗?但事实上村庄带权依旧可做而且有朴素的n^2*logn做法甚至整体二分或是决策单调性都可以AC而且复杂度为严格的nlogn所以水过啊#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#...原创 2018-05-19 14:28:03 · 289 阅读 · 0 评论 -
省选专练POI2015 Myjnie
毒瘤DP什么?你说这TM就是个提高题?我好菜啊冷静思考:当我们考虑洗车的老哥时,一个洗衣店有明显的后效性:最大费用可行流 动态规划。f(i,j,k)表示:区间i,j,价值不小于k的答案max的后缀。pre(i,j,k)表示:区间i,j此时答案的实际kfat(i,j,k)表示:区间i,j此时答案实际k的实际位置。cnt(i,k)表示:i位置最大值可满足为k的后缀和四个dp滚动维护真是简单的提高组难度...原创 2018-05-08 12:10:25 · 128 阅读 · 0 评论 -
省选专练[USACO18JAN]Cow at Large Gold
简单的树形DP一次DFS求出深度和当前距离叶子的最近距离第二次DFS求出所有深度小于距离最近叶子的点#include<bits/stdc++.h>using namespace std;const int N=1e5+10;struct Front_star{ int u,v,w,nxt;}e[N*4];int cnt=0;int first[N]={};void...原创 2018-05-27 20:16:02 · 247 阅读 · 0 评论 -
省选专练[USACO18JAN]Stamp Painting
计数类DP正难则反求出答案的补集就是动态规划用一个伪前缀和优化就行了#include<bits/stdc++.h>using namespace std;typedef int INT;#define int long longconst int N=1e6+10;int n,m,k;const int mod=1e9+7;int f[N]={};int sum=0;...原创 2018-05-27 20:17:54 · 273 阅读 · 0 评论 -
省选专练[USACO06NOV]玉米田Corn Fields
农场主John新买了一块长方形的新牧场,这块牧场被划分成M行N列(1 ≤ M ≤ 12; 1 ≤ N ≤ 12),每一格都是一块正方形的土地。John打算在牧场上的某几格里种上美味的草,供他的奶牛们享用。遗憾的是,有些土地相当贫瘠,不能用来种草。并且,奶牛们喜欢独占一块草地的感觉,于是John不会选择两块相邻的土地,也就是说,没有哪两块草地有公共边。John想知道,如果不考虑草地的总块数,那么...原创 2018-10-19 07:39:28 · 211 阅读 · 0 评论