
codeforces
GrimCake
这个作者很懒,什么都没留下…
展开
-
codeforces-914D Bash and a Tough Math Puzzle(线段树维护gcd)
链接:http://codeforces.com/problemset/problem/914/D题意:给定一个序列,给出两种操作1 l r x表示判断l到r区间内能否通过改变一个数字使得该区间的gcd=x,2 i y把第i个数改为y题解:通过这道题才知道gcd也是有区间性质的,那么就是一道普通的单点修改加区间查询了。可以通过判断递归到叶子判断该数能否整除x,不能的话返回1进行累加,要注意的是当一...原创 2018-04-08 23:43:53 · 219 阅读 · 0 评论 -
Codeforces Round #480 (Div. 2)
980A题意:给出一个序列,代表字符串和珍珠相连的环,问能否通过移动珍珠和线,使得相邻两个珍珠间的线相同题解:当珍珠或线为0时为NO,当珍珠比线多时为NO,当线为珍珠的倍数时为YES#include<iostream>#include<cstring>using namespace std;char s[110];int main(){ int lnum...原创 2018-05-12 23:30:10 · 162 阅读 · 0 评论 -
codeforces-547B Mike and Feet(单调栈)
题意:给一段序列,要求分别输出长度为1-n的子串中最大的最小值题解:用单调栈求出每一个数往左和往右第一个比他小的数,这样当该数字作为答案时,他就是最小值。 需要注意的是,长度短的答案由长度长的答案确定,比如长度为4的答案为10,那么当用单调栈求得长度为3的答案比10小时那么应该取10作为长度为3的答案,因为可以从长度为4的字串中取一个长度为3的包含10的字串。代码:#include<iost...原创 2018-05-19 20:08:31 · 221 阅读 · 0 评论 -
codeforces-706D (异或trie树)
题意:给定一种集合支持一下操作1.加入一个数2.删除一个数3.给定一个数,在集合中找出一个数,使得这两个数异或值最大,输出最大值题解: 这道题可以作为异或trie树的模板题。把每一个数扩充成30位从最高位开始建树,删除的操作是为每一个节点保存一个值,如果该值不为0说明该节点存在,否则不存在。查询的时候从最高位开始,0对1,1对0进行查找,最后的结果一定是最优的。代码:#include<...原创 2018-05-19 22:25:28 · 294 阅读 · 0 评论 -
Codeforces Round #481 (Div. 3)
978A 水题#include<iostream>#include<cstdio>#include<cstring>using namespace std;int vis[1010];int vv[1010];int n;int a[1010];int main(){ cin>>n; for(int i = 1;...原创 2018-05-14 22:03:56 · 181 阅读 · 0 评论 -
codeforces-61E (线段树求三元逆序对)
题意:给出一个序列,求三元逆序对题解:枚举中间的数就好了,那么结果就是它左边大于它的数的个数*右边小于它的数的个数,和求线段树二元逆序对的方法是一样的。线段树求二元逆序对方法:首先离散化,从左往右扫一遍序列,每一次查询区间(a[i], n)的和,然后更新使a[i]叶子的值自增1。#include<iostream>#include<cstring>#include<...原创 2018-06-14 11:12:20 · 719 阅读 · 0 评论 -
codeforces-220B(莫队+离散化)
题目链接:http://codeforces.com/problemset/problem/220/B题意:给一段长为n的序列和m个关于区间的询问,求出每个询问的区间中有多少种数字是 该种数字出现的次数等于该数字 的。题解:莫队算法,因为数字很大所以要离散化然后记录一下原来的数字,不能用map记录会超时,map是多带一个log的。代码:#include<iostream>#inclu...原创 2018-06-08 09:36:35 · 475 阅读 · 0 评论 -
codeforces-159C String Manipulation 1.0(vector)
题意:给一个字符串,把他赋值k编,然后有m个操作,删除某个字母第x次出现的位置,输出所有操作结束后的字符串题解:vector的应用代码:#include<iostream>#include<cstdio>#include<cstring>#include<vector>using namespace std;int vis[...原创 2018-07-16 16:46:32 · 297 阅读 · 0 评论 -
codeforces-1009D Relatively Prime Graph
题意:给n,m,要求构造一个n个点,m条边的图,要求对于任意一条边<u,v>,gcd(u,v)=1 . 0<n,m<1e5题解:可以打一下欧拉函数表,发现573内互质的对数就大于1e5了,因此可以从1开始枚举和他互质的点,然后把点对加入vector,当size大于m时就跳出代码:#include<bits/stdc++.h>#define...原创 2018-07-23 22:01:54 · 320 阅读 · 0 评论 -
codeforces-650A Watchmen(思维)
题意:给n个坐标,问有多少个坐标对的x值相等或y值相等题解:分别排序,分别求出x相等和y相等的组合,最后减去x和y均相等的#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;int n;struct node...原创 2018-05-18 14:55:04 · 216 阅读 · 0 评论 -
codeforces-466C(思维)
题意:给定一个数列,能用几种方法把数列分成相等的三部分题解:一开始考虑用前缀和+二分,但是数字有负数,前缀和不是递增的不能用。设每一份的平均值为avl,从前向后扫一遍,当前缀和为avl时,cnt++,当前缀和为2*avl时,ans+=cnt,因为当前位置作为第二份的结尾,而前面有cnt种方法作为第一份的结尾。因为从前往后扫,第二份的结尾都是不同的,因此不会重复。注意long long代码:#inc...原创 2018-05-18 13:51:32 · 363 阅读 · 0 评论 -
codeforces-4D Mysterious Present(二维递增子序列)
链接:http://codeforces.com/problemset/problem/4/D题意:二维递增子序列题解:先排序,dp【i】表示以i结尾的最长递增子序列的长度,dp【i】= max{dp【j】+1,dp【i】} j<i, p[i].w>p[j].w&& p[i].h>p[j].h, 注意边界及一些特殊情况代码:#include<iostrea...原创 2018-04-16 09:41:15 · 247 阅读 · 0 评论 -
codeforces-102A Clothes(暴力)
链接:http://codeforces.com/problemset/problem/102/A题意:给定n件衣服,每件衣服有价格,有m中配对关系,求最小的价格从中选取三件衣服,使得它们之间能两两配对题解:n很小直接暴力#include<iostream>#include<cstring>#include<map>#include<cstdio&g...原创 2018-04-16 20:55:28 · 343 阅读 · 0 评论 -
codeforces-102B Sum of Digits(水题)
链接:http://codeforces.com/problemset/problem/102/B题意:给定一个数字,每次能把它变为它的各个位的数字之和,求几次变化后,能变成个位数#include<iostream>#include<cstring>#include<map>#include<cstdio>#include<stdlib...原创 2018-04-16 21:06:24 · 439 阅读 · 0 评论 -
codeforces-103A Testing Pants for Sadness(简单递推)
链接:http://codeforces.com/problemset/problem/103/A题意:有n个问题,每个问题有ai种回答,每次只有回答正确才能回答下一个问题。回答 错误的话要重新回到第一个问题,但是可以记住哪些回答是错误的。问最多回答几次才能答完所有问题。题解:简单递推#include<iostream>#include<cstring>#include...原创 2018-04-16 21:31:01 · 340 阅读 · 0 评论 -
codeforces-103B Cthulhu
链接:http://codeforces.com/problemset/problem/103/B题意:给定一个图,判断该图是否由若干棵树的树根构成一个环题解:先并查集判连通,并且满足n=m#include<iostream>#include<cstring>#include<map>#include<vector>#include<c...原创 2018-04-16 22:07:40 · 353 阅读 · 0 评论 -
codeforces-915F Imbalance Value of a Tree(并查集+树上统计)
链接:http://codeforces.com/problemset/problem/915/F题意:树上每一个点有一个点权,求树上所有的路径的(最大点权值-最小点权值)之和题解:可以考虑先求出所有路径中最大点权值之和。显然,每一个点都能对一些路径产生贡献,我们可以先按点权从小到大排序,然后每次取一个点,那么所取的点就是在当前已取出的点中最大的。用并查集维护之前取出的在不同子树中的点以及数量,并...原创 2018-04-05 20:51:37 · 288 阅读 · 0 评论 -
codeforces-915D Almost Acyclic Graph(拓扑序判圈)
链接:http://codeforces.com/problemset/problem/915/D题意:在一个有向图中,判断能不能至多删除一条边使得该图不含圈,n<=500, m<=100000题解:枚举每一个点,让该点的入度减一,然后拓扑序判圈代码:#include<iostream>#include<cstdio>#include<cstring&...原创 2018-04-05 20:58:37 · 258 阅读 · 0 评论 -
Codeforces Round #452 (Div. 2)
899a 题意:给出一个序列,要么选出3个1的组合,要么选出一个2和一个1的组合,问最多能选出多少个组合思路:贪心即可#include<iostream>#include<cstdio>#include<cstring>using namespace std;int n, a[200010];int x, y;int main(){ c...原创 2018-05-05 11:27:20 · 131 阅读 · 0 评论 -
codeforces-191C (树链剖分+边的区间修改)
题意:给出一棵树,每次可以使任意两点间的路径的权值加1,最后求出每条边的权值题解:可以作为基于边权的树链剖分的模板,有个技巧是用eg数组来将边的序号和点关联起来代码:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace st...原创 2018-07-14 13:37:57 · 708 阅读 · 0 评论