递推与动规
文章平均质量分 62
CR1SceNT
这个作者很懒,什么都没留下…
展开
-
BZOJ1609: [Usaco2008 Feb]Eating Together麻烦的聚餐
Portalf[i][j]表示有序排到第i个位置数字为j时,所需要的最少步数。 正反推一遍即可。【代码】#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <cmath>#define N 30005#define M 30005#define INF 100000000原创 2017-02-27 18:41:33 · 276 阅读 · 0 评论 -
BZOJ1222: [HNOI2001]产品加工
Portalf[i]表示第一台机器到第i分钟,第二台机器加工时间的最小值。 很怪的dp。。意会一下。。【代码】#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <cmath>#define N 6005#define M 30005#define INF 1000000原创 2017-02-27 16:44:56 · 447 阅读 · 0 评论 -
BZOJ2708: [Violet 1]木偶
Portal Sample Input 1215428 931 2 3256 60359 59 57351 55 5951 2 3 2 4487 70 81 34450 55 58 5961 2 3 4 5 661 2 3 3 4 581 2 3 3 4 2 5 4922 23 52 61 39 38 1 40 17Sample Output 00010001002221先排序 假如将木原创 2017-03-08 11:58:19 · 382 阅读 · 0 评论 -
BZOJ2298: [HAOI2011]problem a
Portal每个人所在的可行区间为[l+1,n−r][l+1,n-r]。题目就可以转化为求若干个不相交区间的最大权值和。用nn减最大和就是最少的说谎人数。 f[i]=max(f[l−1]+sum[l,r])f[i]=max(f[l-1]+sum[l,r])【代码】#include <iostream>#include <cstdio>#include <algorithm>#include原创 2017-03-08 15:20:21 · 540 阅读 · 0 评论 -
BZOJ1003: [ZJOI2006]物流运输
Portal数据中n,m非常小,所以可以预处理出dis[i][]]表示从第i天到第j天走同一条路线的最短距离。然后dp就行了。 f[i]=min(f[j]+K+dis[j+1][i]∗(i−j))f[i]=min(f[j]+K+dis[j+1][i]*(i-j))【代码】#include <iostream>#include <cstdio>#include <algorithm>#incl原创 2017-02-27 09:52:59 · 234 阅读 · 0 评论 -
BZOJ2101: [Usaco2010 Dec]Treasure Chest 藏宝箱
PortalDescriptionBessie and Bonnie have found a treasure chest full of marvelous gold coins! Being cows, though, they can’t just walk into a store and buy stuff, so instead they decide to have some fun原创 2017-03-06 11:56:10 · 348 阅读 · 0 评论 -
BZOJ1270: [BeijingWc2008]雷涛的小猫
Portal【Description】 N,H都达到了2000,n²m直接暴力肯定是过不了的 发现,其实我们只需要知道答案是多少,并不需要知道它当前是在哪一棵树上。 然后转移实际上就是从当前树的上一层或者当前层的上DELTA层的最大值转移而来 那么我们用f[i],g[i]分别表示第i层的最大值,第j棵树上当前最大值。 g[i]=max(g[i],f[min(m+1,j+DELTA)])+t原创 2017-02-27 10:43:48 · 461 阅读 · 0 评论 -
BZOJ1084: [SCOI2005]最大子矩阵
Portal注意到m只能为1或2 分类讨论。 m=1的时候其实就是最大K段连续子段和。 f[i][j]=max(f[i][j],max(f[k][j],f[k][j−1]+sum[i]−sum[k]));f[i][j]=max(f[i][j],max(f[k][j],f[k][j-1]+sum[i]-sum[k]));m=2时 g[i][j][k]表示第一列到i,第二列到j,选了k个子矩阵的原创 2017-02-27 11:18:48 · 294 阅读 · 0 评论 -
BZOJ1040: [ZJOI2008]骑士
Portal每个人有一个讨厌的人,这两个人不能同时取,求点权值和最大。最大点权独立集嘛!网络流?(80’) 拆点,对于点x,S向x’连边,流量b[i],x”向T连边,流量为b[i],对于每一对不能同时取得点i,j,连边i’–>j”,j’–>i”,流量均为INF。答案=(∑b[i]*2-最小割)/2。 无聊测了一下,第九个点30w数据跑了50s。。100w的跑了…535s。。想正解。可以发现边数=原创 2017-02-27 15:36:35 · 358 阅读 · 0 评论 -
BZOJ1046: [HAOI2007]上升序列
Portal首先是否存在很容易。 考虑如何输出最小字典序的方案。注意。。是位子的字典序,不是值。。 那么这样的话,倒过来做一遍最长下降子序列。f[i]f[i]表示以ii开头的最长上升子序列长度、找答案的时候就顺着找,每次满足条件就输出。【代码】#include <iostream>#include <cstdio>#include <algorithm>#define N 10005us原创 2017-03-06 16:11:29 · 227 阅读 · 0 评论 -
BZOJ1044: [HAOI2008]木棍分割
Portal首先第一问就直接二分了。没什么难度。 第二问比较容易想到的是:f[i,j]f[i,j]表示到第ii个位置,切了jj刀,并且在ii后切了一刀的方案数。那么最后答案就是∑m+1i=1f[n,i]\sum_{i=1}^{m+1}f[n,i] 递推式: f[i,j]+=f[k,j−1]f[i,j]+=f[k,j-1](j−1<=k<ij-1<=k<i 且sum[i]−sum[k]<=ans原创 2017-03-06 20:57:52 · 336 阅读 · 0 评论 -
BZOJ1057: [ZJOI2007]棋盘制作
Portal求01相间的最大子矩阵和最大子正方形。 其实就是求全0(1)矩阵的升级版。 做单调栈时加一点处理就好了。【代码】#include <iostream>#include <cstdio>#include <algorithm>#define N 2005#define mod 10007#define INF 0x7fffffffusing namespace std;t原创 2017-03-07 11:05:11 · 330 阅读 · 0 评论 -
BZOJ2023/1630: [Usaco2005 Nov]Ant Counting 数蚂蚁
PortalDescription\color={Description} 有一天,贝茜无聊地坐在蚂蚁洞前看蚂蚁们进进出出地搬运食物.很快贝茜发现有些蚂蚁长得几乎一模一样,于是她认为那些蚂蚁是兄弟,也就是说它们是同一个家族里的成员.她也发现整个蚂蚁群里有时只有一只出来觅食,有时是几只,有时干脆整个蚁群一起出来.这样一来,蚂蚁们出行觅食时的组队方案就有很多种.作为一头有数学头脑的奶牛,贝茜注原创 2017-03-07 14:29:15 · 738 阅读 · 0 评论 -
BZOJ2091: [Poi2010]The Minima Game
Portal和[BZOJ2101:[Usaco2010Dec]TreasureChest藏宝箱][BZOJ2101: [Usaco2010 Dec]Treasure Chest 藏宝箱]有异曲同工之妙。 两个思路都差不多,dpdp相当于是逆过程。f[i]f[i]表示前ii个,先手取得最大得分差。【代码】#include <iostream>#include <cstdio>#include <原创 2017-03-07 16:43:41 · 318 阅读 · 0 评论 -
BZOJ4870: [Shoi2017]组合数问题
BZOJ4870。。估计大多数人都是看题推式子。。然后各种码逆元。。CRTCRT。。LucasLucas定理等奇奇怪怪的东西。。然后还发现拿不了满分。。最后看到题解,就各种憋住的**破口而出。。 其实题目就是求nknk个数中,取得的数模kk为rr的方案数。。 显然有fi,j=fi−1,j−1+fi−1,jf_{i,j}=f_{i-1,j-1}+f_{i-1,j}(fi,0=fi−1,0+fi−1原创 2017-06-06 19:25:35 · 534 阅读 · 0 评论 -
BZOJ4818: [Sdoi2017]序列计数
BZOJ4818容斥一下,变成任取不超过mm的nn个数且和为pp的倍数的方案数-任取不超过mm的nn个合数且和为pp的倍数的方案数。 令fi,jf_{i,j}表示ii个数,模p=jp=j的方案数。 容易写出方程: for(i=1……n)for(i=1……n) for(j=0……p−1)for(j=0……p-1) for(k=1……m)for(k=1……m) fi,(j+k)Mod原创 2017-06-06 19:57:52 · 629 阅读 · 0 评论 -
BZOJ1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚
Portal DescriptionFarmer John’s cows, pampered since birth, have reached new heights of fastidiousness. They now require their barn to be immaculate. Farmer John, the most obliging of farmers, has no原创 2017-03-03 19:34:32 · 517 阅读 · 0 评论 -
BZOJ1649: [Usaco2006 Dec]Cow Roller Coaster
PortalDescriptionThe cows are building a roller coaster! They want your help to design as fun a roller coaster as possible, while keeping to the budget. The roller coaster will be built on a long linea原创 2017-03-02 19:34:45 · 296 阅读 · 0 评论 -
BZOJ1633: [Usaco2007 Feb]The Cow Lexicon 牛的词典
PortalDescription没有几个人知道,奶牛有她们自己的字典,里面的有W (1 ≤ W ≤ 600)个词,每个词的长度不超过25,且由小写字母组成.她们在交流时,由于各种原因,用词总是不那么准确.比如,贝茜听到有人对她说”browndcodw”,确切的意思是”browncow”,多出了两个”d”,这两个”d”大概是身边的噪音. 奶牛们发觉辨认那些奇怪的信息很费劲,所以她们就想让你帮忙辨认一原创 2017-03-02 19:07:36 · 290 阅读 · 0 评论 -
BZOJ1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛
Portalf[i][j][k]表示第i秒,到位置j,k的方案数。 没事刷刷水。。手速题。【代码】#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <cmath>#include <queue> #define N 30005#define M 30005#defin原创 2017-02-27 19:06:10 · 410 阅读 · 0 评论 -
BZOJ1677: [Usaco2005 Jan]Sumsets 求和
Portal【题意】给出一个N(1≤N≤10^6),使用一些2的若干次幂的数相加来求之.问有多少种方法手写列出来前几种情况找规律。 对于i为奇数,f[i]=f[i-1] 对于i为偶数,f[i]=f[i-1]+f[i>>1]奇数时,一定会有一个1,也就是前一个数所分出的所有情况中,每一个里面加一个因子1 偶数时,分出的情况中若有1,可以看做是前一个数中所有的情况中加一个1 不含1的可以看做是,原创 2017-02-27 19:49:22 · 553 阅读 · 0 评论 -
BZOJ1207: [HNOI2004]打鼹鼠
Portal想到了就很容易,类似LIS,f[i]表示打掉第i只鼹鼠时,最多可以打f[i]个 因为时间是递增的,所以直接m²就行了。常数很小,加点优化还是跑的很快的。【代码】#include <iostream>#include <cstdio>#include <algorithm>#define N 10005#define mod 1000000000using namespace原创 2017-02-28 07:39:55 · 243 阅读 · 0 评论 -
BZOJ1037: [ZJOI2008]生日聚会Party
Portal一开始想的是f[i][j][k][0/1]f[i][j][k][0/1]表示的是,i个男生j个女生,后缀中男女生最大差值是多少,0/1表示是男-女还是女-男。然后发现这样有问题,因为同时要考虑男女生情况,所以状态是不够的。 f[i][j][k][l]f[i][j][k][l]表示i个男生j个女生,后缀中男生比女生多的最大值为k,女生比男生多的最大值为l。 但是这样会出现一个问题,k,原创 2017-02-28 10:31:14 · 213 阅读 · 0 评论 -
BZOJ1009: [HNOI2008]GT考试
Portal裹了大半天,终于把这个(chu)(sheng)题搞清白了 (哪个准考证号109位,还挑号码,疯了板)\require{enclose}\enclose{horizontalstrike}{(哪个准考证号10^{9}位,还挑号码,疯了板)}令f[i][j]f[i][j]表示 准考证号前ii位,匹配到不吉利数的第jj位(即当前准考证号后jj位与不吉利数字前jj位相同)的方案数 ans=∑原创 2017-02-28 18:51:44 · 245 阅读 · 0 评论 -
BZOJ2326: [HNOI2011]数学作业
Portal很容易得到递推式f[i]=f[i−1]∗10k+if[i]=f[i-1]*{10^k}+i (10k−1<=i<10k)(10^{k-1} <= i < 10^k) 数据范围达到101810^{18},所以很容易想到用矩阵优化。 构造矩阵:(f[i]i1)∗⎛⎝⎜10k11011001⎞⎠⎟ \left( \begin{array}{ccc} f[i]&i&原创 2017-02-28 09:16:35 · 442 阅读 · 0 评论 -
BZOJ1898: [Zjoi2005]Swamp 沼泽鳄鱼
Portal鱼的运动最多以12为周期。为了方便,就直接以12作为周期。 (令石墩标号为1~n) f[i][j]f[i][j]表示时刻ii到jj的方案数。 f[i][j]=∑nk=1f[i−1][k]f[i][j]=\sum_{k=1}^n f[i-1][k](时刻ii,jj没有鱼到达的石墩kk) K又很大。 那么就可以矩阵乘法优化,12个位一个周期,就将十二个n∗nn*n的矩阵乘得第13个原创 2017-02-28 20:49:30 · 430 阅读 · 0 评论 -
BZOJ1233: [Usaco2009Open]干草堆tower
Portalhttp://www.cnblogs.com/sagitta/p/4650681.html这一篇讲的很好感觉这个题最难想到的就是倒过来做答案是非降的。 既然答案单调就可以考虑是否有决策单调性。发现很显然有,就可以用单调队列优化了。【代码】#include <iostream>#include <cstdio>#include <algorithm>#define N 100005原创 2017-03-01 10:09:58 · 369 阅读 · 0 评论 -
BZOJ1296: [SCOI2009]粉刷匠
Portal一次只能在一行刷一段连续的格子。就可以每一行分别处理。 每一行先处理出f[i][j]f[i][j]表示刷到前ii个格子,用jj次得到的最大价值。 然后再用分组背包合在一起就好了。【代码】#include <iostream>#include <cstdio>#include <algorithm>#define N 100005using namespace std;typ原创 2017-03-01 10:48:54 · 464 阅读 · 0 评论 -
BZOJ1617: [Usaco2008 Mar]River Crossing渡河问题
Portal 1617: [Usaco2008 Mar]River Crossing渡河问题Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1005 Solved: 725[Submit][Status][Discuss]DescriptionFarmer John以及他的N(1 <= N <= 2,500)头奶牛打算过一条河,但他们所有的渡河工具,仅原创 2017-03-01 11:56:11 · 444 阅读 · 0 评论 -
BZOJ2442: [Usaco2011 Open]修剪草坪
[Portal](http://www.lydsy.com/JudgeOnline/problem.php?id=2442) 2442: [Usaco2011 Open]修剪草坪 Time Limit: 10 Sec Memory Limit: 128 MB Description在一年前赢得了小镇的最佳草坪比赛后,FJ变得很懒,再也没有修剪过草坪。现在,新一轮的原创 2017-03-01 16:38:11 · 648 阅读 · 0 评论 -
BZOJ1537: [POI2005]Aut- The Bus
[Portal](http://www.lydsy.com/JudgeOnline/problem.php?id=1537) 1537: [POI2005]Aut- The Bus Time Limit: 5 Sec Memory Limit: 64 MBDescriptionByte City 的街道形成了一个标准的棋盘网络 – 他们要么是北南走向要么就是西东走向. 北南走向的路口从 1原创 2017-03-01 19:54:43 · 350 阅读 · 0 评论 -
BZOJ1592: [Usaco2008 Feb]Making the Grade 路面修整
http://www.lydsy.com/JudgeOnline/problem.php?id=15921592: [Usaco2008 Feb]Making the Grade 路面修整Time Limit: 10 Sec Memory Limit: 162 MBDescriptionFJ打算好好修一下农场中某条凹凸不平的土路。按奶牛们的要求,修好后的路面高度应当单调上升或单调下降,也就是说,高原创 2017-03-01 20:05:55 · 394 阅读 · 0 评论 -
BZOJ1801: [Ahoi2009]chess 中国象棋
Portal1801: [Ahoi2009]chess 中国象棋Time Limit: 10 Sec Memory Limit: 64 MBDescription在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮。 请问有多少种放置方法,中国像棋中炮的行走方式大家应该很清楚吧.Input一行包含两个整数N,M,中间用空格分开. Output输出所有的方案数,由于值比较原创 2017-03-02 10:18:13 · 461 阅读 · 0 评论 -
BZOJ3688: 折线统计
Portal3688: 折线统计Time Limit: 10 Sec Memory Limit: 256 MBDescription二维平面上有n个点(xi, yi),现在这些点中取若干点构成一个集合S,对它们按照x坐标排序,顺次连接,将会构成一些连续上升、下降的折线,设其数量为f(S)。如下图中,1->2,2->3,3->5,5->6(数字为下图中从左到右的点编号),将折线分为了4部分,每部分连原创 2017-03-02 16:47:13 · 442 阅读 · 0 评论 -
BZOJ4517: [Sdoi2016]排列计数
BZOJ4517对于一组数据n,mn,m。ans=Cmn∗dp[n−m]ans=C_n^m*dp[n-m] dp[i]dp[i]表示ii的错排数。 那就是考虑如何求dpdp数组了。求dpndp_n: 1.将第nn个数放入前n−1n-1个任意一个中,有n−1n-1种,记放的位子为kk. 2.kk若放在位置nn,那就相当于剩下n−2n-2个错排,也就是dp[n−2]dp[n-2]种方案。kk若不原创 2017-06-12 17:03:00 · 446 阅读 · 0 评论