假设当前已经组合好了 $[1, x]$ ,设 $ans = x + 1$ ;显然初始时 $x = 0, ans = 1$
我们另 $y = \sum_{i = l} ^ {r} (w_i <= ans) * w_i$
如果 $ans <= y$,说明除了组合出 $[1, x]$ 中的数,
一定存在一个数满足 $<=x+1$
这个时候 $[1, y]$ 都可以组合出来,另 $ans = y + 1$ ;
如果 $ans>y$ ,说明除了组合出 $[1, x]$的数,
其余所有的数均 $> x + 1$ ,这样当前的 $ans$ 就是答案了
统计一个区间内 $<=k$ 的数的和可以用主席树来是实现

#include <iostream>
#include <cstdio>
#include <algorithm> using namespace std;
const int N = 1e5 + ; int W[N * ], Root[N], Lson[N * ], Rson[N * ];
int n, A[N], B[N]; #define gc getchar()
inline int read() {
int x = ; char c = gc;
while(c < '' || c > '') c = gc;
while(c >= '' && c <= '') x = x * + c - '', c = gc;
return x;
} int Seg_js;
void Fill(int x, int y) {W[x] = W[y]; Lson[x] = Lson[y]; Rson[x] = Rson[y];} void Insert(int &jd, int l, int r, int x, int num) {
Fill(++ Seg_js, jd);
jd = Seg_js;
W[jd] += num;
if(l == r) return ;
int mid = (l + r) >> ;
if(x <= mid) Insert(Lson[jd], l, mid, x, num);
else Insert(Rson[jd], mid + , r, x, num);
} int Answer; void Sec_A(int jd1, int jd2, int l, int r, int x) {
if(l == r) {Answer += (W[jd2] - W[jd1]); return;}
int mid = (l + r) >> ;
if(x <= mid) Sec_A(Lson[jd1], Lson[jd2], l, mid, x);
else {
Answer += (W[Lson[jd2]] - W[Lson[jd1]]);
Sec_A(Rson[jd1], Rson[jd2], mid + , r, x);
}
} int Len; inline int Find(int x) {
int l = , r = Len, ret;
while(l <= r) {
int mid = (l + r) >> ;
if(B[mid] <= x) ret = mid, l = mid + ;
else r = mid - ;
}
return ret;
} int main() {
n = read();
for(int i = ; i <= n; i ++) A[i] = read(), B[i] = A[i];
sort(B + , B + n + );
Len = unique(B + , B + n + ) - B - ;
for(int i = ; i <= n; i ++) {
int t = lower_bound(B + , B + Len + , A[i]) - B;
Root[i] = Root[i - ];
Insert(Root[i], , Len, t, A[i]);
}
int Q = read();
for(; Q; Q --) {
int l = read(), r = read();
int Ans = ;
while() {
int tmp = Find(Ans);
Answer = ;
Sec_A(Root[l - ], Root[r], , Len, tmp);
if(Answer >= Ans) Ans = Answer + ;
else break;
}
printf("%d\n", Ans);
}
return ;
}

