zoukankan      html  css  js  c++  java
  • P1023 税收与补贴问题

    P1023 税收与补贴问题

    题解

    对于这道题目其实只关乎3个价位的利润:

         expect-1     expect     expect+1 

    一旦利润: expect-1  ≤ expect  ≥  expect+1 

    那么在这种情况下的税收和补贴就可以实现要求

    解释一下为啥>=和,<=

    题目说:

    这样一开始按这样算的:利润: expect-1  <  expect  >  expect+1 

    但是最后一个测试点并不允许我这样QWQ,是我理解问题QWQ

    解释一下,比如3个数  a=5  ,  b=5  ,  c=1

    最大值是5

    a既然等于5,那么a就是相对最大值啊

    再者,题面说的是“在这个价格上能取到最大总利润”

    最大值本来就可以大于等于

    代码

    #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
    ",i); return 0; }
            work(-i);
            if(flag){ printf("%d
    ",-i); return 0; }
        }
        printf("NO SOLUTION
    ");
        return 0;
    }
  • 相关阅读:
    七月算法--12月机器学习在线班-第七次课笔记—最大熵
    七月算法--12月机器学习在线班-第八次课笔记—推荐系统
    七月算法--12月机器学习在线班-第九次课笔记—推荐系统
    七月算法--12月机器学习在线班-第十次课笔记—人工神经网络
    常用测试用例总结
    word 保存错误
    Mysql(免安装版)安装、配置与卸载
    谈谈日志
    idea maven 仓库配置
    如何建立你自己的开发知识体系---转载
  • 原文地址:https://www.cnblogs.com/xiaoyezi-wink/p/11241116.html
Copyright © 2011-2022 走看看