题意:n个房间,每个房间有ai盏旧灯,每个月可以买m盏新灯,要求:按房间顺序换灯,如果剩下的新灯数目大于ai,那么进行更换,否则跳过该房间,判断下一个房间。如果所有房间都换完灯,那么久不会再买新灯。

q次询问,每次询问该月已换的房间数以及剩余的新灯数量。

题解:线段树记录最小值,然后一遍模拟

#include<bits/stdc++.h>

using namespace std ;

#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define INF 0x3f3f3f3f
typedef long long ll;
const int maxn = 1e5+;
int n,m;
int lamp[maxn << ];
int q;
int month[maxn];
int re;
int MIN[maxn << ];
int ans1[maxn], ans2[maxn];
void pushup(int rt)
{
MIN[rt] = min(MIN[rt<<],MIN[rt<<|]);
} void build(int l , int r , int rt)
{
if(l == r)
{
scanf("%d",&MIN[rt]);
return ;
} int mid = (l+r) >> ;
build(lson);
build(rson);
pushup(rt);
} int query(int l , int r , int rt , int val)
{
if(l==r)
{
re-=MIN[rt];
MIN[rt]=INF;
return ;///找到了
}
int mid = (l + r) >> ;
int pos = ;
if(MIN[rt<<] <= val) ///在左子树找到
{
pos = query(lson,val) ;
pushup(rt);
return pos; }
if(MIN[rt<<|]<=val)///在右子树找到
{
pos = query(rson,val);
pushup(rt);
return pos;
}
return ;
}
int main ( )
{
int n,m;
scanf("%d%d",&n,&m);
build(,n,);
int Maxmonth = ; scanf("%d",&q);
for(int i= ; i<=q ; i++)
{
scanf("%d",&month[i]);
Maxmonth=max(month[i],Maxmonth);
}
int cur=;
int cnt=;///换了多少
int fa=;///是否换完
while(cur<=Maxmonth)
{
if(!fa)
re+=m;
while(query(,n,,re)&&!fa)
cnt++; if(!fa)
{
ans1[cur]=cnt;
ans2[cur]=re;
}
else
{
ans1[cur]=n;
ans2[cur]=re;
}
cur++;
if(cnt>=n)
fa=;
}
for(int i= ; i<=q ; i++)
printf("%d %d\n",ans1[month[i]],ans2[month[i]]); }

ACM-ICPC 2018 南京赛区网络预赛 Lpl and Energy-saving Lamps (线段树:无序数组找到第一个小于val)的更多相关文章

  1. ACM-ICPC 2018 徐州赛区网络预赛 HRyuji doesn't want to study 树状数组

    题目链接:https://nanti.jisuanke.com/t/A2007 题目大意:有一个序列含有n个数a[1],a[2],a[3],……a[n],有两种操作: 第一种操作:k=1,l,r,询问 ...

  2. 计蒜客 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 ...

  3. 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 ...

  4. ACM-ICPC 2018 南京赛区网络预赛 J.sum

    A square-free integer is an integer which is indivisible by any square number except 11. For example ...

  5. ACM-ICPC 2018 南京赛区网络预赛 E题

    ACM-ICPC 2018 南京赛区网络预赛 E题 题目链接: https://nanti.jisuanke.com/t/30994 Dlsj is competing in a contest wi ...

  6. ACM-ICPC 2018 南京赛区网络预赛B

    题目链接:https://nanti.jisuanke.com/t/30991 Feeling hungry, a cute hamster decides to order some take-aw ...

  7. 计蒜客 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 ...

  8. 计蒜客 30990.An Olympian Math Problem-数学公式题 (ACM-ICPC 2018 南京赛区网络预赛 A)

    A. An Olympian Math Problem 54.28% 1000ms 65536K   Alice, a student of grade 66, is thinking about a ...

  9. ACM-ICPC 2018 南京赛区网络预赛 B. The writing on the wall

    题目链接:https://nanti.jisuanke.com/t/30991 2000ms 262144K   Feeling hungry, a cute hamster decides to o ...

随机推荐

  1. loj516dp一般看规律

    STL 这...我只能说是...考得是... STL的正确用法? #include<iostream> #include<cstdio> #include<cstdlib ...

  2. 景深(Depth of Field)

    http://www.cnblogs.com/cxrs/archive/2013/03/22/DepthOfFeild.html 景深(Depth of Field) 什么是景深? 所谓景深,就是当焦 ...

  3. oracle 12c 新特性之不可见字段

    在Oracle 11g R1中,Oracle以不可见索引和虚拟字段的形式引入了一些不错的增强特性.继承前者并发扬光大,Oracle 12c 中引入了不可见字段思想.在之前的版本中,为了隐藏重要的数据字 ...

  4. SQL中replace函数

    string sql1 = "select price from dbo.eazy_farm where REPLACE(title,' ','')='" + cainame + ...

  5. canvas实现平铺

    代码: /** * Created by Administrator on 2016/1/30. */ function draw(id){ var canvas = document.getElem ...

  6. openstackM版本安装

    部署期间常见问题:http://www.cnblogs.com/bfmq/p/6001233.html,问题跟对架构的理解永远比部署重要!你玩技术是绝对是要基于理论的 一.基本情况:物理设备:4台惠普 ...

  7. 安装LMS记

    LMS学习管理系统,即英文Learning Management System的缩写.中文常用别名:在线学习系统. 尝试安装一款LMS,并进行二次开发. Moodle 首先想到的是Moodle.Moo ...

  8. java ----一个函数传回多个值的总结

    java 一个函数如何返回多个值 参考方法: 1.使用map返回值:这个方法问题是,你并不知道如何返回值的key是什么,只能通过doc或者通过源代码来查看. 2.传入一个引用进去,修改引用的属性值.问 ...

  9. 加载某个页面(A)时实现自动跳转到某个页面(B)

    <head> <title></title> <script type="text/javascript"> function fu ...

  10. 进程中t.start(), t.daemon() t.jion()的使用

    #!/usr/bin/env python import multiprocessing import time def f1(a1): time.sleep(2) print(a1) if __na ...