摘要:
基环树的最大独立集 正解就是从环上找相邻两点s,t,求出分别以s和t为根,求max(dp[s][0],dp[t][0]) 这就是答案。因为s和t不能同时选,那只要有一个不选就行。 我的解法是单独求基环树上的点。。。。。很捞 我的写法 #include<iostream> #include<strin 阅读全文
摘要:
https://vjudge.net/contest/411012#problem/B 这sb题真的就nm离谱 割点板子题,就是建图比较sb,具体看代码吧 #include <iostream> #include <vector> #include <cstring> #include <cstdi 阅读全文
摘要:
持续更新中。。。。 Network of Schools http://poj.org/problem?id=1236 给你一个有向图,有环的 1.有个超级源点s,s最少连几个点时,可以从s走到图上任意一点 2.最少添加几条边可以把图变成一个强连通分量 ans1 缩点之后,入度为0 的点的个数 an 阅读全文
摘要:
http://codeforces.com/problemset/problem/461/B 感觉这题有点玄学阿。。。。。怎么说呢。。。 状态1是x在有黑色的区域里面,状态0是只在白色区域里面,其实看一眼代码就懂了,一直想不出来我很难过。。。。 好菜呀,还要继续学树形dp才行阿 #include<i 阅读全文
摘要:
https://codeforces.com/problemset/problem/1322/C 快乐 核心在于 gcd(a,b) == gcd(a+b,a,b) 加法不会影响和的gcd,所以本质就不是那么多了 既然是gcd,那就枚举出左边尽可能不重合的右边权值的GCD吧, #include<ios 阅读全文
摘要:
https://codeforc.es/contest/1454/problem/E 看样例就能看懂题意,就是找基环树的环,然而我环找错了。。。。。。 我是sb,我要学图!!! #include<iostream> #include<cstring> #include<algorithm> #inc 阅读全文
摘要:
这个题很绕,记数字i前面有cns[i]个数字比他大,逆序对个数就是sigmi cns[i] 反转k次就是让cns[i] - k (i>=1 && i <= n) 而且cns[i]不能有负数 利用两个线段树维护一下,就是有点绕。。。。 #include<iostream> #include<cstri 阅读全文
摘要:
给一堆数字,每个数字找和自己异或最小的连接,现在求删除最少几个点能留下一棵树 就是分治搞树,第i位置都是0的之间有边,i位为1的数字之间有变,类似树形dp的分治一下就得出结论了, 第i为是1的要和第i为是0的连接,只能是i位为1的集合都消除了才可能,具体看代码吧,挺简单的。。。。 #include< 阅读全文
摘要:
这个问题的核心在于用线段树找最长的连续的1 的位置,其他就基本操作了,不是很难想,只是不好写而已,具体看代码吧,没什么巧妙的东西,和那个贪婪大陆一样 #include<iostream> using namespace std; typedef long long ll; const int max 阅读全文
摘要:
问的就是 每次给你区间 l--r,每次覆盖一种不同的颜色,查询l--r有多少种不同的颜色 这个问题本质是在问区间l--r有多少不同的区间,利用前缀和计算一下,具体看代码 #include<iostream> #include<queue> #include<cstring> using namesp 阅读全文