
codeforces
文章平均质量分 59
PrimeG
算法学习ing
展开
-
codeforces round#408(div.2) A. Buying A House
题意:等距离的一列数组表示房子价格(0为有人居住的),输出距离目标的最近的可以买下的房子。数据量很小,直接暴搜一遍即可。#includeusing namespace std;int n,m,k,dis=1e9,x,position;int main(){ cin>>n>>m>>k; for(int i=1;i<=n;i++) { s原创 2017-04-11 11:18:16 · 453 阅读 · 0 评论 -
Educational Codeforces Round 20 B - Distances to Zero
没什么好说的,直接暴力两遍即可#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define INF 0x3f3f3f3f#define inf 2*0x3f3f3f3f#define l原创 2017-04-30 10:40:21 · 367 阅读 · 0 评论 -
Educational Codeforces Round 19 A. k-Factorization
分解因数,质因数分解后(同时放进栈里)个数如果小于k,输出-1,否则就输出栈里的k-1个数,然后n/(前k-1个乘积,k=1时为1)#includeusing namespace std;int n,k,m[100005],num=0,res=1,nx;int main(){ cin>>n>>k;nx=n; memset(m,0,sizeof(m)); for(原创 2017-04-16 19:06:01 · 421 阅读 · 0 评论 -
Educational Codeforces Round 19 B. Odd sum
想了想是可以贪心过的,先遍历一遍,记录大于等于0的数的偶数个数和奇数个数,然后进行从大到小排序,如果所有值都小于零,那么遍历一下输出第一个奇数;如果奇数个数是奇数,直接把大于零的数全部加起来即可;如果奇数个数是零,那么先把所有正数加起来,在加上负数里的第一个奇数;剩下的情况就是正数的奇数个数为偶数(非零),这种情况可以先把所有正数加起来,然后比较负数里的第一个奇数和正数里的最后一个奇数的绝对值大小原创 2017-04-16 19:14:45 · 382 阅读 · 0 评论 -
Educational Codeforces Round 19 C. Minimal string
输入一个字符串,从左开始进行操作,每次可以把一个字母输出来,也可以把它放进一个栈里,可以随时取出输出,最终要求输出一个所有情况中的字典序最小的一种。首先先记录一下每个字母的个数,方便动态的情况下找最小值,然后就开始遍历了,每次遍历找一下当前位置向右的所有字母的最小值如果这个值小于栈的最上面的字母就把这个字母放进栈内,否则就把栈里的最上面的输出,最后再把栈里的字母都输出即可。#include原创 2017-04-16 19:24:59 · 366 阅读 · 0 评论 -
codeforces Educational Codeforces Round 21 A - Lucky Year
只要把最高位加一再乘以位数即幸运年,再减去最初的即可。#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define INF 0x3f3f3f3f#define inf 2原创 2017-05-16 11:54:18 · 298 阅读 · 0 评论 -
codeforces Educational Codeforces Round 21 B. Average Sleep Time
可以先把每一天的贡献次数乘上睡眠时间,最后加在一起除以(n-k+1)即可#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define INF 0x3f3f3f3f#defin原创 2017-05-16 11:58:38 · 294 阅读 · 0 评论 -
codeforces Educational Codeforces Round 21 C. Tea Party
先把所有的杯子按尺寸大小排序,然后把每个杯子都倒上一半,若是不够就输出-1,若是没倒完就从尺寸大的开始都倒满,一直到把所有茶都倒完,因为排序的时候后打乱顺序,所以用结构体来记录杯子序号即可。#include#include#include#include#include#include#include#include#include#include#include#inc原创 2017-05-16 12:03:39 · 364 阅读 · 0 评论 -
codeforces Educational Codeforces Round 21 D. Array Division
分两种情况,一个是后面的数放到前面,另一种是前面的数放到后面(其实还有一种是无变化,可以放到其中一种来看)分别记录前缀和和后缀和,用两个map记录某个数出现的最早坐标和最晚坐标,首先如果总和是奇数就输出NO,否则就进行从前向后遍历,若出现 最晚坐标的map[总和/2-前缀和]>当前坐标 就输出YES,若出现总和/2==前缀和也输出YES,另外再从后向前遍历一遍,用后缀和和最早坐标的原创 2017-05-16 12:12:14 · 328 阅读 · 0 评论 -
Educational Codeforces Round 20 A - Maximal Binary Matrix
就是一个n*n方阵,有k个1放在里面,然后要求对角线对称且字典序最大,如果k>n*n就输出-1,否则就看半边,遍历一遍,k足够放两个1的话,就放一个1,然后每次换行的时候要判断还剩几个1没放,剩一个就放在对角线,如果还剩两个的话就在对角线连放两个1,然后再把另外半边对称放上就ok了(详见代码)。#include#include#include#include#include#incl原创 2017-04-30 10:17:37 · 303 阅读 · 0 评论 -
Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2) D. Volatile Kite
可单独拿一个点来看,如果要使凸包退化,即使得其与其的相邻两点变成至少三点共线,这种情况的移动最小距离是以其相邻两点为底,该点为顶点的三角形的高的一半,所以二分答案,遍历每个点求三角形的高的一半和该值作对比即可#includeusing namespace std;int n,px[1005],py[1005];double l=0,r=1e9;double distance(doubl原创 2017-04-17 19:50:26 · 421 阅读 · 0 评论 -
codeforces round#408(div.2) B. Find The Bone
题意:经典的游戏(忘了叫什么了。。。),大概是像是某个杯子放了一个球,然后各种换,最后猜在那个里面,只是这道题的话在某些杯子下有一些洞,有球的杯子到了这里球会掉下去不出来。大概就是按着操作来就可以ac了,要注意如果第一个杯子下有洞刚开始就会掉下去。#includeusing namespace std;int n,m,k,x,hole[1000005],u,v,cu=1;in原创 2017-04-11 11:31:42 · 476 阅读 · 0 评论 -
codeforces round#408(div.2) C. Bank Hacking
题意:相当于若干个银行构成了一个无根树,我们需要把所有的银行hack掉,刚开始可以随意选一个,后来就只能选被hack过的邻居才行,每个银行都有他们的strength,hack它需要不比它小的strength值,每次hack一个银行后,它的邻居和邻居的邻居strength值都会+1,求hack全部的银行需要的最小strength值。可以想,如果只有一个最大值,那么存在两种情况,如果所有银原创 2017-04-11 15:59:12 · 697 阅读 · 0 评论 -
codeforces round#404(div.2) A. Anton and Polyhedrons
题意:有若干立体图形,每个有固定的边数,计算输入图形的总边数。水题,暴力求解即可。#include#include#include#include#include#include#include#include#include#include#include#include#include#define INF 0x3f3f3f3f#define原创 2017-03-16 18:06:25 · 301 阅读 · 0 评论 -
codeforces round#404(dv.2) B. Anton and Classes
题意:Anton喜欢下棋和编程,打算去上这两门课,每门课都有若干时间段,Anton想要在课间休息尽可能多的时间,并输出这个时间,若是不能上两节课就输出0。简单贪心,遍历一遍分别找出两门课的最晚开始时间和最早结束时间,然后分别用最晚开始时间减最早结束时间找出最大值。#include#include#include#include#include#include#i原创 2017-03-16 18:09:52 · 273 阅读 · 0 评论 -
codeforces round#404(div.2) C. Anton and Fairy Tale
题意:一个谷仓共n粒米(最多存放n粒),每天会先送来m粒米,然后会有鸟来吃,第i天会来i只鸟,一只鸟吃一粒米,输出第几天谷仓的米可以被鸟吃完。首先我们先特判一下,当n)然后考虑n>m的情况,前m天肯定是吃不完,从第m+1天开始,每天多来一只鸟,也就是第i天(i>m)会一共吃掉(m+1+2+...+i)粒米,即(1+i)*i/2+m粒米只需找出最小的i使得该值>=n,即满足(i+原创 2017-03-16 18:16:23 · 340 阅读 · 0 评论 -
Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2) A. Vicious Keyboard
改一次最多增加一个,遍历一遍即可#includeusing namespace std;char s[105];int cnt=0,flag=0;int main(){ cin>>s; for(int i=0;i<strlen(s)-1;i++) { if(s[i]=='V'&&s[i+1]=='K')cnt++,i++; el原创 2017-04-17 19:39:04 · 397 阅读 · 0 评论 -
Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2) B. Valued Keys
只要y的每个字母都小于等于x的就直接把y输出,否则输出-1#includeusing namespace std;string s1,s2;int main(){ cin>>s1>>s2; for(int i=0;is1[i])return cout<<-1,0; cout<<s2; return 0;}原创 2017-04-17 19:40:59 · 384 阅读 · 0 评论 -
Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2) C. Voltage Keepsake
直接二分即可,右端点的初始值要设大一些,然后直接循环若干次,若大于一个足够大的数就输出-1,否则就输出左端点#includeusing namespace std;int n,p,a[100005],b[100005];double l=0,r=1e15;bool check(double x){ double ret=0; for(int i=0;i<n;i++)r原创 2017-04-17 19:44:38 · 397 阅读 · 0 评论 -
codeforces round#404(div.2) D. Anton and School - 2
题意:定义RSBS序列,使得该序列为偶数个数(非空),前一半都是左括号,后一半都是右括号;输入一列括号,可将其部分括号删除使得剩下变成RSBS序列,输出删除的方法数。一道数学题,先计算出右括号的总数量r,从左面开始遍历,左括号数量初始为l=0,遇到右括号就r--,遇到左括号就计算不删除该括号和其前面的左括号,右边的右括号组成的RSBS数量,即C(l+r,r-1)(意为当前不算该左括号的原创 2017-03-16 18:37:47 · 360 阅读 · 0 评论