zoukankan      html  css  js  c++  java
  • agc034C Tests

    题意:$n$场考试,满分$X$分。你的对手每场考试得了$b_i$分。你每学习一个小时就能把某场考试提高1分。你能给每场考试选择一个$[l_i,u_i]$之间的加权。求最少花多少小时才能不比对手低

    $n, X, l_i, u_i leq 10^5, b_i leq X$

    简单的二分。

    首先最多只会有一场考试不是0分或X分,因为如果有两场考试都是$>0, <X$的话,一定可以把其中一场考试分数分给另外一场考试一些会更优。

    然后枚举一下那个不是0分或X分的考试就行了。剩下的,提前排好序,贪心选最好的几个。

    我场上大概是sb。最开始想到过二分,后来想到了那个结论,却又忘了二分,一直在想怎么动态维护些东西,没把二分和结论两个合起来想。

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn = 1e5 + 7;
    int n;
    long long X, D;
    
    struct Node{
    	long long x, l, r, num;
    	bool operator <(const Node &b) const{
    		return num > b.num;
    	}
    }node[maxn];
    long long sum[maxn];
    
    bool check(long long x) {
    	int d = x / X, o = x % X;
    	long long now = 0;
    	for (int i = 1; i <= n; ++i) {
    		if(o < node[i].x) now = (o - node[i].x) * node[i].l;
    		else now = (o - node[i].x) * node[i].r;
    		if(i <= d) now += sum[d + 1] - node[i].num + node[i].x * node[i].l;
    		else now += sum[d] + node[i].x * node[i].l;
    		if(now >= D) return 1;
    	}
    	return 0;
    }
    
    int main() {
    	scanf("%d%lld", &n, &X);
    	long long l = -1, r = 0, mid;
    	for (int i = 1; i <= n; ++i) {
    		scanf("%lld%lld%lld", &node[i].x, &node[i].l, &node[i].r);
    		node[i].num = node[i].x * node[i].l;
    		D += node[i].num;
    		node[i].num += (X - node[i].x) * node[i].r;
    		r += node[i].x;
    	}
    	sort(node + 1, node + n + 1);
    	for (int i = 1; i <= n; ++i) sum[i] = sum[i - 1] + node[i].num;
    	while(l < r - 1) {
    		mid = (l + r) >> 1;
    		if(check(mid)) r = mid;
    		else l = mid;
    	}
    	printf("%lld
    ", r);
    	return 0;
    }
    

      

    当年AGC都是从D开始做的,现在经常C甚至B都不会,难受死了,越来越退步了。

    老张还想让我回学校给学弟讲课,别想了,太菜了,就这水平到底是学弟教我还是我教学弟啊。。。

    前两天Yyyyyyyk来my和我一起玩,玩得挺开心的,聊了一整天。感觉挺奇妙的,当初一届一起学OI的,基本上都去了BJ和SH,却几乎没人再打ACM了。而我呢,本来也是不愿再碰,但是那天纠结了很久,就是有点不甘心啊。从OI到ACM,一个Au都没有。学OI的时候,无论是CTSC、APIO、NOI,真的一个Au都没有。而去年打ACM,无论ICPC还是CCPC还是国外的ICPC,不是Ag就是Cu。高一就有的Au梦,到大一还没能实现。于是我这个蒟蒻厚颜无耻地留下来了,训练垫底什么的也早已习惯。

    前段时间期末那阵,楼上装修电钻啥的吵死人了,而且经常熬夜,晚上睡不好啥的,白天要睡午觉也经常被吵得睡不着,最近也经常半夜惊醒或者失眠或者一下子睡很久感觉都睡不够。现在的状态真的太差了。太差了。想早点回学校

  • 相关阅读:
    [LeetCode] Most Profit Assigning Work 安排最大利润的工作
    [LeetCode] Friends Of Appropriate Ages 适合年龄段的朋友
    [LeetCode] Goat Latin 山羊拉丁文
    [LeetCode] Binary Trees With Factors 带因子的二叉树
    [LeetCode] Card Flipping Game 翻卡片游戏
    [AWS] Nginx Started but not Serving AWS上Nginx服务器无法正常工作
    [LeetCode] Shortest Distance to a Character 到字符的最短距离
    [LeetCode] Short Encoding of Words 单词集的短编码
    [LeetCode] Most Common Word 最常见的单词
    Solve Error: MissingSchemaError: Schema hasn't been registered for model "YourModel".
  • 原文地址:https://www.cnblogs.com/Serene-shixinyi/p/13394113.html
Copyright © 2011-2022 走看看