Java深圳补贴_Java实现 洛谷 P1023 税收与补贴问题

4de11994e70c66c7eb0f36e2fd1b9f05.png

ebe30a032f06664104a84cbc423f5f96.png

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);

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值