社区讨论
求助RE
P1023[NOIP 2000 普及组] 税收与补贴问题参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mi6mqt0y
- 此快照首次捕获于
- 2025/11/20 07:24 4 个月前
- 此快照最后确认于
- 2025/11/20 07:24 4 个月前
CPP
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
int est,c,sc,s[10010],pr[10010],p,w[10010],i=0,b,d,minn=99999;
int slt=0;
double k;
memset(s,0,sizeof(s));
cin>>est;
cin>>c>>sc;
pr[0]=c;s[c]=sc;
do{
i++;
cin>>pr[i];cin>>s[pr[i]];
}while(pr[i]!=-1 && s[pr[i]]!=-1);
cin>>b;
sort(pr,pr+i);
for(int j=1;j<i;j++)
{
k=(s[pr[j]]-s[pr[j-1]])/(pr[j]-pr[j-1]);
for(int h=pr[j-1]+1;h<pr[j];h++)
s[h]=s[pr[j-1]]+k*(h-pr[j-1]);
}
p=c;
for(;;)
{
p++;
if(s[p]!=0)
{
w[p]=(p-c)*s[p];
}
else
{
s[p]=s[p-1]-b;
if(s[p]<=0) break;
w[p]=(p-c)*s[p];
}
}
for(d=c-est;d<p-c;d++)
{
if(w[est]+d*s[est]>w[est-1]+d*s[est-1] && w[est]+d*s[est]>w[est+1]+d*s[est+1])
{
if(abs(d)<minn)
{
if(d>=0) slt=1;
else slt=-1;
}
minn=min(minn,abs(d));
}
}
if(slt==1) cout<<minn;
if(slt==-1) cout<<"-"<<minn;
if(slt==0)
cout<<"NO SOLUTION";
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...