zoukankan      html  css  js  c++  java
  • [NOI.AC] candy

    题意:求净利益。
    思路:
    其实我也不怎么懂题面。
    不过这种题一般来说就是从最大的开始选。
    所以考虑贪心。
    那么代价如何处理呢??
    我们考虑两个序列同时选数,把代价每次记录到一个序列的和上,那么对于两次的净利益求最大即可。

    #include <bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define int long long
    const int maxn = 100010;
    int a[maxn];
    int b[maxn];
    inline int solve(int *a,int *b,int n,int W) {
    	int sum_a = 0;
    	int sum_b = 0;
    	int ans = -999;
    	for(int i = 1,tmp = 0;i <= n; ++i) {
    		sum_a += a[i];
    		while(tmp <= n && sum_b < sum_a) {
    			sum_b += b[++tmp];
    		}
    		if(sum_a <= sum_b) {
    			ans = max((ll)ans,sum_a - (ll)W * (i + tmp));
    		}
    	}
    	return ans;
    }
    inline bool cmp(int a,int b) {
    	return a > b;
    }
    int n,W;
    signed main () {
    	cin >> n >> W;
    	for(int i = 1;i <= n; ++i) {
    		cin >> a[i];
    	}
    	for(int i = 1;i <= n; ++i) {
    		cin >> b[i];
    	}
    	sort(a + 1,a + n + 1,cmp);sort(b + 1,b + n + 1,cmp);
    	int ans1 = solve(a,b,n,W);
    	int ans2 = solve(b,a,n,W);
    	printf("%lld\n",max(ans1,ans2));
    	return 0;
    }
    
  • 相关阅读:
    spring boot 集成 kaptcha
    3.1 表格类数据
    3.0 本章介绍
    2.9 tensor API简介
    2.8 将tensor移动到GPU上
    2.7 序列化(保存)tensor
    2.6 与numpy交互
    2020-7-22 头条 JAVA 后端面试
    API 设计最佳实践的思考
    ESXi 安装网卡vib驱动文件
  • 原文地址:https://www.cnblogs.com/akoasm/p/9635328.html
Copyright © 2011-2022 走看看