【NOIP2012提高组】借教室
90分暴力解法:
用线段树,初始值为该天的教室数,每个人来申请的时候在这段区间减去借走的数,然后查询最小值是否小于0,是就输出-1,否则继续。
(其实在vijos是可以直接A的,他们的评测机太快了)
#include <iostream>
#define maxn 1000005
using namespace std;
void scan(int &x)
{
char c;
bool flag = false;
while (!isdigit(c = getchar()))
{
if (c == '-')
flag = true;
}
x = ;
do
x = x * + c - '';
while (isdigit(c = getchar()));
if (flag)
x = -x;
}
int n, m, val[maxn];
namespace seg
{
struct node
{
int val, mark, minimum;
} nds[maxn * ];
void init(int l = , int r = n, int p = )
{
if (l == r)
{
nds[p].minimum = nds[p].val = val[l];
}
else
{
int mid = (l + r) / ;
init(l, mid, p * );
init(mid + , r, p * + );
nds[p].minimum = min(nds[p * ].minimum, nds[p * + ].minimum);
}
}
void add(int l, int r, int val, int p = , int ll = , int rr = n)
{
if (l == ll && r == rr)
{
nds[p].mark += val;
nds[p].minimum += val;
}
else
{
int mid = (ll + rr) / ;
if (l <= mid)
add(l, min(r, mid), val, p * , ll, mid);
if (mid + <= r)
add(max(l, mid + ), r, val, p * + , mid + , rr);
nds[p].minimum = min(nds[p * ].minimum, nds[p * + ].minimum) + nds[p].mark;
}
}
int query(int l, int r, int p = , int ll = , int rr = n)
{
if (l == ll && r == rr)
{
return nds[p].minimum;
}
else
{
int mid = (ll + rr) / ;
int ans = 0x7fffffff;
if (l <= mid)
ans = min(ans, query(l, min(r, mid), p * , ll, mid));
if (mid + <= r)
ans = min(ans, query(max(l, mid + ), r, p * + , mid + , rr));
return ans + nds[p].mark;
}
}
}
int main()
{
ios::sync_with_stdio(false);
scan(n);
scan(m);
for (int i = ; i <= n; i++)
scan(val[i]);
seg::init(,n,);
int d, s, t;
for (int i = ; i <= m; i++)
{
scan(d);
scan(s);
scan(t);
seg::add(s, t, -d);
if (seg::query(s, t) < )
{
cout << - << endl
<< i;
return ;
}
}
cout << ;
return ;
}
【NOIP2012提高组】借教室的更多相关文章
- [NOIp2012提高组]借教室
OJ题号:洛谷1083 思路:ZKW线段树 #include<cstdio> #include<cctype> #include<algorithm> inline ...
- 【分块】【常数优化】【Orz faebdc】洛谷 P1083 NOIP2012提高组 借教室
分块90分. By AutSky_JadeK [重点在下面] #include<cstdio> #include<cmath> using namespace std; #de ...
- 刷题总结——疫情控制(NOIP2012提高组)
题目: 题目背景 NOIP2012 提高组 DAY2 试题. 题目描述 H 国有 n 个城市,这 n 个城市用 n-1 条双向道路相互连通构成一棵树,1 号城市是首都,也是树中的根节点. H 国的首都 ...
- GZOJ 1361. 国王游戏【NOIP2012提高组DAY1】
国王游戏[NOIP2012提高组DAY1] Time Limit:1000MS Memory Limit:128000K Description 国王游戏(game.cpp/c/pas) [问题描述] ...
- [NOIP2012] 提高组 洛谷P1083 借教室
题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息,我们自然 ...
- 洛谷P1083 [NOIP2012提高组Day2T2]借教室
P1083 借教室 题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借 ...
- NOIP2012提高组 Day 2 Problem 2 借教室
原题 题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息,我 ...
- NOIP2012 D2 T2借教室
先上题目 题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息 ...
- [NOIP2012] 提高组 洛谷P1081 开车旅行
题目描述 小 A 和小 B 决定利用假期外出旅行,他们将想去的城市从 1 到 N 编号,且编号较小的 城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 i 的海拔高度为 Hi,城市 ...
- 【未完成0.0】Noip2012提高组day2 解题报告
第一次写一套题的解题报告,感觉会比较长.(更新中Loading....):) 题目: 第一题:同余方程 描述 求关于x的同余方程ax ≡ 1 (mod b)的最小正整数解. 格式 输入格式 输入只有一 ...
随机推荐
- 2301: [HAOI2011]Problem b ( 分块+莫比乌斯反演+容斥)
2301: [HAOI2011]Problem b Time Limit: 50 Sec Memory Limit: 256 MBSubmit: 6015 Solved: 2741[Submit] ...
- Toxophily
Problem Description The recreation center of WHU ACM Team has indoor billiards, Ping Pang, chess and ...
- .Net Core在Ubuntu上操作MySql折腾实录
.Net Core 2.0 发布也这么久了,一直想着折腾着玩玩,无奈一直没时间,这几天准备开始好好学习下C#在跨平台方面的应用,记录下来以备自己以后回忆.学习. 本篇博客的主要内容: MySql在Ub ...
- Linux系列教程(十六)——Linux权限管理之ACL权限
通过前面的两篇博客我们介绍了Linux系统的用户管理,Linux用户和用户组管理之相关配置文件 讲解了用户管理的相关配置文件,包括用户信息文件/etc/passwd,用户密码文件/etc/shadow ...
- 团队工作准则&贡献分配规则
团队工作准则&贡献分配规则 NewTeam 2017/10/24 v1.0 工作准则及内容 全体成员 所有成员在接受任务时应结合自身情况考虑,如果认为任务内容或时间有不合理之处应当立即提出修改 ...
- MySQL锁学习之UPDATE
##==============================================================================## 学MySQL也蛮长时间了,可一直停 ...
- div内长串数字或字母不断行处理
比如: <div>1111tryrt645645rt4554111112324353453454364</div> <div>qwewretrytuytuiyiuo ...
- JAVA的继承,构造函数,窗体
import java.awt.*; import javax.swing.*; import javax.swing.JFrame; import java.awt.event.WindowList ...
- GridControl使用技巧总结,更新中...
1如何禁用GridControl中单击列弹出右键菜单 设置Run Design->OptionsMenu->EnableColumnMenu 设置为:false 2如何定位到第一条数据/记 ...
- 选择排序-Python与PHP实现版
选择排序Python实现 import random # 生成待排序数组 a=[random.randint(1,999) for x in range(0,36)] # 选择排序 def selec ...