链接:https://codeforces.com/contest/1269/problem/D 题意:给一个不规则的网格,在上面放置多米诺骨牌,多米诺骨牌长度要么是1x2,要么是2x1大小,问最多放置多米诺骨牌的数量. 思路:首先这是一个结论题,对每个方格进行染色,一个方格染黑色,周围邻近的就染白色,答案就是黑色方格数量和白色方格数量的最小值.这个结论可以用二分图进行证明:把问题抽象成最大二分图匹配,每两个点之间连一条边.一个格子和周围格子连一条边,如果一个格子周围的还没被匹配,那么匹配数+1…
CodeForces - 50A Domino piling (贪心+递归) 题意分析 奇数*偶数=偶数,如果两个都为奇数,最小的奇数-1递归求解,知道两个数都为1,返回0. 代码 #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <sstream> #include <set> #include <map…
题目 中文题目,不解释: BZOJ传送门 分析 这道题BZOJ上也只有几个人过-奇怪了 下面是正解 原问题为一个二分图边染色问题.首先考虑最好情况.最理想情况的分配为:设一个点xxx的度为dgr(x)dgr(x)dgr(x).那么若dgr(x)dgr(x)dgr(x)为ttt的倍数,那么与xxx相连的边恰好平均分配给ttt个公司,每个公司dgr(x)/tdgr(x)/tdgr(x)/t个:如果不是ttt的倍数,那么要尽量分的均匀,即max(ax(c))−min(ax(c))=1max(a_x(c…
题目描述 给出一个长度为 $\frac{n(n+1)}2$ 的直尺,要在 $0$ 和 $\frac{n(n+1)}2$ 之间选择 $n-1$ 个刻度,使得 $1\sim \frac{n(n+1)}2$ 中任意一个长度都可以由某两个刻度(包括 $0$ 和 $\frac{n(n+1)}2$ )之间的距离表示出来.问是否有解. $n\le 2500$ 题解 结论题 结论:当且仅当 $n\le 3$ 时有解. 神TM结论... 证明: 由于只有 $C_{n+1}^2=\frac{n(n+1)}2$ 种选…
题目描述 给出一张 $n$ 个点 $m$ 条边的无向连通图,每条边的边权为1.对于每个点 $i$ ,问是否存在另一个点 $j$ ,使得对于任意一个不为 $i$ 或 $j$ 的点 $k$ ,$i$ 到 $k$ 的最短路与 $j$ 到 $k$ 的最短路之差为定值.求所有满足条件的点 $i$ . $n\le 100000,m\le 200000$ 题解 结论题+Hash 结论:$i$ 满足条件,当且仅当满足三个条件之一: 1. 点 $i$ 的度数为1:2. 点 $i$ 与一个度数为1的点相连:3. 存…
题目描述 给出两个长度为 $n$ 的排列 $A$ 和 $B$ ,如果 $A_i>A_{i+1}$ 则可以交换 $A_i$ 和 $A_{i+1}$ .问是否能将 $A$ 交换成 $B$ . 输入 输入数据第一行包含一个正整数 $n$ . 接下来两行每行 $n$ 个正整数,分别描述排列 $A$ 和排列 $B$ . 输出 对于每组数据,如果存在这样的指令序列,输出“YES”,否则输出“NO”(引号不输出,请注意大小写). 样例输入 54 1 2 5 31 2 4 3 5 样例输出 YES 题解 结论题…
题目描述 Zy皇帝面临一个严峻的问题,两个互相抵触的贸易团体,YYD工会和FSR工会,他们在同一时间请求在王国各个城市开办自己的办事处.这里有n个城市,其中有一些以双向马路相连,这两个工会要求每个城市应该做到: 1:有这个工会的办事处或 2:和另外一个符合1条件的城市有马路直接相连.(也就是每个城市必须是YYD的公会,但是又和FSR的公会的城市相连,或者是FSR的,和YYD的城市相连,或者和两个工会的城市相连)但是Zy怀疑不正当的竞争,他担心一个城市有两个工会的办事处,(就是说一个城市不能有两个…
题意 题目链接 $Q$组询问,每次给出$[x, y]$,定义$f(x, y)$为计算$(x, y)$的最大公约数需要的步数,设$i \leqslant x, j \leqslant y$,求$max(f(i, j))$,以及$max(f(i, j))$不同的数对$(i, j)$的个数 Sol 结论题Orz 设$f(x, y)$表示$(x, y)$辗转相除需要的步数,$fib(i)$表示第$i$个斐波那契数 常识:$f(fib[i], fib[i+1]) = i$. 定义一个数对是“好的”,当且仅…
一道结论题:如果最小生成树和最大生成树之间存在fib数,成立.不存在或者不连通则不成立.由于是01图,所以这个区间内的任何生成树都存在. 证明:数学归纳?如果一棵树没有办法再用非树边0边替代1边了,那他就是最小生成树.如果一棵生成树大于最小生成树,那么他显然存在可以被替换的1边,否则会与最小矛盾.最大生成树存在(与最小生成树相等时显然结论成立),那么他一定可以有可以替换的边,所以所有区间内的生成树都存在. 吐槽:我一开始以为要依据fib的性质合并块..研究好久..冏. #include<iost…
5578 咸鱼  时间限制: 1 s  空间限制: 128000 KB   题目描述 Description 在广袤的正方形土地上有n条水平的河流和m条垂直的河流,发达的咸鱼家族在m*n个河流交叉点都建立了城市.然而,由于河流有单一的流向,而咸鱼们却没有发达的下体,所以只能顺流而下.两两河流之间的流向互不影响. 现在,咸鱼冒险家Sorey决定出发去看看这个世界,但是Sorey担心自己可能被困在某个城市而无法回归自己的家乡.于是Sorey夜观天象,搞清楚了每条河的流向,他想请你帮他判断他的旅途是否…
BZOJ_1367_[Baltic2004]sequence_结论题+可并堆 Description Input Output 一个整数R Sample Input 7 9 4 8 20 14 15 18 Sample Output 13 HINT 所求的Z序列为6,7,8,13,14,15,18. R=13 神题.有一个结论:最优解一定是把序列分成m块,每块取中位数,并使得取出的序列递增. 不会证?https://wenku.baidu.com/view/20e9ff18964bcf84b9d…
Description 小 Z 是一个不折不扣的 ZRP(Zealot Round-game Player,回合制游戏狂热玩家), 最近他 想起了小时候在江南玩过的一个游戏.     在过去,人们是要边玩游戏边填词的,比如这首<菩萨蛮>就是当年韦庄在玩游戏时填 的:     人 人 尽 说 江 南 好, 游 人 只 合 江 南 老.     然而我们今天不太关心人们填的词是什么,我们只关心小 Z 那时玩过的游戏.游戏 的规 则是这样的,给定 N 堆石子,每堆石子一开始只有 1 个.小 Z 和他…
题目描述 给出一棵n个点的树,求有多少个si使得整棵树可以分为n/si个连通块. 输入 第一行一个正整数N,表示这棵树的结点总数,接下来N-1行,每行两个数字X,Y表示编号为X的结点与编号为Y的结点相连.结点编号的范围为1-N且编号两两不同. 输出 一行一个整数Ans,表示所求的方案数. 样例输入 6 1 2 2 3 2 4 4 5 5 6 样例输出 3 题解 结论题 结论:k可行当且仅当子树大小是k的倍数的节点数有n/k个. 这结论好像挺显然的(只要你能想出来...) 然后就做完了...先预处…
题目描述 给出一个网格图,其中某些格子有财宝,每次从左上角出发,只能向下或右走.问至少走多少次才能将财宝捡完.此对此问题变形,假设每个格子中有好多财宝,而每一次经过一个格子至多只能捡走一块财宝,至少走多少次才能把财宝全部捡完. 输入 第一行为正整数T,代表数据组数. 每组数据第一行为正整数N,M代表网格图有N行M列,接下来N行每行M个非负整数,表示此格子中财宝数量,0代表没有 输出 输出一个整数,表示至少要走多少次. 样例输入 1 3 3 0 1 5 5 0 0 1 0 0 样例输出 10 题解…
Gem bzoj-1369 Baltic-2003 题目大意:给你一棵树,让你往节点上添自然数,使得任意相邻节点的数不同且使得权值最小. 注释:n为结点个数,$1\le n\le 10^3$. 想法:呵呵,学长一直在骂结论题,我一直觉得没啥.. ... 知道tm碰见这玩意儿,卧槽?! 树上相邻节点不同色,颜色个数最小值至多为logn. 最后,附上丑陋的代码... ... #include <iostream> #include <cstring> #include <cstd…
题目链接:https://ac.nowcoder.com/acm/contest/907/A 思路:结论题,当做2n条直线,参考资料https://blog.csdn.net/qq_34131212/article/details/78043679 AC代码: #include<iostream> #include<cstdio> #include<string> using namespace std; int main() { long long n; while(…
链接: https://codeforces.com/contest/1269/problem/D 题意: You are given a Young diagram. Given diagram is a histogram with n columns of lengths a1,a2,-,an (a1≥a2≥-≥an≥1). Young diagram for a=[3,2,2,2,1]. Your goal is to find the largest number of non-ove…
题目链接: http://codeforces.com/problemset/problem/173/B 题意: 给你一个n*m的地图,现在有一束激光从左上角往左边射出,每遇到‘#’,你可以选择光线往四个方向射出,或者什么都不做,问最少需要多少个‘#’往四个方向射出才能使关系在n行往右边射出. 题解: 以行和列建二分图,如果str[i][j]=='#',则从i节点到j节点建一条双向边,权值都为1.然后对二分图跑一遍最短路. 代码: #include<iostream> #include<…
原文链接https://www.cnblogs.com/zhouzhendong/p/CF1009G.html 题目传送门 - CF1009G 题意 给定一个长度为 $n$ 的字符串 $s$ .并给定 $m$ 条限制,第 $i$ 条限制声明了第 $i$ 个位置的字符可以取的值.如果没有声明表示可以任意取值. 求一个字符串 $s$ 的排列,在满足 $m$ 条限制的同时,使得字典序最小.如果不存在满足限制条件的字符串,则输出 $-1$. $n,m\leq 10^5$,字符集 $ = \{'a','b…
题目链接:http://codeforces.com/problemset/problem/353/A 题目意思:通俗地说,就是当上下两半的数的总和不完全是偶数时,通过上下调换某些骨牌来使这两半的数和变成偶数,统计并输出调换多少次:如果不行,则输出-1. 其实调换的次数最多只有1次,而实行调换的操作必须符合上下对应的数满足一奇一偶的条件,否则是白做的.如果调换一次之后,也不能使得上下两半的和都为偶数,那么就没必要继续判断了,直接输出“-1”. #include <iostream> #incl…
这本来一个挺简单的题呢,结果让我给想复杂了,二分图就是把图分成了两部分,然后不同颜色各一边,肯定是满足题目中说的边和点的条件的,真是犯二了.. 代码如下: #include<iostream> #include<cstring> #include<cstdio> #include<vector> #include<queue> #include<map> using namespace std; #define N 100010 ve…
题目链接:Beautiful Graph 题意:给定一张无向无权图,每个顶点可以赋值1,2,3,现要求相邻节点一奇一偶,求符合要求的图的个数. 题解:由于一奇一偶,需二分图判定,染色.判定失败,直接输出0.成功的话,统计下奇数(cnt1)和偶数(cnt2)顶点个数,只有奇数有两种,也就是说有$2^{cnt1}$种,但是可以把奇数和偶数顶点翻转,奇变偶,偶变奇,即最后有$2^{cnt1}+2^{cnt2}$种,注意此图可能不连通,各个图之间的答案数要相乘. #include <set> #inc…
<题目链接> 题目大意: 给你一个无向图(该无向图无自环,且无重边),现在要你给这个无向图的点加权,所加权值可以是1,2,3.给这些点加权之后,要使得任意边的两个端点权值之和为奇数,问总共有多少种可能?结果mod 998244353. 解题分析: 整张图的所有顶点赋权之后,一定分为奇.偶两部分点集,并且,要想使的该图满足条件,任意边的两个端点的奇偶性应该是不同的,所以我们可以用DFS对图进行二分图染色,将图分为两个部分,需要注意的是,该图未必连通.然后就是DFS的过程中,如果下一个点已经染过色…
题目链接 \(Description\) 给出一个n个点m条边的无向图. 你每次需要选择两个没有边相连的点,将它们合并为一个新点,直到这张图变成了一条链. 最大化这条链的长度,或输出无解. n<=1000,m<=10000 \(Solution\) 不难发现无解当且仅当存在奇环. 归纳证明:有一个奇环,若与环外一个点合并,这个奇环仍存在:若环内两个点合并,合并两点两边的边数是奇数,合并之后还是至少会有一边边数是奇数,是一个奇环(最后变成一个三角形).这样怎么合并都会剩下一个奇环. 若不存在奇环…
Long time ago, there was a great kingdom and it was being ruled by The Great Arya and Pari The Great. These two had some problems about the numbers they like, so they decided to divide the great kingdom between themselves. The great kingdom consisted…
题意:给定上一个n*m的矩阵,你从(1,1)这个位置发出水平向的光,碰到#可以选择四个方向同时发光,或者直接穿过去, 问你用最少的#使得光能够到达 (n,m)并且方向水平向右. 析:很明显的一个最短路,但是矩阵有点大啊.1000*1000,普通的肯定要超时啊,所以先通过#把该该图的行和列建立成二分图, 然后再跑最短路,这样就简单多了. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <c…
题目链接:http://codeforces.com/problemset/problem/351/B 题意: 给你一个1到n的排列a[i]. Jeff和Furik轮流操作,Jeff先手. Jeff每次会交换a[i]>a[i+1]的两个数. Furik每次有1/2的概率交换a[i]<a[i+1]的两个数,有1/2的概率交换a[i]>a[i+1]的两个数. 当这个排列变成升序时,游戏停止. 问你操作数的期望. 题解: 假设原序列中有t个逆序对. 那么将这个序列变成升序,就是将这t个逆序对一…
基本思想是利用涂色的方法,用黑白两种颜色把方格全部涂色,相邻方格不同色. 方法1:基于二分图匹配的思想 一开始也想过二分图匹配,但数据量太大,就放弃了这种想法.其实根据增广路的定义.如果白色的方格的数量小于黑色方格数量,那么当白色方格还没有匹配完时,一定有黑色的方格没有匹配.那么从该白色的方格出发,一定可以走出一条增广路到达黑色的方格.即数量少的颜色一定可以匹配完.那么只要求出二者数量的最小值即可. #include <bits/stdc++.h> using namespace std; ;…
题目链接 n个点, m条边, 问最少加几条边可以出现一个奇环, 在这种情况下, 有多少种加边的方式. 具体看代码解释 #include<bits/stdc++.h> using namespace std; #define pb(x) push_back(x) #define ll long long #define mk(x, y) make_pair(x, y) #define lson l, m, rt<<1 #define mem(a) memset(a, 0, sizeo…
来源 最小点集覆盖==最大匹配. 首先,最小点集覆盖一定>=最大匹配,因为假设最大匹配为n,那么我们就得到了n条互不相邻的边,光覆盖这些边就要用到n个点. 现在我们来思考为什么最小点击覆盖一定<=最大匹配. 任何一种n个点的最小点集覆盖,一定可以转化成一个n的最大匹配.因为最小点集覆盖中的每个点都能找到至少一条只有一个端点在点集中的边. 如果找不到则说明该点所有的边的另外一个端点都被覆盖,所以该点则没必要被覆盖,和它在最小点集覆盖中相矛盾. 多个覆盖点都只能选则同一个点组成匹配的情况是不会出现…