上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 21 下一页
摘要: 给出a,b,求出[a,b]中各位数字之和能整除原数的数的个数。1<=a<=b<=1e18. 注意到各位数字之和最大是153.考虑枚举这个东西。那么需要统计的是[0,a-1]和[0,b]内各位数字之和为x且能整除x的数字个数。 那么我们只需要数位dp一波即可。 令dp[pos][i][x]表示有pos 阅读全文
posted @ 2017-05-01 19:05 free-loop 阅读(359) 评论(0) 推荐(0) 编辑
摘要: 题意: 求两个矩形最大公共子正方形。(n<=50) 范围这么小可以枚举子正方形的边长。那么可以对这个矩形进行二维hash,就可以在O(1)的时候求出任意子矩形的hash值。然后判断这些正方形的hash值有没有相同的 部分就行了。可以用二分来判断。 需要注意的是行和列乘的hash种子值需要不同的质数, 阅读全文
posted @ 2017-05-01 14:28 free-loop 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 图中的保护关系就类似于最大权闭合子图。即你想杀x,你就一定要杀掉保护x的点,那么把x向保护它的点连边。那么题目就转化成了最大权闭合子图的问题。 但是这个图有点特殊啊。。。 考虑有环的情况,显然这个环以及指向这个环的点都不能选。 所以还要把这个图的反图进行一遍拓扑排序,这样忽略掉了这些点了。。。 # 阅读全文
posted @ 2017-04-29 15:38 free-loop 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 求方案数的平方之和。这个看起来很难解决。如果转化为求方案数的有序对的个数。那么就相当于求A和B同时取,最后序列一样的种数。 令dp[i][j][k]表示A在上管道取了i个,下管道取了j个,B在上管道取了k个,下管道取了i+j-k个珠子的序列相同的种数。 那么状态转移方程显然可得。 # include 阅读全文
posted @ 2017-04-29 12:54 free-loop 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 真的是很有趣的游戏。。。 对每个单词构建好AC自动机后,由于单词都是相同长度的且不同,所以不会出现互相为子串的形式。 那么我们对AC自动机上的节点构建转移矩阵。对于每个单词末尾的节点。该节点的出边仅仅与自己相连且概率为1. 表示如果已经出现了该单词游戏就结束了。答案是收敛的,我们对这个矩阵迭代个2^ 阅读全文
posted @ 2017-04-28 19:36 free-loop 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 跑了7000ms。。。 这是个体积和价值都超大的背包。但是体积保证为a*2^b的(a<=10,b<=30)形式.且n<=100. 于是可以想到按b来分组。这样的话每组最多为a*n*2^b的体积。把每个分组进行一次01背包。 令dp[i][j]表示体积为j*2^i+w&(1<<i)的最大价值。再把每个 阅读全文
posted @ 2017-04-28 16:36 free-loop 阅读(210) 评论(0) 推荐(1) 编辑
摘要: 显然每个位置只有两个情况,所以用二分图最大匹配来求解。 如果二分图有完全匹配,则有解。 关键是如何求最小的字典序解。 实际上用匈牙利算法从后面开始找增广路,并优先匹配字典序小的即可。 # include <cstdio> # include <cstring> # include <cstdlib> 阅读全文
posted @ 2017-04-28 15:01 free-loop 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 给出一个长度为n的序列。支持两种操作: 1.把全部值为x的修改成y。2.询问序列有多少连续段。 我们可以对于每个值建立一个链表。对于操作1,则可以将两个链表合并。 对于操作2,只需要在每次合并链表的时候更新答案即可。 但是这样会超时。原因是因为合并链表时的暴力操作。如果每次把siz值小的合并到siz 阅读全文
posted @ 2017-04-27 23:10 free-loop 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 某加工厂有A、B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成。由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时间会不同,若同时由两台机器共同进行加工,所完成任务又会不同。某一天,加工厂接到n个产品加工的任务,每个任务的工作量不尽一样。你的任务就是:已知每个任 阅读全文
posted @ 2017-04-27 19:09 free-loop 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 状压DP f(i,j,k)表示前i−1个人已经吃了饭,且在i之后的状态为j的人也吃了饭(用二进制表示后面的状态),最后吃的那个人是i之后的第k个 (注意k可以是负数) 然后 如果j&1=1那么就表明第i个人也是吃了的,所以可以转移到f(i+1,j>>1,k−1) 否则就枚举下一个吃饭的人,转移到f( 阅读全文
posted @ 2017-04-27 18:37 free-loop 阅读(202) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 21 下一页