题意

分析

考场做法

考虑二分答案,R开到1e9就能过了。

判断答案合法,就判断时间和是否超过拥有的时间就行了。但要把di从小到大排序,不然容易验证贪心是错的。

时间复杂度\(O(n \log n)\)

#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
#include<string>
#include<vector>
#include<list>
#include<deque>
#include<stack>
#include<queue>
#include<map>
#include<set>
#include<bitset>
#include<algorithm>
#include<complex>
#include<cassert>
#define rg register
#define il inline
#define co const
#pragma GCC optimize ("O0")
using namespace std;
template<class T> il T read()
{
    T data=0;
    int w=1;
    char ch=getchar();
    while(!isdigit(ch))
    {
        if(ch=='-')
            w=-1;
        ch=getchar();
    }
    while(isdigit(ch))
        data=10*data+ch-'0',ch=getchar();
    return data*w;
}
template<class T> il T read(T&x)
{
    return x=read<T>();
}
typedef long long ll;
const int INF=0x7fffffff;

const int MAXN=1e5+7;
int n;
struct $
{
    int t,d;

    bool operator<(const $&rhs)const
    {
        return d<rhs.d;
    }
}a[MAXN];

bool judge(int M)
{
    ll sum=M;
    for(int i=1;i<=n;++i)
    {
        sum+=a[i].d-a[i-1].d;
        sum-=a[i].t;
        if(sum<0)
            return 0;
    }
    return 1;
}

int main()
{
  freopen("ming.in","r",stdin);
  freopen("ming.out","w",stdout);
    read(n);
    for(int i=1;i<=n;++i)
    {
        read(a[i].t);read(a[i].d);
    }
    sort(a+1,a+n+1);
    int L=0,R=1e9,ans;
    while(L<=R)
    {
        int M=(L+R)>>1;
        if(judge(M))
            ans=M,R=M-1;
        else
            L=M+1;
    }
    printf("%d\n",ans);
//  fclose(stdin);
//  fclose(stdout);
    return 0;
}

标解

旁边的大佬L君:类似B君讲过的一道题,发现可分析贡献排序,时间复杂度\(O(n \log n)\)

#include<bits/stdc++.h>

using namespace std;

#define gc c=getchar()
#define r(x) read(x)
#define ll long long

template<typename T>
inline void read(T&x){
    x=0;T k=1;char gc;
    while(!isdigit(c)){if(c=='-')k=-1;gc;}
    while(isdigit(c)){x=x*10+c-'0';gc;}x*=k;
}

const int N=1e5+7;

struct Data{
    ll t,d;
}A[N];

inline bool operator < (const Data &a,const Data &b){
    return a.d<b.d;
}

int main(){
    freopen("ming.in","r",stdin);
    freopen("ming.out","w",stdout);
    int n;r(n);
    for(int i=0;i<n;++i)r(A[i].t),r(A[i].d);
    sort(A,A+n);
    ll ans=0,tim=0;
    for(int i=0;i<n;++i){
        tim+=A[i].t;
        ans=max(ans,tim-A[i].d);
    }
    printf("%lld\n",ans);
}

test20181024 ming的更多相关文章

  1. HDU 4349 Xiao Ming's Hope lucas定理

    Xiao Ming's Hope Time Limit:1000MS     Memory Limit:32768KB  Description Xiao Ming likes counting nu ...

  2. Hdu4349 Xiao Ming's Hope

    Xiao Ming's Hope Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  3. Ming Rpc

    原文地址:http://iwantmoon.com/Post/487ab43d609f49d28ff4228241e2b7c7 Rpc(Remote Procedure Call Protocal)远 ...

  4. ubuntu下安装Ming的教程

    Ming是一个操纵swf(flash movice)的C库,支持php. ruby. python等语言. 重要提示: 在安装Ming之前,应该准备好你的系统,特别是Linux/Unix系统,如果你对 ...

  5. BestCoder Round #69 (div.2) Baby Ming and Weight lifting(hdu 5610)

    Baby Ming and Weight lifting Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K ( ...

  6. HDU 5433 Xiao Ming climbing dp

    Xiao Ming climbing Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://bestcoder.hdu.edu.cn/contests/ ...

  7. hdu 5612 Baby Ming and Matrix games

    Baby Ming and Matrix games 题意: 给一个矩形,两个0~9的数字之间隔一个数学运算符(‘+’,’-‘,’*’,’/’),其中’/’表示分数除,再给一个目标的值,问是否存在从一 ...

  8. hdu 5612 Baby Ming and Matrix games(dfs暴力)

    Problem Description These few days, Baby Ming is addicted to playing a matrix game. Given a n∗m matr ...

  9. hdu 5611 Baby Ming and phone number(模拟)

    Problem Description Baby Ming collected lots of cell phone numbers, and he wants to sell them for mo ...

随机推荐

  1. [ 翻译]ruby rails相关的常见服务器

    原文:http://stackoverflow.com/questions/4113299/ruby-on-rails-server-options     一,Apache vs Nginx     ...

  2. 23TCP通信

    .pro 文件中加入:QT+=network 在Qt中实现TCP/IP服务器端通信的流程: 1.创建监听套接字,QTcpServer 2.将监听套接字设置为监听模式, listen 3.等待并接受客户 ...

  3. 2016 CCPC 长春 Solution

    A - Hanzo vs. Genji 留坑. B - Fraction 水. #include <bits/stdc++.h> using namespace std; inline i ...

  4. IDFA踩坑记录

    IDFA踩坑记录: 1.iOS10.0 以下,即使打开“限制广告跟踪”,依然可以读取idfa: 2.打开“限制广告跟踪”,然后再关闭“限制广告跟踪”,idfa会改变: 3.越狱机器安装开发证书打的包, ...

  5. springcloud6---Eureka的配置:

    Eureka的配置: 自我保护:表示eureka进入了自我保护模式,eureka启动的时候会从高可用其他节点获取注册表信息,eureka client会每30秒发送心跳,如果eureka server ...

  6. Linux内核分析07

    可执行程序的装载 一,预处理.编译.链接和目标文件的格式 可执行程序是怎么来的? 预处理  把include里的宏定义替换 做字符串处理. efl格式? 目标文件格式,Windows中用PE Linu ...

  7. 2017NOIP模拟赛-科普基地

    今天回来打的第一场NOIP难度的试题,结果惨不忍睹.写一下每道题的做法,然后每道题犯的__弱智__错误 UPD:2018.9.15 突然这篇题解就变成很多大佬要看的了,因为之前是写给自己看的,所以写的 ...

  8. UVa 10491 奶牛和轿车(全概率公式)

    https://vjudge.net/problem/UVA-10491 题意: 假设有a头牛,b辆车,在最终选择前主持人会替你打开c个有牛的门,输出"总是换门"的策略下,赢得车的 ...

  9. java学习之浅谈多线程1

    创建任务和线程 任务就是对象,为了创建任务,必须首先为任务定义一个类.任务类必须实现Runnable接口.Runnable接口非常简单,它只有一个run方法.需要实现这个方法来告诉系统线程将如何运行. ...

  10. Java语言的垃圾回收机制

    java语言从诞生开始,一个吸引人眼球的功能就是垃圾回收,想一想C++中时不时的内存泄漏,当时感觉写java代码直是一种享受呀.     和.NET的引用计数不同,java的垃圾回收机制采取的是有向图 ...