[ACM][2018南京预赛]Lpl and Energy-saving Lamps
一、题面



样例输入:
5 4
3 10 5 2 7
10
5 1 4 8 7 2 3 6 4 7
样例输出:
4 0
1 1
3 6
5 1
5 1
2 0
3 2
4 4
3 6
5 1
二、思路
关键词:线段树
这道题最难就难在看题吧。。。也许ACM的魅力之一便在于此——面对若干道题,你不知每一道题的难度是高是低,只能耐心地读清题面,审清题意,理清思路,方可知其是否在能力范围内以及预估耗时。考试过程中,我基本靠board来判断题目难度,清北大佬们先AC了哪些我就先做哪些。。。然而这道题似乎他们也不太愿意读题?其实际难度我觉得可能还要低于其他几道更早被A的题目。
题目大意是:现每个月提供m个灯泡,每次选出第一个小于当前灯泡数的房间,更换好该房间的灯泡,直至不存在这样的房间,则进入下个月。给出若干次月份数,求这几个月内能更换多少个房间的灯泡,以及剩余灯泡数。注意:当所有房间更换完之后,将不再提供灯泡!
n <= 10 ^ 5, d[p] <= 10 ^ 5,暴搜不可行。题目核心无非是求最早出现的小于k的数,可以用线段树维护每一段的最小值,再进行单点修改。水的一批。
三、代码
#include <cstdio>
#define MAXN 100005
#define INF 0x3f3f3f3f int n, m, T, a[MAXN], x, t[MAXN << ], k, l[MAXN], r[MAXN], q, mx, tot; int max(int a, int b) {
return a > b ? a : b;
} int min(int a, int b) {
return a < b ? a : b;
} void build(int o, int l, int r) {
if (l == r) {
scanf("%d", &x), t[o] = x;
return;
}
int m = (l + r) >> ;
build(o << , l, m), build(o << | , m + , r);
t[o] = min(t[o << ], t[o << | ]);
} int query(int o, int l, int r) {
if (l == r) return l;
int m = (l + r) >> ;
if (t[o] > k) return ;
return t[o << ] <= k ? query(o << , l, m) : query(o << | , m + , r);
} void upd(int o, int l, int r) {
if (l == r) {
k -= t[o], t[o] = INF;
return;
}
int m = (l + r) >> ;
if (q <= m) upd(o << , l, m);
else upd(o << | , m + , r);
t[o] = min(t[o << ], t[o << | ]);
} void work() {
for (int i = ; i <= mx; i++) {
if (tot != n) {
k += m;
while (q = query(, , n)) upd(, , n), tot++;
}
l[i] = k, r[i] = tot;
}
} int main() {
scanf("%d %d", &n, &m);
build(, , n);
scanf("%d", &T);
for (int i = ; i <= T; i++) scanf("%d", &a[i]), mx = max(a[i], mx);
work();
for (int i = ; i <= T; i++) printf("%d %d\n", r[a[i]], l[a[i]]);
return ;
}
[ACM][2018南京预赛]Lpl and Energy-saving Lamps的更多相关文章
- [ACM][2018南京预赛]Sum
一.题面 样例输入: 2 5 8 样例输出: 8 14 二.思路 关键词:线性筛 在Zed的帮助下知道了这是一道线性筛的比较裸的题了.考试过程中肝这道题的时间最久,费了心思找到递推式后,发现根本不是在 ...
- [ACM][2018南京预赛]Magical Girl Haze
一.题面 样例输入: 15 6 11 2 21 3 42 4 33 4 13 5 64 5 2 样例输出: 3 二.思路 关键词:分层BFS 考试时觉得题干意思很清晰——求可将k条边赋值为0的最短路. ...
- 计蒜客 30996.Lpl and Energy-saving Lamps-线段树(区间满足条件最靠左的值) (ACM-ICPC 2018 南京赛区网络预赛 G)
G. Lpl and Energy-saving Lamps 42.07% 1000ms 65536K During tea-drinking, princess, amongst other t ...
- ACM-ICPC 2018 南京赛区网络预赛 G. Lpl and Energy-saving Lamps(二分+线段树区间最小)
During tea-drinking, princess, amongst other things, asked why has such a good-natured and cute Drag ...
- ACM-ICPC 2018 南京赛区网络预赛(12/12)
ACM-ICPC 2018 南京赛区网络预赛 A. An Olympian Math Problem 计算\(\sum_{i=1}^{n-1}i\cdot i!(MOD\ n)\) \(\sum_{i ...
- ACM-ICPC 2018 南京赛区网络预赛 J.sum
A square-free integer is an integer which is indivisible by any square number except 11. For example ...
- ACM-ICPC 2018 南京赛区网络预赛 E题
ACM-ICPC 2018 南京赛区网络预赛 E题 题目链接: https://nanti.jisuanke.com/t/30994 Dlsj is competing in a contest wi ...
- ACM-ICPC 2018 南京赛区网络预赛B
题目链接:https://nanti.jisuanke.com/t/30991 Feeling hungry, a cute hamster decides to order some take-aw ...
- 计蒜客 30999.Sum-筛无平方因数的数 (ACM-ICPC 2018 南京赛区网络预赛 J)
J. Sum 26.87% 1000ms 512000K A square-free integer is an integer which is indivisible by any squar ...
随机推荐
- 测试基础-http协议(转)
HTTP的特性 HTTP构建于TCP/IP协议之上,默认端口号是80 HTTP是无连接无状态的 HTTP报文 请求报文 HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规 ...
- 面试时让你说一个印象最深的bug,该怎么回答
其实,面试官并不关心你描述的这个bug是否真的有价值,或有多曲折离奇?他只是: * 了解你平时工作中的测试能力 所以,这就要求的你平时工作中遇到bug时试着自己去定位,定位bug的过程远比你的单纯的执 ...
- jpa的@Query中"?"占位符的使用小坑
今天使用@Query自定义查询语句,出现了一个错误: java.lang.IllegalArgumentException: Parameter with that position [1] did ...
- LCA(Tarjan算法)模板
一.查询一组的LCA Nearest Common Ancestors A rooted tree is a well-known data structure in computer science ...
- 基于 IBM WAS ND v6.1 搭建稳定高效的集群环境
如今的电子商务及电子政务应用系统的发展已经到了一个新的阶段,应用系统的成熟度和可用性都达到了更高的水准.因此庞大的部署规模和海量的用户访问成为目前大型电子商务及电子政务应用系统的显著特征.在这样的情况 ...
- 转 使用Docker部署 spring-boot maven应用
转自:https://blog.csdn.net/u011699931/article/details/70226504/ 使用Docker部署 spring-boot maven应用 部署过程分为以 ...
- springmvc值传递
1.页面向后台传值 A.HttpServletRequest方式: package com.rong.controller; import javax.annotation.Resource; imp ...
- 【week10】规格说明书练习-吉林市1日游
假设我们全班同学及教师去吉林省吉林市1日游,请为这次活动给出规格说明书. 版本:1.0 编订:于淼 团队:2016级计算机技术全体同学 日期:2016/11/19 1.引言 1.1 编写目的 1.2 ...
- freemarker中空值 null的处理 ?exists ?if_exists ?default(“”)
exists:由空值测试运算符的引入,它被废弃了. exp1?exists 和 exp1??是一样的, ( exp1)?exists 和(exp1)??也是一样的. if_exists:由默认值运算符 ...
- javascript 排序
// 插入排序 将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列. 从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置.(如果待插入的元素与有序 ...