题目大意:给出一个棋盘,上面有一些数字,每一次可以将相邻的两个数字一起加一。问最少的次数使得整个棋盘上的数字都相等。
思路:基础思路:二分最少的相等的数字。将棋盘黑白染色,每次操作一定会使一个黑子和一个白子加1,建立二分图,S向所有白点连边,所有黑点向T连边,流量为每个点到达需要相等数字的需求大小。相邻的黑点和白点连边,f:INF。然后跑最大流看是否满流就可以了。
但是这个题需要多想一...
分类:
其他好文 时间:
2015-01-09 09:12:21
阅读次数:
287
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1297分析:如果每条边的边权都是1,那么就相当于对邻接矩阵自乘T次(因为写一下递推式子f[i][j]=∑f[i][k]*f[k][j]等价于矩阵乘法的定义)。但是这题每条边的边权是1~9。...
分类:
其他好文 时间:
2014-12-17 00:12:17
阅读次数:
242
题目大意:在喵星球上有一些喵~,每个喵都有一个姓和一个名字。点名的时候如果一个喵中姓或者名中有这个串的话他就会喵。问每次点名有几个喵喵了,和每个喵喵了几次。
思路:好萌的题喵~
AC自动机构造fail树是可以做的,但是和SA乱搞的时间差不多,我就是SA乱搞的w
把所有的串(姓名,询问)用$连接成一个串,然后做后缀数组,height数组。过程中记录一下每一个后缀数属于哪个喵,还有询问在...
分类:
编程语言 时间:
2014-12-10 10:50:36
阅读次数:
229
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1085
考虑到深度不超过15,IDA*搜索可做。
估价函数h()=当前不在目标位置的棋子个数。
然后其他细节就和普通的迭代加深一样了。
#include
#include
#include
#include
#include
using namespace std...
分类:
其他好文 时间:
2014-12-05 22:49:51
阅读次数:
195
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1072
这题范围小,s的长度不超过10,如果用二进制表示每一位数字是否被选择到的话,二进制最大不超过2^10,可以用状压DP做。
用f[S][j]表示当前每一位数字是否选到的二进制状态为S,拼出的数mod d=j的方案数。
决策就是可以从所有没有被选到的数字中,选择一个数放到之...
分类:
其他好文 时间:
2014-12-05 22:47:46
阅读次数:
178
题目大意:在滑雪场中,每一个景点有一个高度。现在小明在一号节点。i和j之间有单向边当且仅当i的高度不高于j。问小明最多可以去多少个景点,和最小总费用。
思路:这是一道数学证明的好题。
第一问比较水,直接将可行的边连接起来,然后BFS出解。
第二问就比较难搞了。不难看出,直接用朱刘算法是不可行的,因为朱刘算法的时间复杂度达到了O(mn),而这个题至少需要一个O(mlogm)的算法。
...
分类:
其他好文 时间:
2014-12-05 19:24:10
阅读次数:
198
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1026
很基础的数位DP题,很早之前我就尝试做这题,不过当时我被这题吓死了,现在回过头做这题,感觉简单多了。
做这个题时我想到了POJ一道类似的组合数学的题,同样是按数位统计,有异曲同工之妙。
题目要求[a,b]区间上的windy数个数,我们可以转化成求[1,a]上的windy...
题目大意:现在要打一个BOSS,一个人有n个武器,一个武器有两个属性值,但是一个武器只能攻击一次。这个BOSS需要从1连续递增输出,问输出的最大值为多少。
思路:以前好像做过一个相似的问题,也是这么做的,哪个忘了。。
很明显的二分关系是攻击力和武器,因为一个攻击力需要攻击一次,一个武器只能攻击一次,然后武器和攻击力之间连边,从1开始匹配,什么时候不能匹配了就输出。
memset会T的...
分类:
其他好文 时间:
2014-11-27 14:41:05
阅读次数:
195
题目大意:一个国王可以攻击到旁边8个位置的格子,现在给出一个N*N的方格,向其中放k个国王,问有多少中摆放方法。
思路:状压DP,f[i][j][k],其中i是行数,j是状态,k是已经取了多少国王。然后暴力枚举状态,看相邻两行之间有没有冲突,若没有冲突,那么就转移。
注意要开long long
CODE:
#include
#include
#include
#...
分类:
其他好文 时间:
2014-11-21 18:53:36
阅读次数:
161
题目链接:点击打开链接
#include
#include
#include
#include
#include
#include
using namespace std;
const int dx[] = {1, 1, -1, -1, 2, 2, -2, -2};
const int dy[] = {2, -2, 2, -2, 1, -1, 1, -1};
cons...
分类:
其他好文 时间:
2014-11-16 17:22:04
阅读次数:
270