CF 629B Far Relative’s Problem 651A Joysticks 651B Beautiful Paintings
2020-1-29
·
hexWers

前言

发表人生中第一个技术博客,还请各位大佬指教 因为昨天帮家里人装家具没看到比赛信息,后来匆匆忙忙比赛就只写了第一题,然后要来补题,诶~~~ 本次比赛在vjudge上进行,每周五晚会进行比赛,没写出来的题要补,(其实听题解的时候我都还没看题[破涕为笑]) 希望未来的某一天,我能拥有自己的服务器,挂着自己搭建的博客…

话不多说,进入正题

Far Relative’s Problem CodeForces - 629B

开了两个大小为666的数组(大一点防越界)代表一年间男女可以来聚会的人数,输入男(女)之后在代表男(女)数组里面+1,代表那一天有多少男(女)可以聚会. 由于是一对一对的,最后遍历的时候男女的人数取小,代码中是 min( f [ i ] , m [ i ] ) 从0开始依次比较

#include<stdio.h>
int min(int a,int b)
{
	if(a<b){
		return a;
	}
	else{
		return b;
	}
}
int main()
{
	int i,a,b,t,k,j;
	int f[666],m[666];
	char r;
	while(~scanf("%d",&t))
	{
		getchar();//吃掉回车
		for(i=0;i<666;i++){//初始化
			f[i]=0;m[i]=0;
		}
		for(i=0;i<t;i++){
			scanf("%c %d %d",&r,&a,&b);
			//在m和f数组里加
			if(r=='M'){
				for(j=a;j<=b;j++){
					m[j]++;
				}
			}
			else if(r=='F'){
				for(j=a;j<=b;j++){
					f[j]++;
				}
			}
			getchar();
		}
		k=min(f[0],m[0]);
		for(i=1;i<666;i++){
			if(min(f[i],m[i])>k){由于是一对,所以取小
				k=min(f[i],m[i]);
			}
		}
		printf("%d\n",k*2);
	}
}

Joysticks CodeForces - 651A

把输入的两个数比较大小,大的那个-2,小的那个+1,无限循环直到有一个<=0, 注意一下判断a<1||b<1||a==1&&b==1判断的条件要在a-=2;b++;前面 代码如下

#include<stdio.h>
int main()
{
	int i,j,k,a,b,t;
	while(~scanf("%d %d",&a,&b))
	{
		t=0;
		while(1)
		{
			if(a<1||b<1||a==1&&b==1){//注意a==1&&b==1这个条件
				break;
			}
			if(a>b);//确保a是大的 
			else{
				int swap = a;
				a = b;
				b = swap;
			}
			a-=2;b++;t++;
		}
		printf("%d\n",t);
	}
	return 0;
 } 

Beautiful Paintings CodeForces - 651B

这个题嘛,我也想了蛮久的,看了别人的还有点看不懂,我原本也想怎么把数组分开,后来就发现不需要这样,我说一下我的思路吧 输入的数范围在1000以内,然后开一个范围超过1000的数组来存,输入的数当做数组的下标,每输入一次那个数,那么代表那个数的数量的变量to[i]就+1,最后来几次遍历,to数组里只要还有没减去的数,就继续循环,直到数组里所有数组的数全部为0

#include<stdio.h>
int to[1005];
int main()
{
	int i,m,t,data;
	scanf("%d",&t);
	data=0;
	for(i=0;i<t;i++){
		scanf("%d",&m);
		to[m]++;
	}
	while(1)
	{
		int cut=0;
		for(i=0;i<1002;i++){
			if(to[i]>=1){
				to[i]--;
				cut++;//代表数量,像5 4 3 2 1,有五个数,但是在下面data相加的时候要-1
			}
		}
		if(cut==0){
			break;
		}
		data+=cut-1;
	}
	printf("%d\n",data);
}
}

鉴于本人代码能力有限,可能会有更好的算法,若有错误,还请各位指教

好想回学校敲代码~-~