08 2020 档案
摘要:xg 题意 给了一个矩阵,其中k个点可以放“车”。不同车不能放同一行和同一列。 求最大匹配和重要点的个数。重要点为,若这个点不放点,则就不能放尽可能多的车。 思路 最大匹配好求。为ans。 重要点的个数,对于这k个点。第i个点不存在的话,若最大匹配sum小于ans,则该点为重要点。 #include
阅读全文
摘要:xg 题意 n个人,m个关系。对于第i个关系,x互相认识y。 问能否把n个人分成两组,使得一组里的人互相不认识。 如果能,则要开ans个房间,每个房间两人,使得每个房间里的人互相认识。 思路 第一个问题就是01染色判断能否染色成功。 第二个问题裸最大匹配 #include <iostream> #i
阅读全文
摘要:xg 题意 给了一个4*4矩阵。图中有的点代表山。要求在这个矩阵上放碉堡,碉堡可以上下,左右攻击所能看到的碉堡,山可以阻挡两边碉堡互相看到,且碉堡不能放到山上。问最多可以放多少个碉堡。 思路 数据范围小可以暴力。 但是用最大匹配解: 在矩阵上的最大匹配问题,可以转化为x,y坐标的最大匹配。 因为碉堡
阅读全文
摘要:跑完后 c[x]表示x所在的强连通分量编号。 vector数组scc[i]记录了编号为i的强连通分量的所有节点。 共cnt个强连通分量 int dfn[maxn],low[maxn],sta[maxn],c[maxn],ins[maxn]; vector<int>scc[maxn]; int num
阅读全文
摘要:xg 题意 N(2<N<100)各学校之间有单向的网络,每个学校得到一套软件后,可以通过单向网络向周边的学校传输,问题1:初始至少需要向多少个学校发放软件,使得网络内所有的学校最终都能得到软件。2,至少需要添加几条传输线路(边),使任意向一个学校发放软件后,经过若干次传送,网络内所有的学校最终都能得
阅读全文
摘要:xg,卡时间过的 题意 给了一张n个点m个边的无向图,Q个操作,第i次操作插入边x,y。对于每次插入边,输出桥的个数。 思路 tarjan+缩点后,形成一个树,桥的个数即为点的个数cnt-1. 对树进行倍增预处理。 每次操作插入x,y点后,log查找到x和y的lca,把x,y到lca路径上的点进行标
阅读全文
摘要:xg 测板子 #include <iostream> #include <cmath> #include <cstdio> #include <cstring> #include <string> #include <map> #include <iomanip> #include <algorit
阅读全文
摘要:给一个无向图,输出欧拉图顺序 //答案存在了ans数组,abs[1-t] int sta[1000010],ans[1000010],vis[1000010]; int n,m,top,t; void euler() { sta[++top] = 1; while(top > 0) { int x
阅读全文
摘要:1、啥叫双连通,一个图,不存在割点,桥就是双连通。 这样的图有啥性质:从x到y一定存在至少两条不共边的路(可以共点)。 缩点是啥:把各各双连通的块划分成一个,产生一个新图(树,一定不成环)。 2、写法 1、先用tarjan求出来割边。 2、dfs给每一块双连通标号。 3、对于是桥的边,建一个新图,其
阅读全文
摘要:时间戳dfn,追溯值low。 1、找一个图的所有桥 void tarjan(int x,int in_edge) { dfn[x] = low[x] = ++num; for(int i = head[x];i;i = nextt[i]){ int y = ver[i]; if(!dfn[y]){
阅读全文
摘要:洛谷那题solve函数不更新s的值也是可以过,数据有点弱 题意 求次小生成树。 思路 1、求最小生成树。 2、bfs预处理f和g函数,其中f(x,i)为x的第2k,g(x,i,0),g(x,i,1)为x到x+2i的最大值和,次大值。更新过程画画即可。 3、对于任意非树边,求出该两点在树上的最大值和次
阅读全文
摘要:题意 两个人轮流剪纸片,直到有一个人剪出1*1的方格就算这个人赢了。然后给出纸片的长和宽,求先手会赢还是会输。 思路 对于任何一个人,都不会先剪出1*n或者n*1,应该这样就必败了。 如果拿到(2,2)(2,3)(3,2),则必赢。 然后直接遍历2-x-i即可。sgfun(i,y)和fun(x-i,
阅读全文
摘要:xg 题意 f1为x,f2为y,fi=fi-1 + fi+1,求fn为多少(n=2e9) 思路 这题不用矩阵快速幂也可。 换算式子为fi = fi-1 - fi-2。 则易看出令f1 = {x,y},矩阵A为{{0,-1},{1,1}}; 答案即为f1 * An-1,因为存在负数,负数取模为(a%m
阅读全文
摘要:xg 题意 给你一个树,根节点为1,让你切点一些边使得根节点到达不了叶子节点。 且最小化砍断的道路的最长长度,砍断的道路总和不能超过m。 思路 答案具有单调性,所以明显用二分。 f[x]为x到达不了叶子节点所需要砍断的最短总路径。 对于答案k, 若x到y的距离z大于k(x为父亲,y为儿子),则对于这
阅读全文
摘要:xg 题意 有一棵二叉苹果树,如果数字有分叉,一定是分两叉,即没有只有一个儿子的节点。这棵树 共N个节点,标号1至N,树根编号一定为1。 我们用一根树枝两端连接的节点编号描述一根树枝的位置。一棵有四根树枝的苹果树,因为 树枝太多了,需要剪枝。但是一些树枝上长有苹果,给定需要保留的树枝数量,求最多能留
阅读全文
摘要:乘法逆元计算等比数列的求和公式 题意 给两个正整数A和B,计算AB的所有因子和的值对9901取模 思路 约数和公式 S=(1+p1+p1^2+.....+p1^k1)*(1+p2+p2^2+.....+p2^k2)*......*(1+pn+pn^2+pn^3+.....+pn^kn); 等比数列公
阅读全文
摘要:看了两天,poj还卡溢出。 题意 给你一个数L(2e9),找到最小的连续8组成的数且是L的倍数。没有则输出0。 思路 首先8个连续的数可以表示为(10x -1)*8/9。 (10x -1)*8/9 = L*k(k为任意整数) (10x -1)*8 = L*k*9 令d = gcd(8,L)。 则两边
阅读全文
摘要:细节 题意 给你一棵无向树,问你最少用多少个点可以覆盖掉所有其他的点。 • (一个点被盖,它自己和与它相邻的点都算被覆盖) 思路 状态: 选他,选他儿子,选他父亲都对子树答案有影响。 设: dp[i][0]:选点i,并且以点i为根的子树都被覆盖了。 dp[i][1]:不选点i,i被其儿子覆盖 dp[
阅读全文
摘要:xg 题意 给相同长度为n的两个数组a,b。其中包括1-n和n个0。 一次操作:可以把a中任意一个数放到b的最右面,然后把b的最前面一个数放到a中。 问最少多少次操作可以使得b数组为1,2,3.....n。 思路 很明显a数组不影响结果,只需要分析b数组即可。且最多只需要2*n次操作。 如果1-n都
阅读全文
摘要:题意 给一颗无根树,其节点被染成黑白两色。对于其任意一个节点 vv,我们要求出某一个包含 vv 的联通块,使得联通块内白色节点 – 黑色节点数量最大。 思路 先用一个简单的树形dp自下而上的求出对于根rt,其最大差值为mx[rt]。 状态转移方程为:mx【x】 = Σy为x的子节点 max(mx【y
阅读全文

浙公网安备 33010602011771号