求助,一个点过不去
查看原帖
求助,一个点过不去
478461
_lfxxx_楼主2021/5/29 15:46

RT,#7没过,答案多1,代码:

#include<cstdio>
#include<algorithm>
#define rin register int
using namespace std;
struct thing{
	int a,b,num;
}t[1005];
inline bool cmp(thing a,thing b){
	return a.b>b.b;
}
int main(){
//	freopen("prod.in","r",stdin);
//	freopen("prod.out","w",stdout);
	int n,MIN=1,ans;
	scanf("%d",&n);
	for(rin i=1;i<=n;i++){
		scanf("%d",&t[i].a);
		if(t[MIN].a>t[i].a)
			MIN=i;
		t[i].num=i;
	}
	for(rin i=1;i<=n;i++)
		scanf("%d",&t[i].b);
	swap(t[MIN],t[1]);//将a时间最少的放到第一个
	sort(t+2,t+1+n,cmp);
	ans=t[1].a;//ans是时间
	int x=0,y=0;//x是a的时间,y是b的时间
	for(rin i=1;i<=n;i++){
		x+=t[i+1].a;
		y+=t[i].b;
		if(x>y){
			ans+=x-y;
			x=y;
		}
	}
	ans+=y;
	printf("%d\n",ans);
	for(rin i=1;i<=n;i++)
		printf("%d ",t[i].num);
	return 0;
}

数据#7:

in:

46 32 12 34 58 76 45 43 42 41 40 90 87 86 85 89 78 80 42 31 47 59 63 24 25
26 27 28 29 30 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4
3 2 1 32 12 23 24 34 55 66 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 21 23
24 24 25 23 29 27 31 22 34 33 35 36 37 18 19 21 22 23 24 32 22 44 31 35 39
2 12 12 23 24 25 61 67 71 78 18 13 12 15 16 17 19 34 30 97 32 45 31 71 34 98
11 100 2 99 100 6 9 8 6 4 10 9 8 9 10 91 21 23 24 15 16 17 18 19 20 21 22 23
34 35 36 37 38 39 31 11 12 13 14 15 16 17 18 19 20 31 32 33 44 45 46 47 48 1
4 5 8 9 90 44 56 57 58 59 60 21 23 25 27 29 90 23 54 76 90 200 31 23 33 43 56 78 5 17 19
21 21 33 45 48 78 76 65 70 80 90 87 75 64 32 45 31 32 33 50 40 3 5 8 9 10 11
21 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 1 2 3 4 5 6
7 8 9 10 11 12 13 14 15 16 17 29 23 45 58 3 21 22 24 25 27

out:

3135
55 54 53 52 51 50 63 49 64 48 65 47 46 66 67 68 3 57 69 70 71 72 73 74 93 75 94 76 78 35 77 95 34 100 79 83 97 58 24 59 32 80 98 81 25 82 26 27 28 29 30 89 60 4 90 91 92 11 14 13 12 1 62 61 22 2 23 99 10 9 8 96 56 21 15 20 19 18 16 6 17 7 31 41 45 88 37 42 44 87 43 38 36 39 86 85 40 33 5 84

求各位大佬指点一下。

2021/5/29 15:46
加载中...