标签:ast val clu ring bre targe 数据 main lib
题解
对于这道题目其实只关乎3个价位的利润:
expect-1 expect expect+1
一旦利润: expect-1 ≤ expect ≥ expect+1
那么在这种情况下的税收和补贴就可以实现要求
(题目不是说:
这样一开始按这样算的:利润: expect-1 < expect > expect+1
但是最后一个测试点并不允许我这样QWQ,是我理解问题还是数据的锅QWQ
如果是严格相对最大,呐就是题目的锅了
可能题目不要求严格最大QWQ
)
代码
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<string> #include<cstring> #include<cstdlib> #include<queue> using namespace std; inline int read() { int ans=0; char last=‘ ‘,ch=getchar(); while(ch<‘0‘||ch>‘9‘) last=ch,ch=getchar(); while(ch>=‘0‘&&ch<=‘9‘) ans=ans*10+ch-‘0‘,ch=getchar(); if(last==‘-‘) ans=-ans; return ans; } int expt,cb,maxval,maxcnt,jia,prinum=0; int lv,ln,ev,en,rv,rn; bool flag=0; struct node { int val,cnt; }pri[100010]; void work(int x) { int k1=ln*(lv-cb+x); int k2=en*(ev-cb+x); int k3=rn*(rv-cb+x); if(k1<=k2&&k2>=k3) flag=1; } int main() { expt=read(); pri[++prinum].val =read(); pri[prinum].cnt =read(); maxval=cb=pri[prinum].val ; maxcnt=pri[prinum].cnt; int x,y; while(scanf("%d%d",&x,&y)) { if(x==-1&&y==-1) break; pri[++prinum].val =x; pri[prinum].cnt =y; if(x>maxval) { maxval=x; maxcnt=y; } if(x==expt) ev=x,en=y; if(x==expt-1) lv=x,ln=y; if(x==expt+1) rv=x,rn=y; } jia=read(); if(!lv) lv=expt-1,ln=maxcnt-jia*(lv-maxval); if(!ev) ev=expt,en=maxcnt-jia*(ev-maxval); if(!rv) rv=expt+1,rn=maxcnt-jia*(rv-maxval); for(int i=1;i<=expt;i++) { work(i); if(flag){ printf("%d\n",i); return 0; } work(-i); if(flag){ printf("%d\n",-i); return 0; } } printf("NO SOLUTION\n"); return 0; }
标签:ast val clu ring bre targe 数据 main lib
原文地址:https://www.cnblogs.com/xiaoyezi-wink/p/11241116.html