JZOJ 3463. 【NOIP2013模拟联考5】军训
3463. 【NOIP2013模拟联考5】军训(training) (Standard IO)
Description
1.分班必须按照学号顺序来,即不能在一个班上出现学号不连续的情况。
2.每个学生必须要被分到某个班上。
3.每个班的欠扁值定义为该班中欠扁值最高的那名同学的欠扁值。所有班的欠扁值之和不得超过Limit。
4.每个班的女友指数定义为该班中所有同学的女友数量之和。在满足条件1、2、3 的情况下,分班应使得女友指数最高的那个班的女友指数最小。
请你帮HYSBZ 的教务处完成分班工作,并输出女友指数最高的班级的女友指数。
输入数据保证题目有解。
Input
接下来n 行每行2 个正整数Hi,Gi,分别为学号为i 的学生的欠扁值和女友数。
Output
Sample Input
4 6
4 3
3 5
2 2
2 4
Sample Output
8
【样例解释】
分班按照(1,2),(3,4)进行,这时班级欠扁值之和为4+2=6<=Limit,而女友指数最高的班级为(1,2),为8。容易看出该分班方案可得到最佳答案。
#include <cstdio>
#include <iostream>
#include <string>
#include <cstring>
#define LL long long
#define N 20007
using namespace std;
LL n, limit, h[N], g[N], sum[N], num[N], z[N], ans, mid, f[N];
int next[N]; LL get(int t)
{
LL tl = t, tr = n;
while (tl < tr)
{
LL mi = (tl + tr) / ;
if (sum[mi] - sum[t - ] >= mid) tr = mi;
else tl = mi + ;
}
return tl;
} bool check()
{
memset(f, 0x7f7f7f7f, sizeof(f));
f[] = ;
for (int i = ; i <= n; i++)
{
int k = get(i);
int x = i;
int ma = h[i];
if (sum[k] - sum[i - ] > mid) k--;
while (x <= k)
{
f[x] = min(f[x], f[i] + ma);
ma = h[x];
x = next[x];
}
f[k + ] = min(f[k + ], f[i] + ma);
}
if (f[n + ] <= limit) return ;
return ;
} int main()
{
scanf("%lld%lld", &n, &limit);
for (int i = ; i <= n; i++)
{
scanf("%lld%lld", &h[i], &g[i]);
sum[i] = sum[i - ] + g[i];
}
int tail = ;
z[] = 1e9 + ;
num[] = n + ;
for (int i = n; i >= ; i--)
{
while (h[i] >= z[tail]) tail--;
next[i] = num[tail];
tail++;
z[tail] = h[i];
num[tail] = i;
}
ans = sum[n];
LL tl = , tr = ans;
while (tl < tr)
{
mid = (tl + tr) / ;
if (check())
{
if (mid < ans) ans = mid;
tr = mid;
}
else tl = mid + ;
}
printf("%lld", tl);
}
JZOJ 3463. 【NOIP2013模拟联考5】军训的更多相关文章
- JZOJ【NOIP2013模拟联考14】隐藏指令
JZOJ[NOIP2013模拟联考14]隐藏指令 题目 Description 在d维欧几里得空间中,指令是一个长度为2N的串.串的每一个元素为d个正交基的方向及反方向之一.例如,d = 1时(数轴) ...
- JZOJ 3493. 【NOIP2013模拟联考13】三角形
3493. [NOIP2013模拟联考13]三角形(triangle) (File IO): input:triangle.in output:triangle.out Time Limits: 10 ...
- JZOJ 3487. 【NOIP2013模拟联考11】剑与魔法(dragons)
3487. [NOIP2013模拟联考11]剑与魔法(dragons) (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB De ...
- JZOJ 3470. 【NOIP2013模拟联考8】最短路(path)
470. [NOIP2013模拟联考8]最短路(path) (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB Detailed ...
- JZOJ 3462. 【NOIP2013模拟联考5】休息(rest)
3462. [NOIP2013模拟联考5]休息(rest) (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB Detailed ...
- JZOJ 3461. 【NOIP2013模拟联考5】小麦亩产一千八(kela)
3461. [NOIP2013模拟联考5]小麦亩产一千八(kela) (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB Det ...
- 【NOIP2013模拟联考7】OSU
[NOIP2013模拟联考7]OSU 描述 Description osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: 一共有n次操作,每次操作只有成功与失败之分, ...
- [jzoj]3468.【NOIP2013模拟联考7】OSU!(osu)
Link https://jzoj.net/senior/#main/show/3468 Description osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: ...
- [jzoj]3456.【NOIP2013模拟联考3】恭介的法则(rule)
Link https://jzoj.net/senior/#main/show/3456 Description 终于,在众亲们的奋斗下,最终boss 恭介被关进了库特设计的密室.正当她们松了一口气时 ...
随机推荐
- linux增加/删除虚拟IP地址
网卡上增加一个IP: ifconfig eth0:1 192.168.0.1 netmask 255.255.255.0 删除网卡的第二个IP地址: ip addr del 192.168.0.1 d ...
- c# 类成员的定义 定义方法、字段和属性【转】
c# 类成员的定义 定义方法.字段和属性c#类的成员包括字段.属性和方法.所有成员都有自己的访问级别,用下面的关键字之一来定义:public----成员可以有任何代码访问:private----成员只 ...
- Timer控制开始、停止例子【转】
public partial class Form1 : Form { static public bool flag; public Form1() ...
- 《C#高效编程》读书笔记12-使用推荐成员初始化器而不是赋值语句
通常来说类都有不止一个构造函数.随着时间推移,成员变量的增加,构造函数的个数也会不断的增加.预防这种情况的最好方法是,在声明变量的时候就进行初始化,而不是在每个构造函数中进行. //初始化变量时声明 ...
- 属性(property)与成员变量(ivar)
类内使用成员变量{}, 类外使用属性@property /*********** --- Person.h */ @interface Person : NSObject { NSString *_n ...
- Spring cloud Eureka 服务治理(高可用服务中心)
在微服务的架构中,我们考虑发生故障的情况,所以在生产环境中我们需要对服务中各个组件进行高可用部署. Eureka Server 的高可用实际上就是将自己作为服务想其它服务注册中心注册自己,这样就形成了 ...
- Git入门与常用操作简述
下载gitbash及使用指南: http://rogerdudler.github.io/git-guide/index.zh.html 初次使用 配置用户名和邮箱: $ git config --g ...
- [荐]推荐一个shell学习的网站
最近再用shell脚本,发现一个脚本学习的网站,非常好用,特此推荐一下. shell学习网站链接:http://c.biancheng.net/cpp/shell/
- 汇编:jmp系列跳转指令总结
助记方法: J:跳转C: 进位位置位N: 否S: 符号位置位o: 溢出位置位Z: 零标志位置位E: 等于P:奇偶位置位A: AboveB: BelowL: Less (Little的比较级)G: Gr ...
- 两数相除赋值整数变量(T-SQL)
MSSQL: DECLARE @_pagecount INT; ; SELECT @_pagecount; 结果为1 Mysql: BEGIN DECLARE _pagecount INT; ; SE ...