为什么我答案对的,没有过?50分
  • 板块灌水区
  • 楼主HZx4
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/5/29 18:01
  • 上次更新2023/10/23 14:22:27
查看原帖
为什么我答案对的,没有过?50分
158665
HZx4楼主2023/5/29 18:01

RT, 1和2没过

P1023

#include<iostream>
#include<cstdio>
using namespace std;
int g,w,n;
int a[100100];  // a[i]:  i利润可以卖出的数量 
int x[2],y[2],c,ma;
int main(){
    cin>>g;
    cin>>n>>a[0];
    x[c]=0, y[c]=a[0];
    c=1-c;
    while(cin>>x[c]>>y[c]){
        if(x[c]==-1&&y[c]==-1) break;
        x[c]-=n;
        if(x[c]-x[1-c]>1){
            int q=(y[c]-y[1-c])/(x[c]-x[1-c]);
            for(int i=x[1-c]+1;i<x[c];i++){
                a[i]=a[i-1]+q;
            }
        }
        a[x[c]]=y[c];
        ma=max(x[c],ma);
        c=1-c;
    } cin>>w; g-=n;
    while(a[ma]-w>0) a[++ma]=a[ma-1]-w;
    int x1,x2,x,f; // x1: old price  x2: gov price
    for(x=0;x<=100000;x++){
        x2=(g+x)*a[g];
        f=0;
        for(int i=0;i<=ma&&!f;i++){
            x1=(i+x)*a[i];
            if(x1>x2) f=1;
        }
        if(!f){
            cout<<x<<endl;
            return 0;
        }
        f=0;
        x2=(g-x)*a[g];
        for(int i=0;i<=ma&&!f;i++){
            x1=(i-x)*a[i];
            if(x1>x2) f=1;
        }
        if(!f){
            cout<<-x<<endl;
            return 0;
        }
    }
    cout<<"NO SOLUTION";
    return 0;
}

样例1我输出的也是4

样例2:

输入

315

280 1300

300 1200

310 1100

-1 -1

150

输出:

-32

为什么过不了???

2023/5/29 18:01
加载中...