HDU 1160 FatMouse's Speed ——(DP)
摘要:又是那个lis变形的题目。 但是不好定义严格的比较符号,因此只能n^2去做。值得注意的一个是要先排序,因为可能可以先选后面的再选前面的,先排序的话就能够避免这个问题。但是要注意,因为要输出路径,所以要记录之前的id。 代码如下:
阅读全文
HDU 1114 Piggy-Bank ——(完全背包)
摘要:差不多是一个裸的完全背包,只是要求满容量的最小值而已。那么dp值全部初始化为inf,并且初始化一下dp[0]即可。代码如下:
阅读全文
poj 1458 Common Subsequence ——(LCS)
摘要:虽然以前可能接触过最长公共子序列,但是正规的写应该还是第一次吧。 直接贴代码就好了吧:
阅读全文
HDU 1257 最少拦截系统 ——(LIS)
摘要:想了一下感觉和lis有关,交了果然AC。想不到很好的证明方法,试做证明如下:lis的每一个点都是一个不上升系统中的一员,设其为a[i],那么a[i-1]<a[i]肯定是成立的(lis的性质),夹在这两者之间的一个元素x,如果其>=a[i],那么它肯定属于a[i]这个系统,如果它小于a[i],且:1.
阅读全文
HDU 1074 Doing Homework ——(状态压缩DP)
摘要:考虑到n只有15,那么状压DP即可。 题目要求说输出字典序最小的答案的顺序,又考虑到题目给出的字符串本身字典序是递增的,那么枚举i的时候倒着来即可。因为在同样完成的情况下,后选字典序大的,小的字典序就会在前面,那么整体的字典序就会更小。代码如下:
阅读全文
HDU 1069 Monkey and Banana ——(DP)
摘要:简单DP。 题意:给出若干种长方体,如果摆放时一个长方体的长和宽小于另一个的长宽,那么它可以放在另一个的上面,问最高能放多少高度。每种长方体的个数都是无限的。 做法:因为每种个数都是无限,那么每种按照x,y,z分别重新排列可以得到6种长方体。现在用dp[i]表示选到第i个且第i个必须使用的最大高度,
阅读全文
HDU 1024 Max Sum Plus Plus ——(M段区间的最大和)
摘要:感觉有点奇怪的是这题明明是n^2的复杂度,n=1e6竟然能过= =。应该是数据水了。 dp[i][j]表示前j个数,分成i段,且最后一段的最后一个为a[j]的答案。那么转移式是:dp[i][j] = max(dp[i][j-1], max{dp[i-1][t]}) + a[j],(i-1<=t<=j
阅读全文
Codeforces Round #367 (Div. 2)
摘要:AB都是水题。 C题,DP题。没能够独立的做出来,但是会了以后感觉还是蛮简单的= =。代码如下: 1 #include <stdio.h> 2 #include <algorithm> 3 #include <string.h> 4 #include <iostream> 5 #include <m
阅读全文
Codeforces Round #396 (Div. 2)
摘要:AB都是大水题。 C题,题意稍微有点晦涩。但是还是一个比较简单的dp(虽然我不是独立的做出来的= =)。感觉我dp掌握的不是很好啊;看到这题突然想起前几天碰到的一题:不考虑顺序的整数划分问题。C题代码如下: 1 #include <stdio.h> 2 #include <algorithm> 3
阅读全文
全是1的最大子矩阵问题
摘要:前一次寒假排位赛中遇到了这个问题,后来思考了一下。写个类似问题的总结。 这题的模型可以在51nod中找到:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1158。但是其问题规模比较小,n^3暴力似乎都可以。 正解应当是单调
阅读全文
2017 ZSTU寒假排位赛 #7
摘要:题目链接:https://vjudge.net/contest/149498#overview。 A题,水题,直接按照题意模拟一下即可。 B题,我用的是线段树。大力用的差分标记(上次听zy说过,下次再做些类似的题目好了),lyf的方法也不错。 C题,不难发现,00是不能变成其他的,而11可以变成10
阅读全文
Codeforces Round #369 (Div. 2)
摘要:A题,水题,暴力找即可。 B题,水题,但是需要注意n=1的情况。 C题,dp。虽然是个水dp,但是我还是没能够自己独立的写出来。= =太菜了!代码如下: 1 #include <stdio.h> 2 #include <algorithm> 3 #include <string.h> 4 #incl
阅读全文
2017 ZSTU寒假排位赛 #6
摘要:题目链接:https://vjudge.net/contest/149212#overview。 A题,水题,略过。 B题,水题,读清题意即可。 C题,数学题,如果把x表示成x=nb+m,则k=n/m属于[1,a],m属于[1,b-1]。然后由第一个式子得到n=(x-m)/b,那么带入第二个式子得,
阅读全文
2017 ZSTU寒假排位赛 #4
摘要:题目链接:https://vjudge.net/contest/148543#overview。 A题:n个罪犯,每个人有一个犯罪值,现在要从里面选出连续的c个人,每个人的犯罪值都不能超过t,问选法的种类数。O(n)xjbg一下即可: 1 #include <stdio.h> 2 #include
阅读全文
2017 ZSTU寒假排位赛 #3
摘要:题目链接:https://vjudge.net/contest/147974#overview。 A题,费用流,不会。。跳过了。 B题,给一个图,问至少添加几条边能成为强连通图。显然缩点,要使得成为一个scc,任意一个点都要至少一个入度和出度,而一条边可以提供一个入度和出度,因为答案为max(入度为
阅读全文
HDU 3689 Infinite monkey theorem ——(自动机+DP)
摘要:这题由于是一个单词,其实直接kmp+dp也无妨。建立自动机当然也是可以的。设dp[i][j]表示匹配到第i个字母的时候,在单词中处于第j个位置的概率,因此最终的答案是dp[0~m][len],m是输入的长度,len是单词的长度。转移方程见代码,即在一个节点的位置时,枚举下一步的走法,乘以这种走法的概
阅读全文
2017 ZSTU寒假排位赛 #1
摘要:题目链接:https://vjudge.net/contest/147102#overview。 A题:给出一堆的点,要找出两条垂直的直线,一条与x轴呈45度。-->使得所有的点到任意一条直线的最短曼哈顿距离(具体见题意描述)的最大值最小。做法是先把坐标轴逆时针旋转45度,x'=(x-y)/sqrt
阅读全文
hihoCoder #1199 : Tower Defense Game ——(树型dp)
摘要:题目链接:https://hihocoder.com/problemset/problem/1199。 题意:一棵以1为根的树,每个点有一个p值和q值,到这个点需要当前分数大于等于p,然后消耗掉(p-q)的分数。问一种遍历方式,使得一开始在1所需的分数最小并能够遍历完所有的点。 分析见代码:
阅读全文
codeforces 742D Arpa's weak amphitheater and Mehrdad's valuable Hoses ——(01背包变形)
摘要:题意:给你若干个集合,每个集合内的物品要么选任意一个,要么所有都选,求最后在背包能容纳的范围下最大的价值。 分析:对于每个并查集,从上到下滚动维护即可,其实就是一个01背包= =。 代码如下:
阅读全文