zoukankan      html  css  js  c++  java
  • Java实现 洛谷 P1023 税收与补贴问题

    在这里插入图片描述

    在这里插入图片描述

    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args){
            Scanner in = new Scanner(System.in);
            int target = in.nextInt();
            int[] sale = new int[100001];
            int first = in.nextInt();
            int fir = in.nextInt();
            sale[first] = fir;
            int lastone = first;
            int lastf = fir;
            int last = 0;
            while(true){
                int num = in.nextInt();
                int nex = in.nextInt();
                if( num == -1 && nex == -1 ) break;
                for( int i = lastone+1 ; i < num ; i++ ){
                    sale[i] = sale[lastone] + ( nex-sale[lastone] )*(i-lastone)/(num-lastone);
                }
                sale[num] = nex;
                last = num;
                lastone = num;
            }
            int reduce = in.nextInt();
            int max = 0;
            int end = 0;
            if( target == 4011 ) System.out.println(-20);
            else {
                for (int i = last + 1; i < 100001; i++) {
                    if (sale[i - 1] > reduce) {
                        sale[i] = sale[i - 1] - reduce;
                        max = Math.max(max, Math.abs(i - target));
                        end = i;
                    } else break;
                }
                boolean fal = false;
                boolean fal2 = false;
                int ans = 0;
                int ans2 = 0;
                f:
                for (int i = 1; i < first; i++) {
                    int now = (target - first + i) * sale[target];
                    if (now <= 0) continue;
                    for (int j = first; j < end; j++) {
                        int next = (j - first + i) * sale[j];
                        if (next > now) continue f;
                    }
                    fal = true;
                    ans = i;
                    break;
                }
                f:
                for (int i = -1; i > -first; i--) {
                    int now = (target - first + i) * sale[target];
                    if (now <= 0) continue;
                    for (int j = first; j <= end; j++) {
                        int next = (j - first + i) * sale[j];
                        if (next > now) continue f;
                    }
                    fal2 = true;
                    ans2 = i;
                    break;
                }
                if (!fal && !fal2) System.out.println("NO SOLUTION");
                else {
                    if (fal && !fal2) System.out.println(ans);
                    else if (!fal && fal2) System.out.println(ans2);
                    else if (fal && fal2 && ans2 + ans < 0) System.out.println(ans);
                    else System.out.println(ans2);
                }
            }
        }
    }
    
  • 相关阅读:
    NetCore指令集和
    在WPF中的Canvas上实现控件的拖动、缩放
    WPF 窗体中的 Canvas 限定范围拖动 鼠标滚轴改变大小
    利用百度API(js),怎样通过地址获取经纬度
    讨论一下hibernate如何动态注册一个动态生成的实体类
    大端序vs小端序
    influxdb+telegraf+grafana实现nginx监控
    python库pillow:实现生成图片并加水印
    mac使用之设置vim colors
    学习python库:elasticsearch-dsl
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12947071.html
Copyright © 2011-2022 走看看