第七届北京交通大学ACM程序设计竞赛网络预赛一

=.=被虐罚时了......

新键盘感觉不错?

吐槽一开始的所有sample output......

2个罚时有木有.....

FB没拿到.....


貌似都是水题?

A  Administrator

模拟,普通计数

1Y

#include<stdio.h>
int main(){
	int sum[10],got[10];
	int k,z;
	scanf("%d",&z);
	for(k=1;k<=z;k++){
		int n;
		int i;
		for(i=1;i<=2;i++){
			sum[i]=0;
			got[i]=0;
			}
		scanf("%d",&n);
		for(i=1;i<=n;i++){
			int t,x,y;
			scanf("%d%d%d",&t,&x,&y);
			sum[t]+=x+y;
			got[t]+=x;
			}
		printf("Case #%d:\n",k);
		for(i=1;i<=2;i++){
			if(sum[i]<=2*got[i])printf("LIVE\n");
			else printf("DEAD\n");
			}
		}
	return 0; 
	}

B Boy and girl

3Y

悲剧的格式...

开个数组统计每个字符出现次数就好

sort也不错?

#include<stdio.h>
#include<math.h>
#include<vector>
#include<string.h>
#include<algorithm>
int main(){
	int k,z;
	scanf("%d",&z);
	for(k=1;k<=z;k++){
		char s[1000];
		int aim[300];
		scanf("%s",s);
		int i;
		for(i=0;i<=255;i++)aim[i]=0;
		for(i=0;i<strlen(s);i++)aim[s[i]]++;
		int res=0;
		for(i=0;i<=255;i++)if(aim[i])res++;
		printf("Case #%d:",k);
		if(res%2==0)printf(" CHAT WITH HER!\n");
		else printf(" IGNORE HIM!\n");
	//	printf("\n");
		}
//	return main();
	return 0;
	}

C Cash

水题...开个表格找max就行了

#include<stdio.h>
int map[30][70];
int main(){
	int k,z;
	scanf("%d",&z);
	for(k=1;k<=z;k++){
		int i,j;
		for(i=0;i<=23;i++)for(j=0;j<=59;j++)map[i][j]=0;
		int n;
		scanf("%d",&n);
		for(i=1;i<=n;i++){
			int h,m;
			scanf("%d%d",&h,&m);
			map[h][m]++;
			}
		int res=0;
		for(i=0;i<=23;i++)for(j=0;j<=59;j++)if(map[i][j]>res)res=map[i][j];
		printf("Case #%d: %d\n",k,res);
		}
	return 0;
	}


DCoins

2Y

第一次忘记处理a[1]和偶数了..

想了许久才确定提交

实际上偶数的永远无解

最后一堆拿不到...

然后从后两个一对只能被最大可能的x给干掉,维护下前面的,计数就好

贪心?

#include<stdio.h>
int main(){
	int k,z;
	scanf("%d",&z);
	for(k=1;k<=z;k++){
		int n;
		int a[110];
		int i,j,res;
		scanf("%d",&n);
		for(i=1;i<=n;i++)scanf("%d",&a[i]);
		int max=-1;
		for(i=n;i>=1;i--)if(2*i+1<=n){
			max=i;
			break;
			}
		if(max==-1||n%2==0)res=-1;
		else {
			res=0;
			for(i=max;i>=1;i--){
				int move=a[2*i+1];
				if(a[2*i]>move)move=a[2*i];
				res+=move;
				a[i]-=move;
				if(a[i]<0)a[i]=0;
				a[2*i]=0;a[2*i+1]=0; 
				}
			res+=a[1];
			}
		printf("Case #%d: %d\n",k,res);
		}
//	return main();
	return 0;
	}

E Greg's Workout

就是轮着来,看哪个最大...送水的

