Codeforces 题面传送门 & 洛谷题面传送门 首先注意到 \(\sum\limits_{i=1}^{2n}i=\dfrac{2n(2n+1)}{2}=n(2n+1)\equiv n\pmod{2n}\),也就是说,如果我们能够在每个 pair 找到一个数,使取出的 \(n\) 个数加起来是 \(n\)​ 的倍数,那么后手就有必胜策略,因为如果取出的数之和 \(\bmod 2n=0\) 那么显然符合要求,否则我们这 \(n\) 个数之和 \(\bmod 2n\) 必然等于 \(n\),因此…
B. z-sort 题目连接: http://www.codeforces.com/contest/652/problem/B Description A student of z-school found a kind of sorting called z-sort. The array a with n elements are z-sorted if two conditions hold: ai ≥ ai - 1 for all even i, ai ≤ ai - 1 for all…
题目链接:http://codeforces.com/contest/707/problem/C 题目大意:给你一条边,问你能否构造一个包含这条边的直角三角形且该直角三角形三条边都为整数,能则输出另外两条边,否则输出-1“”. 解题思路:下面是我从作业帮上找的- -, 利用平方差公式令斜边为c,直角边为a.b,且b为最短边c²-a²=(c+a)(c-a)因此(c+a)(c-a)是完全平方数,且(c-a)是(c+a)的一个因数1.如果(c-a)=1,则(c+a)是完全平方数(最短边是任意大于2的奇…
题目链接 https://codeforces.com/contest/1246/problem/D 题解 首先考虑答案的下界是\(n-1-dep\) (\(dep\)为树的深度,即任何点到根的最大边数),因为每一次操作只会使一个子树内的点深度\(-1\), 也就最多使得最大深度\(-1\). 那么这个下界能否达到呢?答案是肯定的,因为考虑将过程倒过来,每次选择一个子树将它沿某条边向下移动,对于任何一棵非链的树,最深点到根的路径上一定存在分叉,因此就一定可以通过移动使得最大深度\(+1\). 考…
https://codeforces.com/contest/1202/problem/D 当时想的构造是中间两个3,然后前后的1和7组合出n,问题就是n假如是有一个比较大的质数因子或者它本身就是质数就会超长度.事实上程序会正确执行并分解成两个超大质数,不断putchar导致TLE. 正确的做法是通过3来主要组成答案,考虑133..337,中间有x个3,则有C(x,2)个组合,很明显可以发现在x=45000附近超过1e9的上限,而剩下的余数不会超过x=45000(或者在这个附近?). 考虑怎么添…
Codeforces Round #384 (Div. 2) 题目链接:Vladik and fractions Vladik and Chloe decided to determine who of them is better at math. Vladik claimed that for any positive integer \(n\) he can represent fraction \(\frac{2}{n}\) as a sum of three distinct posi…
Codeforces 题面传送门 & 洛谷题面传送门 神仙构造题(不过可能我构造太烂了?) 首先考虑这个奇奇怪怪的 \(\dfrac{4}{7}\),以及这个每个点出度最多为 \(2\) 的条件有何用意.容易发现 \(4=2^2,7=1+2+4\),这启发我们通过某种方式将原图的点集分成三部分.我们考虑构造三个点集 \(A,B,C\) 满足: 对于 \(A\) 中的点 \(x\),要么其入度为 \(0\),要么所有连向它的边的另一个端点都属于 \(C\) 对于 \(B\)​ 中的点 \(x\),…
Codeforces 题目传送门 & 洛谷题目传送门 显然,直接暴力枚举是不可能的. 考虑将点按横纵坐标奇偶性分组,记 \(S_{i,j}=\{t|x_t\equiv i\pmod{2},y_t\equiv j\pmod{2}\}(i,j\in[0,1])\),说白了就是横坐标为偶数.纵坐标为偶数:横坐标为偶数.纵坐标为奇数:横坐标为奇数.纵坐标为偶数:横坐标为奇数.纵坐标为奇数的点集. 然后考虑以下算法: 若 \(S_{0,0},S_{1,1}\) 以及 \(S_{0,1},S_{1,0}\)…
题目链接 假设始终可以找到一种状态使得值为0, 那么两个1之间需要隔n-2个数, 两个2之间需要隔n-3个数, 两个3之间隔n-4个数. 我们发现两个三可以放到两个1之间, 同理两个5放到两个3之间....这样就构造好了. #include <iostream> #include <vector> #include <cstdio> #include <cstring> #include <algorithm> #include <cmat…
原文链接https://www.cnblogs.com/zhouzhendong/p/CF1019C.html 题目传送门 - CF1019C 题意 给定一个有 $n$ 个节点 . $m$ 条边的有向图,没有自环,但是可能存在环. 现在要求选出一个点集满足一下条件. 设原来的所有点构成的点集为 $V$ ,选出的点集为 $S$,则: 1. 对于所有满足 $x,y\in S$ 的点 $x,y$ ,有向边 $(x,y)$ 不存在. 2. 对于所有满足 $y\in V$ 的点,都可以找到一个点 $x(x…
题目要求构造一组数据使得题目给出代码的anwser和正确答案恰好相差k,我们记题目给出代码的输出为ans1,正确答案为ans2. 我们假设已经有总和为s的p个正数,使得此时的ans1=ans2=s*p,然后我们在左端添加一串长度为q,并且总和为-1的数,此时ans1=s*p,ans2=(s-1)*(p+q). 此时我们让ans2-ans1=k,于是我们推到得出s*(q-1)=k+p. 那么我们就可以通过枚举p,然后求k+p的因子,来判断是否存在合法方案. 显然p+q<=2000,并且由于p个数的…
 Regular Bridge time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output An undirected graph is called k-regular, if the degrees of all its vertices are equal k. An edge of a connected graph is cal…
