摘要: //By SiriusRen #include #include using namespace std; const int N=555; struct Node{int a,p;}node[N]; bool operator<(Node a,Node b){return a.p<b.p;} char pr[]={2,3,5,7,11,13,17,19}; int n,p,f[N][N... 阅读全文
posted @ 2017-04-01 08:52 SiriusRen 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 思路: f[i][j]表示i位数乘积为j的方案数 j的取值最多5000多种,那就开个map存一下好了 阅读全文
posted @ 2017-04-01 08:34 SiriusRen 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 思路: 水题 竟然不会做 尴尬 比b大的数=1 比b小的数=-1 找到b 统计一下左边比b大x的数有多少 扫右边的时候就查左边的表 就可以了 阅读全文
posted @ 2017-04-01 08:25 SiriusRen 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 思路: 二分+哈希 Manacher改一下条件 0只能匹配1 1只能匹配0 #匹配# (长度从0开始匹配 这样就相当于只能从#开始走了 也就是长度为偶数) 阅读全文
posted @ 2017-04-01 08:20 SiriusRen 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 思路: 对所有序列差分一下 公共串的长度+1就是答案了 二分 扫一遍height即可,.. 阅读全文
posted @ 2017-04-01 08:18 SiriusRen 阅读(374) 评论(0) 推荐(0) 编辑
摘要: 思路: 直接上A* 阅读全文
posted @ 2017-04-01 08:16 SiriusRen 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 思路: 我们可以算不合法的 如果三个点都在同一侧 就不合法.. 用总方案数减掉就可以了 (有神奇的实现方法...) 阅读全文
posted @ 2017-04-01 08:13 SiriusRen 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 思路: 满足二分性质... 二分一下 就完了 阅读全文
posted @ 2017-04-01 08:11 SiriusRen 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 思路: f[i][j][S]表示从i到j压成S状态 j-m是k-1的倍数 $f[i][j][S<<1]=max(f[i][j][S<<1],f[i][m-1][S]+f[m][j][0]),$$f[i][j][S<<1|1]=max(f[i][j][S<<1|1],f[i][m-1][S]+f[m] 阅读全文
posted @ 2017-04-01 08:10 SiriusRen 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 思路: 移至iwtwiioi http://www.cnblogs.com/iwtwiioi/p/4986316.html 阅读全文
posted @ 2017-04-01 08:06 SiriusRen 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 思路: 统计入度&出度 每搜到一个点 阅读全文
posted @ 2017-04-01 08:03 SiriusRen 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 思路: 把障碍移到对角线 就发现 这是个错位排列问题 用错排公式即可解 s[i]=(s[i-1]+s[i-2])*i 阅读全文
posted @ 2017-04-01 07:59 SiriusRen 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 思路: 数位DP f[i][j][k]表示走到第i位 开头位j 数字k 出现的次数 $f[i][j][k]+=f[i-1][l][k];$$f[i][j][j]+=base[i]$ calc的时候要有特殊的技巧...(我看题解学会的) 阅读全文
posted @ 2017-04-01 07:57 SiriusRen 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 思路: 预处理错排 然后C(n,m)*s[n-m-1]就是答案了 特判n-m-1<0 阅读全文
posted @ 2017-04-01 07:52 SiriusRen 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 思路: 维护两个指针pointer_1和pointer_2 代表用算法一走到的位置 和算法2走到的位置 若 算法一<算法2 数组后面就插入算法一的解 pointer_1++ (记得判重) (这题卡不住heap什么鬼) 阅读全文
posted @ 2017-04-01 07:51 SiriusRen 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 思路: 把它拆成两半 分别搜一发 两部分分别排好序 用two-pointers扫一遍 就可以了. (读入也要用long long) 阅读全文
posted @ 2017-04-01 07:47 SiriusRen 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 思路: 状压一下 就完了... f[i]表示选了的集合为i 转移的时候判一判就好了.. 阅读全文
posted @ 2017-04-01 07:46 SiriusRen 阅读(419) 评论(0) 推荐(2) 编辑
摘要: 思路: 棋盘是个二分图 那就把一个可以走的白点 向所有可以走的黑点连边 跑一个最大匹配 (匹配上了就代表这两个点不能共存) 最大独立集=sum-最大匹配 阅读全文
posted @ 2017-04-01 07:44 SiriusRen 阅读(718) 评论(0) 推荐(1) 编辑