#include<stdio.h>
int a[10];
int main(){
	int k,z;
	scanf("%d",&z);
	for(k=1;k<=z;k++){
		int n;
		scanf("%d",&n);
		int i;
		for(i=0;i<3;i++)a[i]=0;
		for(i=0;i<n;i++){
			int t;
			scanf("%d",&t);
			a[i%3]+=t;
			}
		int max=0;
		for(i=0;i<3;i++)if(a[i]>max)max=a[i];
		int res;
		for(i=0;i<3;i++)if(a[i]==max)res=i;
		printf("Case #%d:\n",k);
		     if(res==0)printf("chest\n");
		else if(res==1)printf("biceps\n");
		else if(res==2)printf("back\n");
		}
	return 0;
	}


F Ice Skating

一开始没敢碰..

其实就是有了一个雪堆,横竖一行一列都可以达到

然后假设从第一个开始

遍历一下

然后如果有到不了的

在第一个雪堆那一行加一个雪堆就能拐弯了  

然后再遍历...

数据规模和谐的可以不想太多

#include<stdio.h>
int map[1010][1010];
int can[1010][1010]; 
struct snow{int x,y;}s[1010];
int n;
int ok[1010];
int f(int t){
	ok[t]=1;
	int i;
	for(i=1;i<=1000;i++)can[i][s[t].y]=1;
	for(i=1;i<=1000;i++)can[s[t].x][i]=1;
	for(i=1;i<=n;i++){
		if(!ok[i]&&can[s[i].x][s[i].y])f(i);
		}
	}
int main(){
	int k,z;
	scanf("%d",&z);
	for(k=1;k<=z;k++){
		int i,j;
		for(i=1;i<=1000;i++)for(j=1;j<=1000;j++){
			map[i][j]=0;
			can[i][j]=0;
			}
		for(i=1;i<=1000;i++)ok[i]=0;
		scanf("%d",&n);
		for(i=1;i<=n;i++){
			int x,y;
			scanf("%d%d",&x,&y);
			s[i].x=x;s[i].y=y;
			map[x][y]=1;
			}
		f(1);
		int res=0;
		for(i=1;i<=n;i++){
			if(!ok[i]){
				res++;
				n++;
				s[n].x=s[1].x;
				s[n].y=s[i].y;
				f(n);
				}
			}
		printf("Case #%d: %d\n",k,res);
		}
	return 0;
	}


G Increase and Decrease

就是能不能使尽可能多数的一样

就是看总和能不能整除...

#include<stdio.h>
int main(){
	int a[100010];
	int k,z;
	scanf("%d",&z);
	for(k=1;k<=z;k++){
		int n;
		scanf("%d",&n);
		int i;
		int sum=0;
		for(i=1;i<=n;i++){
			scanf("%d",&a[i]);
			sum+=a[i];
			}
		printf("Case #%d: ",k);
		if(sum%n==0)printf("%d\n",n);
		else printf("%d\n",n-1);
		}
	return 0;
	}

H LCM Challenge

5Y

坑了不少罚时...

I64u什么的...

没考虑要用u,没用I64用的ll

但关键是一开始只想到了 奇数的处理

偶数没想明白

偶数有两种情况,取则继续要n-1,然后枚举最大x使得x,n,n-1两两互质有一个解

另外一种就是不不取n

这样就是奇数的处理方式

罚时被虐的太惨了...

#include<stdio.h>
#define LL unsigned long long
LL gcd(LL a,LL b){
	if(b==0)return a;
	if(a<b)return gcd(b,a);
	return gcd(b,a%b);
	}
LL max(LL a,LL b){
	if(a>b)return a;return b;
	} 
int main(){
	int k,z;
	scanf("%d",&z);
	for(k=1;k<=z;k++){
		LL n;
		scanf("%I64u",&n);
		LL res;
		if(n==1)res=1;
		else if(n==2)res=2;
		else if(n%2!=0)res=n*(n-1)*(n-2);
		else {
			LL i;
			for(i=n-3;i>=1;i-=2)if(gcd(i,n)==1&&gcd(i,n-1)==1){
				res=n*(n-1)*i;
				break;
				}
			if(n>=4)res=max(res,(n-1)*(n-3)*(n-2));
			}
		printf("Case #%d: ",k);
		printf("%I64u\n",res);
		}
	return 0;
	}

嗯...预赛第二场继续试水...

return 2;

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值