重庆市第九届大学生程序设计大赛Day1.题D代码

~~第一天的比赛结束了。比赛期间没勘误出来的题目回寝肝了好久才完成。
回头仔细想想,这么简单的题目,我没AC全是因为各种细节上的处理不到位啊!
果然还是平时练习的太少啦!cay嘤嘤嘤嘤嘤嘤嘤嘤嘤
另:Day1的比赛前三全是高中

题目:好吃的鸭脖
Input file: standard input
Output file:standard output
Time limit:1 second
Memory limit:256 megabytes

达瓦迷恋上了麻辣鸭脖,但是鸭脖太辣了,要靠牛奶解辣。给你n个鸭脖的辣度以及n瓶牛奶的甜度,每瓶牛奶只能接一个鸭脖的辣,如果牛奶的甜度大与鸭脖的辣度,达瓦的幸福感就能得到1点的提升,相同幸福感不变,否则减少一点。
请你合理地分配牛奶,让达瓦的幸福感最高

Standard Input Standard Output
2 //整数T,表示数据组数 2//第一组数据的最高幸福感数
4 //每组数据第一行整数n(1<=n<=1000) 3//第二组…
2 3 8 9//n个整数,鸭脖的辣度a[i] (1<=a[i[<=2000
1 4 7 10//n个整数,牛奶的甜度b[i] (1<=b[i]<=2000
5//另一组数据…
3 23 21 4 56
6 7 33 42 1

(题目要求临时修改过,可能是为了降低难度提高AC率。结果…虽然这确实是AC率最高的题,但是有题目可以AC的队伍并没有多少cry嘤嘤嘤嘤嘤嘤嘤)

下面是粗浅的代码:

#include
int main()
{
	int t, n, i, j,k;
	scanf_s("%d", &t);
	int hp[1000] = { 0 };
	k = t;
	while (t>0) {
		scanf_s("%d", &n);
		int *a, *b;
		a = (int*)malloc(n * 4);
		b = (int*)malloc(n * 4);
		//——————————取值、冒排a[]与b[]——————————————————————
		
		for (i = 0; i <= n - 1; i++){
			scanf_s("%d", &a[i]);
		}
		
		for (i = 0; i <= n - 2; i++) {
			for (j = i + 1; j <= n - 1; j++) {
				if (a[i] > a[j]) {
					a[i] = a[i] + a[j];
					a[j] = a[i] - a[j];
					a[i] = a[i] - a[j];
				}
			}
		}
		
		for (i = 0; i <= n - 1; i++)
		{
			scanf_s("%d", &b[i]);
		}
		for (i = 0; i <= n - 2; i++) 
		{
			for (j = i + 1; j <= n - 1; j++)
			{
				if (b[i] > b[j]) 
				{
					b[i] = b[i] + b[j];
					b[j] = b[i] - b[j];
					b[i] = b[i] - b[j];
				}
			}
		}
		
		//甜度与酸度比,最接近的一组(甜度>酸度)被后组覆盖。每覆盖一组,hp++;若相同,只覆盖,hp不自增。
          a[n]=2001;
		for (i = 0; i <= n - 1; i++) {
			for (j = 0; j <= n - 1; j++) {
				if (b[i] == a[j]) {
					for (int q = j; q <= n - 1; q++) {
						a[q] = a[q + 1];
						//printf(" %d ", a[q]);
					}
					j -= 1;
				}
				else if (b[i] > a[j] && b[i] < a[j + 1]) {
					for (int q = j; q <= n - 1; q++) {
						a[q] = a[q + 1];
					}
					j -= 1;
					hp[t]++;
				}
			}
		}
		//printf(" %d \n", hp[t]);
		for (i = 0; i <= n; i++) {
			if (a[i] == 2001) {
				hp[t] -= i;
				//printf(" %d %d %d\n", hp[t],t,k);
				break;
			}
		}
		t--;
	}

	for (i = k; i >0; i--) {
		printf("%d\n", hp[i]);
	}

	return 0;
}

我并没有在系统上AC过。这是后来自己捣鼓验证对的代码。

欢迎各路大神前来指教

小弟就此暂别~

你可能感兴趣的:(程序)