摘要:
三进制的状压dp要先预处理3^n以及每一个数的每一位 例题 hdu3001 题意: 给定n 个城市已经 m 条路 以及对应路费 c,要求遍历所有城市最少的路费,每个城市不能超过2次。 题解: 看代码吧。。 代码: 阅读全文
摘要:
没看过正解。。应该是些乱七八糟想不出来的东西 解法1: 首先,必须要做的是将每条路径拆成2个直的路径 那么对于那条从深度大的到深度小的路径 dep[x]-dep[y]应该等于观察时间 那么就可以在这些点打标记 那问题在于怎么找这些点 可以把深度为x的数组用vector搞出来 然后每次判断一下x里面的 阅读全文
摘要:
跟着别人的题表做的 http://blog.csdn.net/tomorrowtodie/article/details/52336931 1.POJ 3744 题意:一条路上有n个地雷,你站在起点1的位置,每次有p的概率走1步,有1-p的概率走2步,给出n,p,和n个雷的坐标xi,问不踩到地雷的概 阅读全文
摘要:
题意: 每一头牛的愿望就是变成一头最受欢迎的牛。现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎。 这种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也认为牛C受欢迎。你的任务是求出有多少头牛被所有的牛认为是受欢迎的。 题解: 这道题缩点还是挺明显的 先用tarjan缩 阅读全文
摘要:
线段树优化dp 题解: 首先dp挺简单的 f[i,k]=f[j,k-1]+solve(i+1,j-1) 然后这个是可以n^2*k搞得 然后考虑这个solve(i+1,j-1) 当i延伸了一个位置的时候,就变成了solve(i+1,j) 那么对于与j距离大于s的 我们就需要对其solve(i+1,j) 阅读全文
摘要:
很不错的一道倍增优化dp?? 第一次做这类题挺难想的 题目大意: 有n个小朋友,m块糖。 给小朋友分糖,如果一个小朋友分不到糖,那他后面的小朋友也分不到糖。 每个小朋友有一个喜悦值,有三个参数,O,S,U,设一个小朋友分到糖数为x,则这个小朋友的喜悦值为O*x x+ S x +U,分不到糖的小朋友的 阅读全文
摘要:
解析: 这东西其实就是指数型母函数? 所以刚开始读入的值我们都把它前面的系数置为1。 然后其实就是个多项式乘法了。 最大范围显然是读入的值中的最大值乘三,对于本题的话是12W? 用FFT优化的话,达到了O(nlogn),显然可过。 但是这里有一个问题,就是如何处理重复的部分。 重复的部分我们考虑用容 阅读全文
摘要:
zoj 2314 2.求有源有汇有下界最大流 建图与上面一样,把原来的汇点向源点连边INF 之后先求一遍可行流 之后再割掉t-s的边去求最大流 最终的答案即dinic+e[t >s].flow(就是求可行流的时候的流量) 然后来建图:引入源点S汇点T,n天一天一点,m个少女每人一点。S到每一天连一条 阅读全文
摘要:
并不会后缀自动机 只能写点部分分 但是感觉好坑啊 前15 刚开始敲hash 然后 当然就wa死了 应该是数太多太容易重复了吧 trie树n^2logn应该可以水过去吧(打挂hash就没写) 发现叶子只有10个 那么把所有链都搞出来,求不同的子串 用后缀数组维护一下 所有串-height和 10^2* 阅读全文
摘要:
没有权限号就只能对拍了 我们令?代表的T值=0,然后设出这样一个式子 这样一来,只要T和S在j位置匹配,当且仅当Dj=0,然后我们将这个式子拆开,变成下面那样 思路大概就是这样 最后发现答案应该是在ans[lens2-1] ans[lens1-1]之间的 翻转字符用FFT优化是一种常见策略 代码: 阅读全文
摘要:
题解: 树剖就是裸题吧 当然也可以用差分来实现 阅读全文
摘要:
https://www.luogu.org/problemnew/show/P3250 [HNOI2016]网络 阅读全文
摘要:
题意: 强制在线 1.查询树上两点间权值第k小 2.连接两棵树 题解: 首先这题数据不得不吐槽 数据数字大小都是超过1e7的??? 洛谷上又不能下载数据又只能显然re的 对拍了半天也没搞出来错(加上生成器还很难写) 查找第k大显然可以用主席树 而连接两棵树又是lct 考虑一下怎么搞,lct显然是不能 阅读全文
摘要:
https://www.luogu.org/problemnew/show/P2522 题解: 显然和前一篇题解几乎一样 加上一个容斥就可以了 阅读全文
该文被密码保护。 阅读全文
摘要:
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1695 第一道莫比乌斯反演 感觉很巧妙的就是利用了F(x)=(n/x)*(m/x) 之后的那个去重也挺不错的 代码: (原题要加个0特判没写) 感觉很巧妙的就是利用了F(x)=(n/x)*(m/x) 之后 阅读全文
摘要:
题解: 二分答案+最大流 首先二分答案天数x,然后对每个点建立x个点 对相连的两个点ai-bi+1,bi-ai+1连边,流量为1 然后ai-ai+1连边INF 如果最大流达到,那么就满足了条件 代码: 阅读全文
摘要:
摘自http://blog.csdn.net/qq_24451605/article/details/47126143 1.我们利用一条有向边<i,j>,来表示选i的情况下,一定要选j; 2.用i表示某个点是true,那么i'表示某个点是false 3.因为限制的两两之间的关系,所以我们可以通过逻辑 阅读全文
该文被密码保护。 阅读全文
摘要:
http://blog.csdn.net/acdreamers/article/details/8997459 题目:http://poj.org/problem?id=1222 题意:5*6矩阵中有30个灯,操作一个灯,周围的上下左右四个灯会发生相应变化 即由灭变亮,由亮变灭,如何操 作使灯全灭? 阅读全文
摘要:
题解: 容易发现这应该是个2-sat 发现除了x每个点都只有两个点 x<=8 是特判 怎么判? 最暴力的是3^8枚举一下 考虑把它也搞在2-sat上,那么只需要枚举它一定不是a,一定不是b就可以了(c不用枚举了因为那两种包含了所有情况了) 这样复杂度就是2^8*m的 然后就变成了2-sat输出方案 阅读全文
该文被密码保护。 阅读全文
摘要:
链接:https://www.luogu.org/problemnew/show/P3702 题解: 碰到计数题都要想想容斥 就跟碰到最大值最小要想想二分一样 考虑没有一个数是质数 那就确定了每一个数的取值范围 那么dp方程很显然 然后构造矩阵来优化转移 可以发现每个决策时一样的 所以矩阵可以一列一 阅读全文
摘要:
链接:https://www.luogu.org/problemnew/show/P1939 题解: 矩阵优化dp模板题 搞清楚矩阵是怎么乘的构造一下矩阵就很简单了 代码: 阅读全文
摘要:
题目: LYK loves graph(graph) Time Limit:2000ms Memory Limit:128MB LYK喜欢花花绿绿的图片,有一天它得到了一张彩色图片,这张图片可以看做是一张n*m的网格图,每个格子都有一种颜色去染着,我们用-1至n*m-1来表示一个格子的颜色。特别地, 阅读全文
摘要:
这东西刚开始学觉得很显然是对的但是又挺奇怪的 题意: 给一张图,有k个特殊点,问最少用多少边将这些点连起来(k<=10,n<=100) 题解: 令dp[i][j]表示以i点为根(因为路径一定是一颗树),扩展出状态j 那么转移方程就是dp[i][j]=min(dp[i][k]+dp[i][j^k]); 阅读全文
摘要:
链接:https://www.luogu.org/problemnew/show/P3959 题解: 考试的时候完全没掌握状压dp。。。这么水的题目。。 显然可以用f[i][s]表示当前走了i步状态为s 那么转移就枚举剩余的子集(补集的子集) 然后判断一下连通性就好了 这样的话是n^3*3^n(好像 阅读全文
摘要:
链接:https://www.luogu.org/problemnew/show/P3195 题解: dp方程很显然 然后会发现这个是可以用斜率优化的 代码: 代码挺简单的,改一下子函数的模板就好了 阅读全文
摘要:
题解: dp很容易想 f[i][j][s]表示匹配到了i点 对应点为j点,状态为s 那么这样的时间复杂度为(3^n*n^2) 然后会发现这其实可以转化为可以重复利用元素的子集卷积 http://www.cnblogs.com/yinwuxiao/p/8471250.html 因为可以发现那些一定是不 阅读全文
摘要:
因为小星星那题才知道有这么个东西。。 下面这段从uoj复制的:http://liu-runda.blog.uoj.ac/blog/2360 题目 给出f[0..(2n)−1],g[0..(2n)−1]f[0..(2n)−1],g[0..(2n)−1],求h[0…(2n)−1]h[0…(2n)−1], 阅读全文
摘要:
第一次看斜率优化dp http://www.cnblogs.com/ka200812/archive/2012/08/03/2621345.html 简略代码: 阅读全文
摘要:
题解: 虽然知道有点问题但是并没有debug出来 发现错误了。。相同元素的处理有错误 网上题解大都是分块。。(hn怎么道道分块) 用最普通的思路,可以枚举每个点作为最小值,向左向右延伸 但是多组询问显然我们是要去优化询问过程的 有一种方法就是先找出最大值 (其实也可以是随意一个位置吧,但yy一下应该 阅读全文
摘要:
题解: 刚开始没有仔细看题目。。 后来发现障碍是每行每列有且只有一个 那么其实会发现这就是一道错排的题目 f[i]=(n-1)*(f[i-1]+f[i-2]) 阅读全文
摘要:
题解: 后缀数组 刚开始以为hash后来发现怎么样都只能n2 两个串连在一起中间加入分隔符 枚举每个点作为最小值 分为前半段和后半段 每次像dp一样扩展就可以了 阅读全文
摘要:
链接:https://www.luogu.org/problemnew/show/P3763 题解: 挺水的一题后缀数组 枚举每一个开头用后缀数组判断能否在3次内匹配完 阅读全文
摘要:
题解: 一道简单的树形dp(维护最长路和次长路即可) n2就可以通过 枚举删除哪一条边 那么最长的只有可能是两颗树的直径和经过那条边的路径 阅读全文
摘要:
题解: 这种xor的题目要考虑分解成二进制在trie树搞 但是这题发现没法再trie树上,只能一位一位考虑 然后考虑用前缀和表示 每个数是sum【x】-sum【y-1】 然后枚举每一位1的个数,是奇数最终这一位就是1,否则就是0 然后枚举每一位,考虑这一位的数是什么,再考虑一下前面的减法有没有退位 阅读全文
摘要:
显然是可以dp的 可以用矩阵优化一下 (省选的dp好多都是用矩阵优化) 阅读全文
摘要:
链接: https://loj.ac/contest/6/problem/1 题解: 显然是可以dp的 同一颜色的之间搞成一个区间 o(n2)的dp 显然这个是可以用前缀和优化的就是o(n)的了 阅读全文