hdu 5875 Function
来源:互联网 发布:淘宝电子兑换券 编辑:程序博客网 时间:2024/05/25 01:36
/************************** * Time: 2016.10.01* Problem:给定一个数组,每次查询区间[l, r],*输出A[l] % A[l+1] % ... % A[r]* Solve:按左区间大小顺序遍历询问,维护优先队列,*每次取出val最大的询问,如果还在询问区间内就执行取模操作* Complexity: o( nlog(m) ),每个查询值最多被取模30次左右***************************/#include <cstdio>#include <cstring>#include <queue>#include <algorithm>using namespace std;const int maxn = 1e5 + 5;int N, M, A[maxn], R[maxn];struct Item {int val, end, id;Item(int val = 0, int end = 0, int id = 0): val(val), end(end), id(id) {}friend bool operator < (const Item& a, const Item& b) {return a.val < b.val;}};struct Query{int id, l, r;Query(int id = 0, int l = 0, int r = 0):id(id), l(l), r(r) {}friend bool operator < (const Query& a, const Query& b) {return a.l < b.l;}}Q[maxn];void init () {scanf("%d", &N);for (int i = 1; i <= N; i++)scanf("%d", &A[i]);scanf("%d", &M);for (int i = 0; i < M; i++) {Q[i].id = i;scanf("%d%d", &Q[i].l, &Q[i].r);}}void solve() {int mv = 0;sort(Q, Q + M);priority_queue<Item> que;for (int i = 1; i <= N; i++) {while (!que.empty() && que.top().val >= A[i]) {Item tmp = que.top();que.pop();if (tmp.end < i) {R[tmp.id] = tmp.val;continue;}tmp.val %= A[i];que.push(tmp);}while (mv < M && Q[mv].l == i) {que.push(Item(A[i], Q[mv].r, Q[mv].id));mv++;}}while (!que.empty()) {Item tmp = que.top();que.pop();R[tmp.id] = tmp.val;}}int main () {int cas;scanf("%d", &cas);while (cas--) {init();solve();for (int i = 0; i < M; i++)printf("%d\n", R[i]);}return 0;}
阅读全文
0 0
- HDU 5875 Function
- hdu 5875 Function(multiset)
- HDU 5875 Function
- HDU 5875 Function
- HDU-5875-Function
- HDU 5875 - Function
- HDU 5875 Function
- HDU 5875 Function
- hdu 5875 Function
- HDU-5875-Function-STL维护
- HDU 5875 Function(预处理)
- hdu 5875 Function 二分+rmq
- hdu 5875 Function(高效)
- hdu 5875 Function ST+二分
- HDU 5875 Function (RMQ+二分)
- Hdu 5875 Function 线段树
- HDU-Function
- Function HDU
- Android EditText与系统软键盘
- Eclipse插件springsource-tool-suite的下载和安装
- Web系统大规模并发——电商秒杀与抢购
- Selenium之常见元素处理系列三--upFile(上传文件),应用JavaScript
- Timer类实现定时任务
- hdu 5875 Function
- SSR的搭建教程和SSR一键脚本,安装BBR,锐速脚本
- window上mysql绿色版安装
- 如何部署JSP应用到阿里云服务器上(一)
- ViewPager使用方式
- oracle 按照时间分组统计求和
- C++ 直接选择排序的实现实例代码
- 如何部署JSP应用到阿里云服务器上(二)
- 1168: 账单(指针专题)