要点 可以贪心选数量最多的那三个构造 二分的话里面的check我不太会.正解是既然当前答案为\(k\)个,那每个物品最多只会出现\(k\)次,多余的丢掉,剩下的总数如果大于等于\(3k\)则true.最后输出答案时也是小小技巧吧,用\({1,1+k,1+2k}\)组成一组,因为多于\(k\)个的都删了所以这三个一定不同. #include <cstdio> #include <algorithm> #include <vector> #include <queue…
题目链接: C. Foe Pairs time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output   You are given a permutation p of length n. Also you are given m foe pairs (ai, bi) (1 ≤ ai, bi ≤ n, ai ≠ bi). Your task…
题目链接: http://codeforces.com/problemset/problem/665/D 题意: 给定序列,从中找出最大的子集,使得子集中的数两两相加均为质数. 分析: 貌似有用最大团做的.可是不会,名字太难听也不是很想学. n只有1000,暴力一发. 如果集合中有1的话,把所有1都放进去,我们最多再找一个偶数. 如果不考虑1的话,两个奇数,两个偶数相加均为偶数,所以最多找一个奇数和一个偶数. 枚举之后判断一下是否为质数就好了. 我觉得整个序列找不到两两相加为质数的时候的说明不是…
Find an n × n matrix with different numbers from 1 to n2, so the sum in each row, column and both main diagonals are odd. Input The only line contains odd integer n (1 ≤ n ≤ 49). Output Print n lines with n integers. All the integers should be differ…
题目链接 题意 给出m个数b,这些数是由n个数a两两异或组成的,问初始的那n个数分别是多少. 思路 存在多组解的情况...原来是个构造题. 考虑这样一种情况:b1 = a1 ^ a2,b2 = a2 ^ a3,b3 = a1 ^ a3.那么只要确定了a1,就可以求出a2和a3了.那么可以假设a1=0,自然就可以求出a3,再可以求出a2了.但是对于某个ai,如果ai加入了答案,那么存在一些bj就是不合法的,例如我们选了的b1 = a1 ^ a2,如果我们把a1和a2都加入了答案里面,那么对于其他的…
题目描述: High Load time limit per test 2 seconds memory limit per test 512 megabytes input standard input output standard output Arkady needs your help again! This time he decided to build his own high-speed Internet exchange point. It should consist of…
原文链接www.cnblogs.com/zhouzhendong/p/CF1172D.html 前言 明哥神仙打cf方式真潇洒.45分钟切D后就不打了? 我当场爆肝D想错方向不会做自闭了. 题解 考虑增量法构造. 考虑我们要在第一行和第一列操作一下,使得需要到达第一行和需要到达第一列的行和列完成任务. 设 \(R[x] = 1, C[y] = 1\). 如果 \(x = y = 1\),那么我们不需要在第一行和第一列放任何传送门. 否则我们放一对传送门,位置分别是 \((1,y), (x,1)\…
题目链接 http://codeforces.com/contest/798/problem/D 题解 前几天的模拟赛,居然出这种智商题..被打爆了QAQ 这个的话,考虑只有一个序列怎么做,把所有的排序取最大的当然可以,但是还有一种做法,就是两两分组之后每两个相邻的取大的!! 于是按照\(a\)排序,先取第一个,后面每两个相邻的取b较大的.做完了! 哇这怎么想出来的啊.... 代码 #include<cstdio> #include<cstdlib> #include<ios…
A #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)) #define TS printf("!!!\n") #define pb push_back #define inf 1e9 //std::ios::sync_with_stdio(false); using namespace std; //priority_queue<int,vect…
原题链接:http://codeforces.com/problemset/problem/868/C 题意:有k个队伍参加比赛,比赛有n个预选的题目,有些队伍对已经事先知道了一些题目.问能不能选出若干个题,使没有队伍提前知道了半数以上的比赛题目. 思路:可以肯定的是,只要存在满足条件的选题方案,必定存在两道题,选上这两道之后也是满足条件的.因为k<=4,我们可以用二进制数记录题目的被提前知道的情况.所以,只要存在两个题目,对应的二进制数的异或结果为0,输出YES,否则输出NO.具体实现参看代码…
You are given a prime number pp, nn integers a1,a2,…,ana1,a2,…,an, and an integer kk. Find the number of pairs of indexes (i,j)(i,j) (1≤i<j≤n1≤i<j≤n) for which (ai+aj)(a2i+a2j)≡kmodp(ai+aj)(ai2+aj2)≡kmodp. Input The first line contains integers n,p,…
题意:求一个只由\(01\)组成的字符串,使得它所有长度为\(2\)的子串满足:每对子串的数字和为\(0,1,2\)的个数为\(a,b,c\). 题解:我们先考虑子串数字和为\(1\)的情况,构造出一个\(10\)的循环串,然后在它的头部尾部适当添加\(1\)和\(0\),使得a和c也满足即可.需要特判\(b=0\)的情况,并且\(b\)奇偶不同构造情况也不同. 代码: #include <iostream> #include <cstdio> #include <cstri…
You are given positive integer number n. You should create such strictly increasing sequence of k positive numbers a1, a2, ..., ak, that their sum is equal to n and greatest common divisor is maximal. Greatest common divisor of sequence is maximum of…
upd on 2021.7.7:修了个 typo Codeforces 题目传送门 & 洛谷题目传送门 首先考虑怎样处理"字典序小"这个问题,按照字典序比大小的套路,我们可以枚举第一位 \(p_x\ne q_x\) 的位置 \(x\),那么必然有 \(p_x<q_x\),为了避免后面计算中出现太多形如 \(n-x\) 之类的东西,我们不枚举 \(x\),instead 我们枚举 \(i=n-x\),那么真正的 \(x\) 等于 \(n\) 减去你枚举的 \(i\). 接下…
题目链接:点击打开链接 = = 990+ms卡过 #include<stdio.h> #include<iostream> #include<string.h> #include<algorithm> #include<vector> #include<set> using namespace std; #define N 100010 #define L(x) (x<<1) #define R(x) (x<<…
题目链接 给出一个图, 每个节点只有三种情况, a,b, c. a能和a, b连边, b能和a, b, c,连边, c能和b, c连边, 且无重边以及自环.给出初始的连边情况, 判断这个图是否满足条件. 由题意可以推出来b必然和其他的n-1个点都有连边, 所以初始将度数为n-1的点全都编号为b. 然后任选一个与b相连且无编号的点, 编号为1. 然后所有与1无连边的点都是3. 然后O(n^2)检查一下是否合理. #include <iostream> #include <vector>…
给一棵树 要求在一个20*1e6的矩阵上放下这棵树,每个点的坐标都是整数且所有边都不相叉 题解 按照重链遍历,先给轻儿子坐标,然后沿着重儿子向下走即可 #include <bits/stdc++.h> #define endl '\n' #define ll long long #define pii pair<int,int> #define IO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0) #define rep(ii,…
<题目链接> 题目大意:有$n$只小猫,开始将它们放在指定的n个单元格内,然后随机从n-1个隔板中拆除隔板,最终使得这些小猫在同一单元格.现在依次给出拆除隔板的顺序,比如:1 4 就表示1号和4号小猫之间的隔板会被拆除(注:只能拆除相邻区域小猫之间的隔板). 解题分析:利用并查集处理,$nxt[i]$ 表示 $i$ 之后的小猫序号, $mxri[i]$表示以第$i$个小猫已确定区域的最右端(方便其它小猫接入). #include <bits/stdc++.h> using name…