题目描述 流行的跳棋游戏是在一个有m*n个方格的长方形棋盘上玩的.棋盘起初全部被动物或障碍物占满了.在一个方格中,'X'表示一个障碍物,一个'0'-'9'的个位数字表示一个不同种类的动物,相同的个位数字表示相同种类的动物.一对动物只有当它们属于同一种类时才可以被消去.消去之后,他们所占的方格就成为空方格,直到游戏结束.要消去一对动物的前提条件是:这对候选动物所在的方格必须相邻,或它们之间存在一条通路.棋盘上一个方格只和其上下左右的方格相邻.一条通路是由一串相邻的空方格组成.路的长度则是通路中空方…
题目 流行的跳棋游戏是在一个有mn个方格的长方形棋盘上玩的.棋盘起初全部被动物或障碍物占满了.在一个方格中,'X'表示一个障碍物,一个'0'-'9'的个位数字表示一个不同种类的动物,相同的个位数字表示相同种类的动物.一对动物只有当它们属于同一种类时才可以被消去.消去之后,他们所占的方格就成为空方格,直到游戏结束.要消去一对动物的前提条件是:这对候选动物所在的方格必须相邻,或它们之间存在一条通路.棋盘上一个方格只和其上下左右的方格相邻.一条通路是由一串相邻的空方格组成.路的长度则是通路中空方格的数…
题目 给定M个二元组(A_i, B_i),求X_1, ..., X_N满足:对于任意(A_i, B_i),有|X_{A_i} - X_{B_i}| = 1成立. 分析 显然,对于二元组(x,y),X_{x}.X_{y}相差1, 而对于二元组(x,y)和(y,z),X_{x}.X_{y}相差1,X_{z}.X_{y}相差1,而X_{x}和X_{z}有可能相等,有可能差2. 我们对于相差1的染不同的颜色,否则染相同的颜色,有冲突就输出"NO". 发现,因为只有两种颜色,那么一种颜色输出1,…
题解 分析 因为只有奇数和偶数配对才有可能得出质数, 暴力求出每一对\(a_i+a_j\)为质数,将其中的奇数想偶数连一条边. 二分图匹配,匈牙利算法. #include <cmath> #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> #include <queue> const…
题目描述 数据范围 解法 枚举根之后,使用大除法. 代码 #include<stdio.h> #include<iostream> #include<string.h> #include<math.h> #include<algorithm> #define ll long long using namespace std; const char* fin="equation.in"; const char* fout=&qu…
题目描述 数据范围 解法 由于大于4的素数只有可能由奇数和偶数的和得出. 所以根据数的奇偶性可以分出两类数奇数和偶数. 奇数之间不会相互匹配,偶数之间也不会相互匹配. 那么原问题转化为二分图最大匹配. 网络流即可. 代码 #include<stdio.h> #include<iostream> #include<string.h> #include<math.h> #include<algorithm> using namespace std;…
题目描述 解法 搜索. 代码 #include<stdio.h> #include<iostream> #include<string.h> #include<math.h> #include<algorithm> using namespace std; const char* fin="mahjong.in"; const char* fout="mahjong.out"; const int inf=…
JZOJ [NOIP2016提高A组集训第16场11.15]兔子 题目 Description 在一片草原上有N个兔子窝,每个窝里住着一只兔子,有M条路径连接这些窝.更特殊地是,至多只有一个兔子窝有3条或更多的路径与它相连,其它的兔子窝只有1条或2条路径与其相连.换句话讲,这些兔子窝之前的路径构成一张N个点.M条边的无向连通图,而度数大于2的点至多有1个. 兔子们决定把其中K个兔子窝扩建成临时避难所.当危险来临时,每只兔子均会同时前往距离它最近的避难所躲避,路程中花费的时间在数值上等于经过的路径…
JZOJ [NOIP2016提高A组集训第16场11.15]SJR的直线 题目 Description Input Output Sample Input 6 0 1 0 -5 3 0 -5 -2 25 0 1 -3 0 1 -2 -4 -5 29 Sample Output 10 Data Constraint 题解 题意 给出\(n\)个条直线的解析式,问这些直线能组成多少个三角形 题解 发现直接求解不容易求 想到可以先求出最大数量再减去不合法的 最大数量\(C_n^3\),不合法的有两种…
题目 夏令营有N个人,每个人的力气为M(i).请大家从这N个人中选出若干人,如果这些人可以分成两组且两组力气之和完全相等,则称为一个合法的选法,问有多少种合法的选法? 分析 如果暴力枚举每个人被分到哪个组或不分,O(2^20)显然会超时. 我们换一种思路, 每次只枚举一半, 将前后半部分分开枚举后半部分,枚举出每种的和以及有没有被选的状态. 枚举和相同的前后部分,如果这种状态没有被选过,就ans+1,然后将这种状态打个标记,这种状态就不再产生贡献. #include <cmath> #incl…