社区讨论

第4点wa,哪位巨佬可以帮忙看一下?

P1023[NOIP 2000 普及组] 税收与补贴问题参与者 2已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@lo24eamv
此快照首次捕获于
2023/10/23 07:48
2 年前
此快照最后确认于
2023/11/03 08:07
2 年前
查看原帖
CPP
#include <bits/stdc++.h>
#define MaxN 114514
#define For(i,s,e) for(int i=s;i<=e;i++)
#define dFor(i,s,e) for(int i=s;i>=e;i--)
#define Len(s) s.size()
#define ll long long
using namespace std;
struct node{
	int p,m;
}a[MaxN],tong[MaxN];
int tp,c,n,j,mx,ed;
int cmp(node x,node y){
	return x.p<y.p;
}
int main(){
	int x,y;
	scanf("%d%d%d",&tp,&x,&y);
	do{
		a[++n].p=x;a[n].m=y;
		scanf("%d%d",&x,&y);
	}while(x!=-1 && y!=-1);
	scanf("%d",&j);
	
	sort(a+1,a+n+1,cmp);
	int t=0;c=a[1].p;
	For(i,c,a[n].p-1){
		if(i==a[t+1].p)t++;
		int nj=(a[t].m-a[t+1].m)/(a[t+1].p-a[t].p);
		int xl=a[t].m-(i-a[t].p)*nj;
		a[i].p=(i-c);a[i].m=xl;
		mx=max((i-c)*xl,mx);
//		printf("%d %d %d %d %d\n",i,t,nj,xl,i-c);
	}
	for(int i=a[n].p,k=a[n].m;k>0;i++,k-=j){
		a[i].p=(i-c);a[i].m=k;
		mx=max((i-c)*k,mx);
		ed=i;
//		printf("%d %d %d %d %d\n",i,n,j,k,i-c);
	}
	if(a[tp].m*a[tp].p>=mx){
		printf("0");
	}
	
	for(int i=1;;i++){
		int z=1,f=1,mz=a[tp].m*(a[tp].p+i),mf=a[tp].m*(a[tp].p-i);
		For(k,c+1,ed){
			int nz=a[k].m*(a[k].p+i),nf=a[k].m*(a[k].p-i);
			if(nz>mz){z=0;/*printf("%d ",nz);*/}
			if(nf>mf){f=0;/*printf("%d ",nf);*/}
			if(!z && !f)break;
		}
		//printf("%d %d\n",mf,mz);
		if(z || f){
			if(f)printf("-");
			printf("%d",i);
			return 0;
		}
	}
	return 0;
}
/*
4011
1 79990
7999 10
-1 -1
10

-20
*/
我输出-22,答案是-20;www

回复

4 条回复,欢迎继续交流。

正在加载回复...