1. 算法入门简单模拟(1)

1.A1002

#include<stdio.h> 
const int maxn = 1100;
double p[maxn] = {0};
int main(){
	int n,k,count = 0;
	double a;
	scanf("%d",&k);
	while(k--){
		scanf("%d %lf",&n,&a);	
		p[n] += a; 
	}
	scanf("%d",&k);
	for(int  i = 0;i<k;i++){
		scanf("%d %lf",&n,&a);	
		p[n] += a; 
	}
	for(int i= 0;i<maxn;i++){
		if(p[i] != 0)
			count++; 
	} 
	printf("%d",count);
	for(int i = maxn;i>=0;i--){
		if(p[i] != 0)	printf(" %d %.1f",i,p[i]);
	} 
	return 0;
}

2.A1009

#include<stdio.h> 
struct Poly{
	int exp;
	double cof;
}poly[1001];
double ans[2010];
int main(){
	int n,m,number = 0;
	scanf("%d",&n);
	for(int  i = 0;i<n;i++){
		scanf("%d %lf",&poly[i].exp,&poly[i].cof);	
	}
	scanf("%d",&m);
	for(int  i = 0;i<m;i++){
		int exp;
		double cof;
		scanf("%d %lf",&exp,&cof);	
		for(int j = 0;j<n;j++){
			ans[exp + poly[j].exp] += (cof*poly[j].cof); 
		}
	}
	for(int i= 0;i<=2000;i++){
		if(ans[i] != 0.0)
			number++; 
	} 
	printf("%d",number);
	for(int i = 2000;i>=0;i--){
		if(ans[i] != 0.0)	printf(" %d %.1f",i,ans[i]);
	} 
	return 0;
}

3.A1025

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct Student{
	char id[15];
	int score;
	int location_number;		//考场号 
	int local_rank;				//考场内排名 
}stu[30010];
bool cmp(Student a,Student b){
	if(a.score != b.score) return a.score > b.score;
	else return strcmp(a.id,b.id) < 0; 
} 
int main(){
	int n,k,num = 0;
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d",&k);
		for(int j = 0;j<k;j++){
			scanf("%s %d",stu[num].id,&stu[num].score);
			stu[num].location_number  = i;
			num++;
		}	
	sort(stu + num - k,stu + num,cmp);		//将该考场的考生排序
	stu[num-k].local_rank = 1;
	for(int j = num-k+1;j<num;j++){
		if(stu[j].score ==stu[j-1].score){
			stu[j].local_rank = stu[j-1].local_rank;
		}else{
			stu[j].local_rank = j+1-(num-k);
		}
	}
}
	printf("%d\n",num);
	sort(stu,stu+num,cmp);
	int r = 1;
	for(int i= 0;i<num;i++){
		if(i>0 && stu[i].score != stu[i-1].score){
			r = i + 1;
		}
		printf("%s ",stu[i].id);
		printf("%d %d %d\n",r,stu[i].location_number,stu[i].local_rank);
	} 
	return 0;
} 

4.A1042

#include<stdio.h> 
const int N = 54;
char mp[5] = {'S','H','C','D','J'};
int start[N+1],end[N+1],next[N+1]; 
int main(){
	int k;
	scanf("%d",&k);
	for(int i = 1;i<=N;i++)
		start[i] = i;
	for(int i = 1;i<=N;i++)
		scanf("%d",&next[i]);
	for(int  step = 0;step<k;step++){
		for(int i = 1;i<=N;i++)
			end[next[i]] = start[i];
		for(int i = 1;i<=N;i++)
			start[i] = end[i];
	}
	for(int i = 1;i<=N;i++){
		if(i != 1) printf(" ");
		start[i]--;
		printf("%c%d",mp[start[i]/13],start[i]%13+1);
	}
	return 0;
}

5.A1046

#include<stdio.h>
#include<algorithm>
using namespace std;
const int MAXN = 100005;
int dis[MAXN],A[MAXN];
int main(){
	int sum = 0,query,n,left,right;
	scanf("%d",&n);
	for(int i = 1;i<=n;i++){
		scanf("%d",&A[i]);
		sum += A[i];
		dis[i] = sum;
	}
	scanf("%d",&query);
	for(int i = 1;i<=query;i++){
		scanf("%d%d",&left,&right);
		if(left>right)	swap(left,right);
		int temp = dis[right-1] - dis[left-1];
		printf("%d\n",min(temp,sum - temp)); 
	}  
	//printf("%d",dis[0]);
	return 0;
}

6.A1065

#include<stdio.h> 
int main(){
	int n,tcase = 1;
	scanf("%d",&n);
	while(n--){
		long long a,b,c;
		scanf("%lld%lld%lld",&a,&b,&c);
		long long res = a + b;
		bool flag;
		if(a<0&&b<0&&res>=0)	flag = false; 
		else if(a>0&&b>0&&res<0)	flag = true; 
		else if(res>c)	flag = true;
		else flag = false;
		if(flag==true)	printf("Case #%d: true\n",tcase++);
		else	printf("Case #%d: false\n",tcase++);
	}
	return 0;
}
发布了26 篇原创文章 · 获赞 3 · 访问量 197

猜你喜欢

转载自blog.csdn.net/qq_41898248/article/details/104051410
1.