luogu 4587的更多相关文章

  1. Luogu 魔法学院杯-第二弹(萌新的第一法blog)

    虽然有点久远  还是放一下吧. 传送门:https://www.luogu.org/contest/show?tid=754 第一题  沉迷游戏,伤感情 #include <queue> ...

  2. luogu p1268 树的重量——构造,真正考验编程能力

    题目链接:http://www.luogu.org/problem/show?pid=1268#sub -------- 这道题费了我不少心思= =其实思路和标称毫无差别,但是由于不习惯ACM风格的题 ...

  3. [luogu P2170] 选学霸(并查集+dp)

    题目传送门:https://www.luogu.org/problem/show?pid=2170 题目描述 老师想从N名学生中选M人当学霸,但有K对人实力相当,如果实力相当的人中,一部分被选上,另一 ...

  4. [luogu P2647] 最大收益(贪心+dp)

    题目传送门:https://www.luogu.org/problem/show?pid=2647 题目描述 现在你面前有n个物品,编号分别为1,2,3,--,n.你可以在这当中任意选择任意多个物品. ...

  5. HDU 4587 TWO NODES 割点

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4587 题意: 删除两个点,使连通块的数目最大化 题解: 枚举删除第一个点,然后对删除了第一个点的图跑 ...

  6. Tarjan系列算法总结(hdu 1827,4612,4587,4005)

    tarjan一直是我看了头大的问题,省选之前还是得好好系统的学习一下.我按照不同的算法在hdu上选题练习了一下,至少还是有了初步的认识.tarjan嘛,就是维护一个dfsnum[]和一个low[],在 ...

  7. 【HDOJ】4587 TWO NODES

    Tarjan解无向图的割点和桥,参考白书. /* 4587 */ #include <iostream> #include <vector> #include <algo ...

  8. Luogu 考前模拟Round. 1

    A.情书 题目:http://www.luogu.org/problem/show?pid=2264 赛中:sb题,直接暴力匹配就行了,注意一下读入和最后一句话的分句 赛后:卧槽 怎么只有40 B.小 ...

  9. luogu P2580 于是他错误的点名开始了

    luogu  P2580 于是他错误的点名开始了 https://www.luogu.org/problem/show?pid=2580 题目背景 XS中学化学竞赛组教练是一个酷爱炉石的人. 他会一边 ...

随机推荐

  1. 【springcloud】1.微服务之springcloud-》eureka源码分析之请叫我灵魂画师。。。

  2. ZooKeeper学习笔记(四)——shell客户端命令操作

    ZooKeeper客户端命令行操作 启动服务端 [simon@hadoop102 zookeeper-3.4.10]$ bin/zkServer.sh start 查看状态信息 Using confi ...

  3. hoj 棋盘问题 状压入个门

    大概题意是:有一个n*m的棋盘,在这个棋盘里边放k个旗子,要求每一行每一列都不能存在一对旗子相邻,问最后总共的方案数. 我们先来考虑个简单的,假如说只有一行,要求在这一行里边填充k个旗子,要求任意两个 ...

  4. 【SoloPi】SoloPi使用4-功能使用,一机多控

    Soloπ是什么Soloπ是一个无线化.非侵入式的Android自动化工具,公测版拥有录制回放.性能测试.一机多控三项主要功能,能为测试开发人员节省宝贵时间. 一机多控功能Soloπ支持通过操作一台主 ...

  5. Java 之 递归

    一.概述 递归:指在当前方法内调用自己的现象. 递归的分类: 递归分为两种,直接递归和简介递归 直接递归称为方法自身调用自己 间接递归可以 A 方法调用 B 方法,B 方法调用 C 方法,C 方法调用 ...

  6. 关于Ad-hoc

    Ad-hoc是wifi的一个模式,依托普通无线局域网802.11家族.网络中所有结点的地位平等,无需设置任何的中心控制结点,省去了无线中介设备AP.比如一台电脑建立了一个网络,这个时候加入了两台电脑. ...

  7. Django+bootstrap+注册登录系统

    转自:https://www.cnblogs.com/robindong/p/9610057.html Robin_D 博客园 首页 新随笔 联系 订阅 管理 随笔 - 10  文章 - 0  评论 ...

  8. nginx基础概述

    为什么选择nginx     nginx非常轻量     互联网公司都选择nginx nginx技术成熟,具备的功能时企业最常用使用而且最需要的 适合当前主流架构趋势,微服务.云架构.中间层 统一技术 ...

  9. PowerMockito单元测试中的Invalid use of argument matchers问题详解

    首先,简单说说PowerMockito进行单元测试的三部曲: 打桩,即为非测试目标方法设置返回值,这些返回值在测试目标方法中被使用.执行测试,调用测试目标方法.验证测试结果,如测试方法是否被执行,测试 ...

  10. 使用LPCXpresso开发板调试外部的电路板

    MCUXpresso IDE开发环境有一个主要的功能:支持LPC-Link2仿真调试器.通过这种方式,对于基于ARM的电路板,我可以使用这个功能强大的仿真调试器来调试.在NXP的众多LPCXpress ...