一个人只要存在债务关系,那么他的债务可以和这整个债务关系网中任何人连边,和他当初借出或欠下的人没有关系.只需要记录他的债务值即可. #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace std; ]; vector<array<> >v; int main(){ ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); lon…
#include<bits/stdc++.h>using namespace std;int dp[1000007][7][7];int cnt[1000007];int main(){    int n,m;    scanf("%d%d",&n,&m);    int x=0;    for(int i=1;i<=n;i++){        scanf("%d",&x);        cnt[x]++;    }  …
#define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>using namespace std;int main(){ ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n;//因为满足题意的数的最右下方结点最大且与根节点奇偶性相同,所以树的右子树一定有偶数个结点,左子树可以有和右子树一样多的结点,也可以多一个结点 cin>>n; int x=1; while…
#include<bits/stdc++.h>using namespace std;string s,a,b;int main(){ cin>>s; int n=s.size(); int l=0,r=n-1; while(l<=r-3){//三个字母没有连续相同的,所以四个字符以内必定有相同字母,即回文 if(s[l]==s[r]){ a.push_back(s[l]); b.push_back(s[r]); l++,r--; } else if(s[l]==s[r-1]…
Codeforces Global Round 1 (CF1110) 继续补题.因为看见同学打了这场,而且涨分还不错,所以觉得这套题目可能会比较有意思. 因为下午要开学了,所以恐怕暂时不能把这套题目补完了,所以先把 A-F 放上来. A. Parity 保存 %2 的值就可以了. const int N = 1e5 + 7; int b, k, a[N], ans; int main() { read(b), read(k); for (int i = 1; i <= k; ++i) read(…
Codeforces Global Round 11 1427A. Avoiding Zero 题目链接:click here 待补 1427B. Chess Cheater 题目链接:click here Example input 8 5 2 WLWLL 6 5 LLLWWL 7 1 LWLWLWL 15 5 WWWLLLWWWLLLWWW 40 7 LLWLWLWWWLWLLWLWWWLWLLWLLWLLLLWLLWWWLWWL 1 0 L 1 1 L 6 1 WLLWLW output…
Problem   Codeforces Global Round 1 - D. Jongmah Time Limit: 3000 mSec Problem Description Input Output Print one integer: the maximum number of triples you can form. Sample Input 10 62 3 3 3 4 4 4 5 5 6 Sample Output 3 题解:动态规划,对这种状态定义不熟悉,主要还是没有发现最优方…
Codeforces Global Round 3 A. Another One Bites The Dust 有若干个a,有若干个b,有若干个ab.你现在要把这些串拼成一个串,使得任意两个相邻的位置都是不同字符,求可能的最长串长度. 枚举一下\(a\)开头还是\(b\)开头,那么接下来就被唯一确定了. #include<iostream> #include<cstdio> using namespace std; int a,b,c;long long ans; int main…
Codeforces Global Round 2 题目链接:https://codeforces.com/contest/1119 A. Ilya and a Colorful Walk 题意: 给出n个数,问从一个数到另外一个不同数的最长距离是多少. 题解: 从前往后,从后往前扫两遍即可.证明可用反证法,这里略去. #include <bits/stdc++.h> using namespace std; typedef long long ll; ; int n; int c[N]; i…
Codeforces Global Round 1 题目链接:https://codeforces.com/contest/1110 A. Parity 题意: 给出{ak},b,k,判断a1*b^(k-1)+a2*b^(k-2)+...+ak*b^0的奇偶性. 题解: 暴力求模2意义下的值就好了. 代码如下: #include <bits/stdc++.h> using namespace std; typedef long long ll; ; int n; int b,k; int a[…
CodeForces Global Round 1 CF新的比赛呢(虽然没啥区别)!这种报名的人多的比赛涨分是真的快.... 所以就写下题解吧. A. Parity 太简单了,随便模拟一下就完了. B. Tape 显然就是先找一个长的把所有的全部覆盖,然后可以在上面丢掉\(k-1\)段间隙. 那么把两两之间的间隙长度拿出来排序就可以了. C. Meaningless Operations 如果\(a\)不等于\(2^k-1\)的形式,那么令\(S=2^k-1\),其中\(2^{k-1}<a<2…
[手抖康复训练1 ]Codeforces Global Round 6 总结:不想复习随意打的一场,比赛开始就是熟悉的N分钟进不去时间,2333,太久没写题的后果就是:A 题手抖过不了样例 B题秒出思路手抖过不了样例,C题秒出思路手抖过不了样例*3 D题 手抖 过的了样例 ,调了1h,赛后发现变量名写错了,改一个字符就能AC... 题目等补完题一起放上来QAQ…
题目传送门:http://codeforces.com/contest/1119/problem/D D. Frets On Fire time limit per test 1.5 seconds memory limit per test 256 megabytes input standard input output standard output Miyako came to the flea kingdom with a ukulele. She became good friend…
题目链接:https://codeforces.com/contest/1368/problem/C 题意 构造一个只含有灰.白块的网格,要求: 所有灰块为一个连通块 每个灰块与偶数个灰块相邻 恰有 $n$ 个灰块四周都有灰块 题解 即在 $n = 1$ 网格的基础上更新右上角三个点的坐标即可. 代码一 #include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; cout <<…
久违的写篇博客吧  A. Competitive Programmer 题目链接:https://codeforces.com/contest/1266/problem/A 题意: 给你一个只包含数字的字符串,你可以将字符串随机排列,问最后组成的数字能否被60整除 分析: 我们先考虑能被6整除的数的特点: ①各个位数和 % 3 == 0 ②末尾数必须为 0 2 4 6 8 再考虑能被10整除的数的特点: 末尾数必须为0 因为60中6在十位部分 ,10在个位部分,所以最后组成的数除了各个位数和 %…
A. Bad Ugly Numbers 思路 题意: 给我们一个k,让我们用 0-9 之间的数字构成一个 k位数a,a不能被组成a的每一位数字整除. 分析:首先 k等于1,无论我们怎么配都会被整除:当k > 1 的时候,a的组成位数中肯定不能有1,那么只能在 2-9,之间选择,剩下我们可以选择两个不能互相整除的数如 2.7,,我们可以让2作为第一位,剩下的位数全是7,,,,例如我们求一个k = 3 时我们构成的数a,a = 277 代码 #include<iostream> #inclu…
题目链接:https://codeforces.com/contest/1375/problem/E 题意 给出一个大小为 $n$ 的数组 $a$,对数组中的所有逆序对进行排序,要求按照排序后的顺序交换每一对逆序对后数组为非递减数组. 题解 先将顺组的下标按元素大小排为非递减序,此即交换完所有的逆序对后得到的下标序列. 再对下标序列进行冒泡排序还原到初始时的 $0, 1, 2, \dots, n - 1$,冒泡排序中的交换顺序即为逆序对的排列顺序. 代码 #include <bits/stdc+…
失踪人口回来写题了.. 写了几乎一下午.贴一贴代码以及口糊一下. A. 题意:计算一下这个多项式的和. 题解:暴力算一算对每一项异或一下. #include<bits/stdc++.h> using namespace std; int b,k; int kk[100005]; int main() { cin>>b>>k; for(int i=0;i<k;i++)cin>>kk[k-i]; int flag=0; for(int i=1;i<=…
比赛链接 A 题解 知识点:贪心,构造. 注意到有 \(1\) 就一定能构造. 时间复杂度 \(O(n)\) 空间复杂度 \(O(1)\) 代码 #include <bits/stdc++.h> #define ll long long using namespace std; bool solve() { int n, k; cin >> n >> k; bool ok = 0; for (int i = 1;i <= n;i++) { int x; cin &…
Codeforces 55D. Beautiful numbers 题意 求[L,R]区间内有多少个数满足:该数能被其每一位数字都整除(如12,24,15等). 思路 一开始以为是数位DP的水题,觉得只需要记录搜到当前位出现了哪些数字作为状态即可,明显是假算法...感觉这是一道数位DP好题.可以这样思考:一个数要想被其各位数字分别都整除,等价于它被那些数字的LCM整除.因此记录当前位,当前数对(1~9的LCM)取模的结果,当前出现的数字的LCM这三个值作为状态才合理,即dp[pos][sum][…
题意: 统计区间[L,R]有多少个数,其二进制表示法中的0的个数不少于1的个数?(不允许前缀0) 思路: 状态表示为 [当前第几位][总位数][1的个数],最后判断一下1的个数是否满足条件,要注意前导0的问题,可以通过枚举二进制的位数来解决. //#include <bits/stdc++.h> #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i…
议题:后缀数组(Suffix Array) 分析: 后缀树和后缀数组都是处理字符串的有效工具,前者较为常见,但后者更容易编程实现,空间耗用更少:后缀数组可用于解决最长公共子串问题,多模式匹配问题,最长回文串问题,全文搜索等问题: 后缀数组的基本元素: 给定一个string,其长度为L,后缀指的是从string的某一个位置i(0<=i<L)开始到串末尾(string[L-1])的一个子串,表示为suffix(i): L个suffix(i)按照字典顺序排列并顺序存储在一个数组SA[L]中,则SA[…
Vector .ArrayList 和LinkedList都是List接口下的实现类,但是他们之间的区别和联系是什么呢? 首先: 然后: 如果您仅仅想知道结论,那么可以关闭了. 下面我讨论讨论为什么. 发现arrayList的线程安全是由size引起的,为何这么说呢? 这是ArrayList所拥有的部分属性,通过这两个字段我们可以看出,ArrayList的实现主要就是用了一个Object的数组,用来保存所有的元素,以及一个size变量用来保存当前数组中已经添加了多少元素. 1 public cl…
/* 题意:给你一个n*n的格子,每一个格子都有一个数值!将两只bishops放在某一个格子上, 每一个bishop可以攻击对角线上的格子(主对角线和者斜对角线),然后会获得格子上的 数值(只能获取一次).要求输出两个bishops获取的最大值以及它们所在的位置! 思路:直接暴力!....不错的暴力题目! 首先我们都知道每一条主对角线上的横纵坐标的和相同,每一条副对角线上的横纵坐标的差相同! 那么我们在输入的时候就可以将所有对角线上的数值之和求出来了! 最后我们发现如果要获得最大值,那么还有一条…
#426 Div2 D 题意 给出 \(n\) 个数字,将这些数字隔成 \(k\) 个部分(相对位置不变),统计每个部分有几个不同数字,然后全部加起来求和,问和最大是多少. 分析 很容易想到 \(DP\) 方程,\(dp[i][j] = max(dp[i][j], dp[k][j - 1] + size(k + 1, i)\) ,\(k < i\) ,\(dp[i][j]\) 表示将 \([1, i]\) 分成 \(j\) 个部分时的答案,\(size(k+1, i)\) 表示区间 \([k+1…
题面传送门 很容易发现一件事情,那就是数组的每一位都是独立的,但由于这题数组长度 \(n\) 很大,我们不能每次修改都枚举每一位更新其对答案的贡献,这样复杂度必炸无疑.但是这题有个显然的突破口,那就是 \(k\) 的取值范围很小,最高只有 \(12\),也就是说每一位的取值最多只有 \(12\) 种可能,我们考虑以此为突破口,设计一个与这 \(k\) 个数的具体取值无关的状态. 首先我们知道每一位是独立的,故我们可以把每一位拆开来考虑,于是问题由二维变成一维:给定 \(k\) 个数 \(a_1,…
题目链接:https://codeforces.com/contest/1368/problem/E 题意 给出一个 $n$ 点 $m$ 边的有向图,每条边由编号较小的点通向编号较大的点,每个点的出度不大于 $2$,删掉一些点,使得图中不存在长度大于等于 $2$ 的路径.(最多删掉 $\frac{4}{7}n$ 个点) 题解 删除所有拓扑排序中深度为 $3$ 的倍数的顶点,由于每次删掉了一层,所以把所有点深度置为 $1$,只删除深度为 $3$ 的顶点即可. 证明 删除点占比最大的情况是该有向图为…
题目链接:https://codeforces.com/contest/1119/problem/E 题意:有n种长度的棍子,有a_i根2^i长度的棍子,问最多可以组成多少个三角形 题解:dp[i]表示前 i 种棍子可以组成的最大三角形数量,f[i]表示没有用到的棍子数量,三角形的形状只有两种(2 ^ i, 2 ^ i, 2 ^ i)或者(2 ^ i, 2 ^ i, 2 ^ j),显然先用之前剩下的来组三角形最优,然后就可以转移了. #include <bits/stdc++.h> using…
题目链接:https://codeforces.com/contest/1427/problem/D 题意 给出一个大小为 \(n\) 的排列,每次操作可以将 \(n\) 个数分为 \(1 \sim n\) 个非空连续份,然后将对称的份两两交换,试给出在 \(n\) 次操作内将排列排为升序的操作过程. 题解 找到值相差为 \(1\) 的逆序对:\(i<j\),\(a_i = a_j + 1\) 将已为升序的数视为一个整体,找到 \(t\) 满足 \(i \le t < j\),\(a_t &g…
题目链接:https://codeforces.com/contest/1427/problem/C 题意 \(r\) 行与 \(r\) 列相交形成了 \(r \times r\) 个点,初始时刻记者位于左下角的 \((1,1)\) 处,接下来给出 \(n\) 个名人的出现时间和位置,出现时间严格递增,问记者最多可以拍到多少名人的照片. 题解 This is a classical dynamic-programming task with a twist. 这是一个有些变化的经典动态规划问题.…