2020寒假
Helium_wild
这个作者很懒,什么都没留下…
展开
-
Petrozavodsk Winter-2018. Jagiellonian U Contest.
[Petrozavodsk Winter-2018. Jagiellonian U Contest.]: A:题意: 给你n个数 让你分成A B 两部分(其中一部分可为空) 使得 xor(A)与xor(B) 的差值最小。思路:1.异或为0的为 说明n个数中具有偶数个这一位是1 无论怎么分配给A B这一位A和B肯定一样 要么都是0 要么都是1 所以这一位对题目要得到答案的没有影响。所以...原创 2019-10-11 10:31:14 · 394 阅读 · 0 评论 -
Codeforces Round #362 (Div. 2)
比赛链接文章目录cf697B. Barnicle(科学计数法转正常小数 模拟)题意代码cf697C. Lorenzo Von Matterhorn(超大线段树两点间的LCA)题意代码cf697D. Puzzles(树上dfs序遍历每个点编号的期望)题意:思路代码cf697E. PLEASE(简单概率+基础数论知识)题意思路代码cf697B. Barnicle(科学计数法转正常小数 模拟)cf...原创 2019-11-06 11:01:53 · 503 阅读 · 0 评论 -
cf1263E(可修改判断括号是否为合法序列以及最大嵌套深度 线段树维护最大/小前缀和)
题目题意给你一段序列,其中L代表左移,R代表右移,小写字母代表在当前位置放置对应字母,),(代表在当前位置放置左右括号,当括号可以匹配时输出括号的最大层数,否则输出-1题解题解: sum==0&&mi[1]=0 为合法括号序列,mx[1]为括号嵌套最大深度。线段树维护最大前缀和 最小前缀和 详情见代码中update函数。#include<bits/stdc++.h&...原创 2020-01-28 12:09:35 · 361 阅读 · 0 评论 -
cf1168A. Increasing by Modulo(每次选择若干数进行(ai+1)%m,问使数组非递增的最小操作次数 二分+贪心 哭)
题目啊啊啊啊啊啊啊啊啊啊啊啊啊学习链接:https://www.cnblogs.com/Carered/p/10937082.html题意: 给一个数组,数组中元素范围为0~n,每次你可以选择若干元素进行(ai+1)%m的操作,问使数组呈非递增的最小操作次数。思路:因为每次都可以选若干个元素,用贪心思想,假设要操作x次,第一个元素加上x若能超过m,则对m取模最小值为0,令其等于0就好了,...原创 2020-01-20 22:44:38 · 304 阅读 · 0 评论 -
cf1168B. Good Triple(挺好的一道题!!思维灵活的不像尺取sl=smid=sr)
题目按正常的尺取就不会做。哭了。对于右端点取r找到一个l。 符合要求以r为右端点的点对有l个。对于右端点r+1。l 应该从之前的l+1开始遍历。假如以r为右端点的时候没有s[l]==s[r]==s[(l+r)/2]的点对,那么符合要求以r为右端点的点对个数为之前的p。这是最靠右的p.代码很好懂。#include<bits/stdc++.h>using namespace ...原创 2020-01-20 20:52:56 · 266 阅读 · 0 评论 -
cf1172B. Nauuo and Circle(全排列在圆上画边不相交的生成树 的种数)
题目#include<bits/stdc++.h>using namespace std;const int N=2e5+5,mod=998244353;typedef long long ll;int deg[N];int main(){ int n;scanf("%d",&n); ll ans=1; for(int i=1,x,y;i...原创 2020-01-20 18:19:40 · 269 阅读 · 0 评论 -
cf1175D. Array Splitting(将数组分成k部分 所有数的值*他所在的第几个部分 和最大 拆式子)
题目我就是个弱智。哭了。唉。怎么就是想不到拆开式子呢? 拆开之后很简单。sum=s[r1]*1+(s[r2]-s[r1])*2+(s[r3]-s[r2])*3+....+(s[rk-1]-s[rk-2])*(k-1)+(s[n]-s[rk-1])*k;把括号打开sum=k*s[n]-s[r1]-s[r2]-...s[rk-1];为了使sum尽可能大就选前k-1个前缀和即可 那么就对前...原创 2020-01-20 17:36:15 · 378 阅读 · 0 评论 -
cf1176D. Recover it!(给个2n序列打乱顺序找到长为n的原序列)
题目答案难道不是唯一的吗? 我觉着是唯一的代码第20行: 先从大到小,合数不能由合数变成,假如可以变成的话这个合数就不会剩余,遍历到比他大的那个可变成他的合数的时候–vis[它]了。代码第21行: 经过上一行的处理,剩下的数都是质数了。#include<bits/stdc++.h>#define m(a,b) memset(a,b,sizeof a)using nam...原创 2020-01-20 15:27:39 · 220 阅读 · 0 评论 -
cf1176E. Cover it!(将连通图选出不超过一半的点 使剩点与已选某或多个相邻 生成树奇偶层)
题目题意: 给你一张n个点m条边的连通图,无自环和重边。输出k和k个点的编号。 k<=[n/2]。使得没被选的点一定会和这k个点里至少一个有边相连。思路: 直接将图生成一棵树,第一种涂色方法是将奇数层全涂色,若这种方法涂色节点数大于⌊n/2⌋,那么将偶数层全涂色肯定可行。#include<bits/stdc++.h>#define m(a,b) memset(a,b,s...原创 2020-01-20 13:08:23 · 282 阅读 · 0 评论 -
cf1189A. Keanu Reeves(一个01串最少分割成多少串 使得每个串01数量不同)
题目题意: 一个01串最少分割成多少串 使得每个串01数量不同。思路: 要么不分割,要么分割成两个串。。#include<bits/stdc++.h>using namespace std;const int N=100+5;char s[N];int main(){ int n;scanf("%d%s",&n,s+1); int num0=...原创 2020-01-19 21:39:01 · 183 阅读 · 0 评论 -
cf1202B. You Are Given a Decimal String...(求出所有的x-y型 对于s串需要添加多少字符可被该计算器打印 巧妙地最短路暴力)
题目#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=10+5,M=2e6+5,INF=2e7;int dis[N][N];char s[M];int len;inline ll cal(int x,int y){ for(int i=0;i<10;++...原创 2020-01-19 16:55:52 · 165 阅读 · 0 评论 -
cf1204C. Anna, Svyatoslav and Maps(给一段邻间皆连边的路径,可删多少点使得最短路径不变)
题目题意: 给一段abcdefab…路径,保证相邻的两个点一定有直接边相连。问你可以最多删掉多少点,使得 给定路径也可以作为 要想经过删后的所有点的最短路径。思路: abcde 假如dis(a,b)+dis(b,c)=dis(a,c)。d这个点一定要删掉。因为此时ac之间经过d也是最短的。假如dis(a,c)+dis(c,d)>dis(a,d). c这个点一定要删掉。。显而易见。哦对刚...原创 2020-01-19 16:01:08 · 275 阅读 · 0 评论 -
cf1196D2. RGB Substring (至少修改多少字符才有一个长为k的RGB循环串 简单地推但我不会)
题目题意: 给你一个长度为n的只有R G B的字符串和k。问最少修改多少次,可以得到一个长度为k的RGB循环串。RGB循环串是RGBRGBRGB任意摘取的子串。思路:dp[i][0]分别表示从1-i为RGBRGBRGBR。。。这样的循环。dp[i][1]分别表示从1-i为GBRGBRGBRG。。。这样的循环。dp[i][0]分别表示从1-i为BRGBRGBRGB。。。这样的循环。那么...原创 2020-01-18 22:20:59 · 207 阅读 · 0 评论 -
codeforces1184C2. Heidi and the Turing Test (Medium) (坐标系旋转+固定长宽的矩阵最多覆盖多少点)
题目题意: 给n个点和半径r,请问半径为r的图形最多覆盖多少点。这里是指欧几里得距离。#include<bits/stdc++.h>using namespace std;const int N=6e5+5;struct node{int x,y1,y2,o;}a[N];inline int cmp(node A,node B){return (A.x==B.x)?(A...原创 2020-01-18 17:01:47 · 319 阅读 · 0 评论 -
HDU5091 Beam Cannon(给定长宽的矩阵最多覆盖几个点 模板)
题目题意:有N个点,有一个W*H的矩形,这个矩形和x,y轴平行,问你怎么放置这个矩形,能让矩形里的点最多。思路: 把每个原点(x,y)对应再来个映点(x+w,y),这样就有2N个点。这N个原点每次在区间【y,y+h】加1,而N个映点在区间【y,y+h】减1。就保证当前线段树里的所有的点都是横坐标位于最早的那个x往右w之内,代表这个矩阵的左下角的纵坐标是[y,y+h]此时可另当前点合法。解释不清...原创 2020-01-18 15:57:54 · 341 阅读 · 0 评论