洛谷
pbihao
这个作者很懒,什么都没留下…
展开
-
【洛谷 1040】加分二叉树
【洛谷 1040】加分二叉树原创 2016-10-03 15:27:02 · 274 阅读 · 0 评论 -
【洛谷 1613】跑路
因为每一次只能走2的k次方步,所以我们先处理除 那些点之间可以直接通过走一次(即长度为2的k次方)能走到,实现嘛,有点类似Floyd跑传递闭包维护可达性,然后再随随便便跑一个最短路数据这么小floyd泡一泡就好了,唯一的坑点就是,我靠居然是有向图 #include #include #include #define maxn 10020 #define LL long long using na原创 2016-11-08 22:23:26 · 231 阅读 · 0 评论 -
【BZOJ 1084】最大子矩阵
本来一开始的想法是把m==1和m==2的情况分开讨论,也是能做的,现在一想。。。。 又是一个dp套路定义f[i][j][k]表示第一段扫到i第二段扫到j一共分为k个矩阵的方案数,然后就可以转移了,就想学长说的,想出dp定义,dp题就做完一半了#include #include #include #define Rep(i,a,b) for(int i=a;i<=b;i++) #define rR原创 2016-11-12 16:03:25 · 235 阅读 · 0 评论 -
【noip 2015】字串 dp
定义dp[k][i][j]表示用A串的前i个元素的其中k段来组成B串的前j个的方案数 首先考虑On4的转移: 1.A[i]!=B[j] 毫无疑问 f[k][i][j]+=f[k][i-1][j] 2.A[i]==B[j] 那么现在就用很多选择了,例如:第i个元素单独作为一段,或者说A[i-1]==B[j-1]的话还可以和前一个元素一起组成新的一段,然后以此类推就好了所以转移方程:f[k原创 2016-10-31 20:35:26 · 281 阅读 · 0 评论 -
【洛谷 1290】 欧几里德的游戏 博弈论
对于任意状态(x,y)如果x>=2*y则先手必胜。原因很简单,假设m=x%y,如果(y,m)是必胜状态,则先手只用取到y+m,由于yx>y只有一种决策,就是取y个,但是时间复杂度已经可以很轻松的承受了 #include #include #include #define LL unsigned long long #define sswap(a,b) (a^=b^=a^=b) using n原创 2016-11-14 10:21:06 · 471 阅读 · 0 评论 -
【洛谷2680】【BZOJ 4326】运输计划 lca+差分
某学长:这题啊,树剖啊,裸的,结果当我写了100+树剖,猛然发现,好像这个树剖除了求lca就没有任何卵用了,so,为毛不用倍增,不过还是有用,洛谷上时限卡的紧,倍增求lca根本不行,T的不要不要的,好在现在管理员把时限改过来了,可以放心使用了 思路嘛,就是二分答案,然后找出所有比二分出答案大的边,那么这些边一定是需要改进的对吧,也就是说需要改进的拿一条边一定是这些路径的一个交集,所以差分记录每一原创 2016-11-01 21:28:13 · 281 阅读 · 0 评论 -
【洛谷 1525】关押罪犯 并查集||二分+染色
一开始的想法就是二分最大值,然后将所有大于这个值的边建立起来,这样,边两头链接的端点一定不再同一个集合,直接二分图染色判断就好了; #include #include #include #include #define maxm 200020 #define maxn 40020 using namespace std; int n,m,head[maxn],tot,col[maxn],vis[原创 2016-11-14 16:57:58 · 231 阅读 · 0 评论 -
【洛谷】线段树 树状数组区间修改区间查询
在做一道整体二分的题目的时候遇到了这种区间修改区间查询的树状数组,感觉用起来手感不错就拿来了。证明的话,那其实不重要,会用就好了 #include #include #include #define maxn 500000 #define LL unsigned long long using namespace std; int n,m; LL a[maxn],sum[maxn],c1[max原创 2016-12-06 22:10:45 · 811 阅读 · 0 评论 -
【BZOJ 1257】[CQOI2007]余数之和sum
分析发现所有a/b=x....y 如果x相同的话y是一个等差数列于是可以利用等差求和,枚举x最多只枚举到根号n,然后再暴力枚举根号n 以下的数字,复杂度根号n #include #include #include #define LL long long using namespace std; LL n,k,ans,l; int main(){ scanf("%lld%lld",&n,&原创 2016-11-13 19:22:34 · 337 阅读 · 0 评论