hdu-4638
InputFirst line is T indicate the case number.
For each case first line is n, m(1<=n ,m<=100000) indicate there are n men and m query.
Then a line have n number indicate the ID of men from left to right.
Next m line each line has two number L,R(1<=L<=R<=n),mean we want to know the answer of [L,R].
OutputFor every query output a number indicate there should be how many group so that the sum of value is max.Sample Input
- 1
- 5 2
- 3 1 2 5 4
- 1 5
- 2 4
Sample Output
- 1
- 2
题意:给你N个数,然后给出M个查询;对于每一个查询,该区间内最少可以有多少个连续的序列;
题解:莫队(也可以用树,单位现在还不会,以后补上~~);
AC代码为:
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- const int M = + ;
- int a[M], vis[M], ans, ret[M];
- struct node
- {
- int id, l, r, pos;
- }v[M];
- int cmp(node x, node y)
- {
- if (x.pos<y.pos)
- return ;
- else if (x.pos == y.pos&&x.r<y.r)
- return ;
- return ;
- }
- inline void insert(int x)
- {
- x = a[x];
- vis[x] = ;
- if (vis[x - ] && vis[x + ])
- {
- ans--;
- }
- else if (!vis[x - ] && !vis[x + ])
- {
- ans++;
- }
- }
- inline void erase(int x)
- {
- x = a[x];
- vis[x] = ;
- if (vis[x - ] && vis[x + ])
- {
- ans++;
- }
- else if (!vis[x - ] && !vis[x + ])
- {
- ans--;
- }
- }
- int main()
- {
- int t, n, m, i, j, k;
- int l, r;
- scanf("%d", &t);
- while (t--)
- {
- scanf("%d%d", &n, &m);
- for (i = ; i <= n; i++)
- scanf("%d", &a[i]);
- int x = sqrt(n);
- for (i = ; i <= m; i++)
- {
- scanf("%d%d", &v[i].l, &v[i].r);
- v[i].id = i;
- v[i].pos = v[i].l / x;
- }
- sort(v + , v + m + , cmp);
- memset(vis, , sizeof(vis));
- ans = ;
- insert();
- int p = , q = ;
- for (i = ; i <= m; i++)
- {
- l = v[i].l;
- r = v[i].r;
- while (q<r) insert(++q);
- while (q>r) erase(q--);
- while (p<l) erase(p++);
- while (p>l) insert(--p);
- ret[v[i].id] = ans;
- }
- for (i = ; i <= m; i++)
- printf("%d\n", ret[i]);
- }
- return ;
hdu-4638的更多相关文章
- hdu 4638 树状数组 区间内连续区间的个数(尽可能长)
Group Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- hdu 4638 Group
http://acm.hdu.edu.cn/showproblem.php?pid=4638 问题其实就是求[L,R]中有多少个连续的段 若每一个人都是一个段 那么[L,R]中每一个朋友关系就会减少一 ...
- HDU 4638 Group(分组)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4638 题意:给出一个数列,若干询问.每次询问区间[L,R]的最少有多少段?每一段是连续的一段且这段内的 ...
- HDU 4638 树状数组 想法题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4638 解题思路: 题意为询问一段区间里的数能组成多少段连续的数.先考虑从左往右一个数一个数添加,考虑当 ...
- HDU 4638 (莫队)
题目链接:Problem - 4638 做了两天莫队和分块,留个模板吧. 当插入r的时候,设arr[r]代表r的位置的数字,判断vis[arr[r-1]]和vis[arr[r+1]]是否访问过,如果两 ...
- HDU 4638 Group 树状数组 + 思路
实际上就是问这个区间编号连续的段的个数,假如一个编号连续的段有(a+b)个人,我把他们分在同一组能得到的分值为(a+b)^2,而把他们分成人数为a和b的两组的话,得到的分值就是a^2+b^2,显然(a ...
- HDU 4638 Group ★(树状数组)
题意 询问一段区间里的数能组成多少段连续的数. 思路 先考虑从左往右一个数一个数添加,考虑当前添加了i - 1个数的答案是x,那么可以看出添加完i个数后的答案是根据a[i]-1和a[i]+1是否已经添 ...
- hdu 4638 树状数组
思路:将查询区间按右节点的升序排列,然后插入第i个数的时候,若nun[i]+1已经插入,那么就update(pre[num[i]+1],-1):pre[]表示的是该数的位置.同样若 num[i]-1存 ...
- HDU 4638 Group 【树状数组,分块乱搞(莫队算法?)】
根据题目意思,很容易得出,一个区间里面连续的段数即为最少的group数. 题解上面给的是用树状数组维护的. 询问一个区间的时候,可以一个一个的向里面添加,只需要判断a[i]-1 和 a[i]+1是否已 ...
- hdu 4638 Group 莫队算法
题目链接 很裸的莫队, 就不多说了... #include<bits/stdc++.h> using namespace std; #define pb(x) push_back(x) # ...
随机推荐
- macOS 使用Miniconda配置本地数据运算环境
目前,做数据分析工作,基本人手Numpy,pandas,scikit-learn.而这些计算程序包都是基于python平台的,所以搞数据的都得先装个python环境...(当然,你用R或Julia请忽 ...
- avtivmq(订阅写法)
发布-订阅消息模式与点对点模式类似,只不过在session创建消息队列时,由session.createQuene()变为session.createTopic(). 消息发布者代码: 消息订阅者代码 ...
- LoadRunner具体流程
创建负载测试场景场景目标:模拟10个用户同时登陆.搜索航班.购买机票.查看航班路线并退出打开Controller并创建一个新场景1.打开HP LoadRunner2.打开Controller在Load ...
- mysql查询不重复的行内容,不重复的记录数.count,distinct
有这么一个表 记录了id, p_id, p_name , p_content , p_time 1 343 aaa aaaaaa 2012-09-01 2 ...
- [增强for循环] 格式
比如:
- vue开发之跨域请求,请求头not allowed by Access-Control-Allow-Headers,后端cookie session值取不到(二)
原因:你本地的请求ajax的get和post请求:如果你的请求头内放一些可用验证数据Token的时候就会存在跨域请求这是浏览器所不允许的问题: 方案一:后台的接口请求模式都写成jsonp请求,前端去调 ...
- Python多线程与队列
Python多线程与Queue队列多线程在感官上类似于同时执行多个程序,虽然由于GIL的存在,在Python中无法实现线程的真正并行,但是对于某些场景,多线程仍不失为一个有效的处理方法: 1,不紧急的 ...
- lqb 基础练习 闰年判断
基础练习 闰年判断 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个年份,判断这一年是不是闰年. 当以下情况之一满足时,这一年是闰年: 1. 年份是4的倍数而不是100的倍 ...
- springMvc 通过url传值,实现访问
springMvc 通过url传值,实现访问 1.创建web项目,引入相关jar包,并完成相应配置,在上一篇博客已经实现 2.在WEB-INF下创建jsp文件夹,并创建hello.jsp文件 < ...
- cocos creator 3D | 拇指射箭
拇指射箭!你能射中靶心么? 效果预览 配置环境: cocos creator 3d v1.0.0 玩法介绍: 长按屏幕,拖动瞄准,放手发射.风向.重力和距离影响最终结果!越靠近中心得分越高!最高分10 ...