01 2017 档案
摘要:这题好难啊 为什么dp都这么难 计数问题 好像完全不会啊 这是wc2015 陈老师讲的题 我们可以先考虑把这个点集拆成多个强连通分量 如果强连通分量的数量大于2 那么这一个生成子图对答案是没有贡献的 对于两个强连通分量从 拆出来的那一个 向其他的连边 是不会把两个强连通分量缩在一起的 考虑容斥??
阅读全文
摘要:这题 我承认 我过于NAIVE了 我把不能走回边 搞成了 走到一个点必须休息一下。。。 发现它的边数非常少 所以 按边建立矩阵 就可以十分科学的完成本题 矩乘我一定要封装进p,q 1 #include<bits/stdc++.h> 2 #define mod 45989 3 #define ll l
阅读全文
摘要:这场我tm 爆零了!!!!! 发现这题是一个基环树森林 拓扑排序去掉 不在环上的节点以后 只剩下一个环 那么这题就成了 环上的覆盖问题 算法1: 倍增 嗯。。。我好想不会写 算法2: 选取k个点 每一次 走k个点 那么每一次 就只会走 [n/k]步 可以先预处理出每一步 走了以后 你能走到哪里 那么
阅读全文
摘要:好玩的数字游戏 TK在虐题的同时,也喜欢玩游戏。现在,有这样的一个游戏,规则是这样的:先随机给出一个数字N,然后你在操场上把1到N的所有数字写成一排,就像这样:123456789101112131415….接着你在每个数字前面添上加减号,每逢排在奇数位上的数字,就写上加号;每逢排在偶数位上的数字,就
阅读全文
摘要:高妙的算法—— 可以构造出形如: 1 2 4 8 16 32 64 3 6 12 24 48 9 18 36 27 54 的矩阵 相邻的数不能被同时选到 因此 将每一个数构造进矩阵 然后状态压缩dp 根据乘法原理 就可以 得出所有的方案
阅读全文
摘要:1 ll exgcd(ll a,ll b,ll &x,ll &y) 2 { 3 if(b==0) 4 { 5 x=1;y=0;return a; 6 } 7 ll r=exgcd(b,a%b,x,y); 8 ll t=x; 9 x=y; 10 y=t-a/b*y; 11 return r; 12 }
阅读全文
摘要:1 #include <bits/stdc++.h> 2 #define N 1500 3 #define inf 999999999 4 using namespace std; 5 int a[N],bs[N],nx=0,ny=0,k; 6 int linky[N],lx[N],ly[N],sl
阅读全文
摘要:标题就很233的题目 数据结构滑稽题 在线算法:: 可并堆维护 太难写了 表示不爱 离线算法::带权并查集将操作离散到连续的区间上(超银河英雄传说 并查集基础训练题) 线段树处理之 比较simple 1 #include <bits/stdc++.h> 2 #define N 300010 3 us
阅读全文
摘要:动态开点线段树+树链剖分 对于每一种宗教信仰都开一颗线段树 空间: QlogN 即每一次修改都只会改变logN 个点 时间 O(QlogN) naive题 边没有开两倍 QAQ 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 inline
阅读全文
摘要:大意: 给定一张图 求图上一个点集的最小生成树。 考虑状态压缩 状态 dp[i][j] 为 当前走在 点i 状态为j 每一位表示 是否已在生成树中 于是 spfa 过程可以更新 -> 在每一个节点上均可考虑 移动 或者 与在该点上的其他状态进行合并 根据题目的描述 可以 微调 dp 过程 为什么我的
阅读全文
摘要:一开始图是森林 考虑树上两个节点间查询路径上k 大值 可维护两个节点到这棵树上根节点的权值线段树 这里可以使用可持久化思想 利用每一个点的父亲来维护这个点上的权值线段树 那么两者路径上的权值线段树 即 Tree[x]+Tree[y]-Tree[lca(x,y)]-Tree[fa[lca(x,y)]]
阅读全文
摘要:对于每一条边(x->y) 费用为z: S-> y 流量为1 费用为z 表示必须经过此边 x-> y 流量为inf 费用为z 表示除此以外还可以随意走动 对于每一个点 x x-> T 流量为 x的出度 费用为0 x-> 1 流量为 inf 费用为0 对应题目中的初始点 可以返回 另看到有很多人 都只跑
阅读全文

浙公网安备 33010602011771号