[洛谷P1972][题解][SDOI2009]HH的项链
自己还是太蒟了……
看了好久,最后抄参考题解打出来的……
前面的可能影响后面的,所以按照询问右端点排序
这时候维护一个前缀和数组就可以了,
那么问题又来了,去重?
可以这样,从前往后枚举,如果被加过了就在前面去掉
具体看代码(题目毒瘤导致卡常卡了好几遍):
#include<bits/stdc++.h>
#define rint register int
#define lowbit(x) (x&(-x))
using namespace std;
int n,m,t[],a[],vis[],ot[];
inline int rd(){
int x=,f=;
char c=getchar();
while(c<''||c>''){
if(c=='-')f=-;
c=getchar();
}
while(c>=''&&c<=''){
x=x*+c-'';
c=getchar();
}
return x*f;
}
struct Question {
int l,r,id;
}q[];
inline bool cmp(Question a,Question b){
return a.r<b.r;
}
inline void AddPoint(int x,int add){
while(x<=n){
t[x]+=add;
x+=lowbit(x);
}
}
inline int Sum(int x){
int ans=;
while(x){
ans+=t[x];
x-=lowbit(x);
}
return ans;
}
inline int QuerySec(int l,int r){
return Sum(r)-Sum(l-);
}
int main(){
n=rd();
for(rint i=;i<=n;i++)a[i]=rd();
cin>>m;
for(rint i=;i<=m;i++){
q[i].l=rd();
q[i].r=rd();
q[i].id=i;
}
sort(q+,q++m,cmp);
int now=;
for(rint i=;i<=m;i++){
for(rint j=now;j<=q[i].r;j++){
if(vis[a[j]]){//如果加过了
AddPoint(vis[a[j]],-);//去掉
}
AddPoint(j,);//新加上的
vis[a[j]]=j;//标记
}
now=q[i].r+;
ot[q[i].id]=QuerySec(q[i].l,q[i].r);//注意顺序
}
for(rint i=;i<=m;i++)cout<<ot[i]<<endl;
return ;
}
因为是离线枚举所以千万不要忘了存回去!
[洛谷P1972][题解][SDOI2009]HH的项链的更多相关文章
- 洛谷P1972 【[SDOI2009]HH的项链】
这道题想了很久,发题解是为了理解的更深刻一点...(管理放我过好嘛qwq) 步入正题:这道题应该是很多做法,我选择的是离线+树状数组. 首先输入数组.用fisrt数组先记录元素最开始出现的位置,对应的 ...
- 「 洛谷 」P2151 [SDOI2009]HH去散步
小兔的话 欢迎大家在评论区留言哦~ HH去散步 题目限制 内存限制:125.00MB 时间限制:1.00s 标准输入 标准输出 题目知识点 动态规划 \(dp\) 矩阵 矩阵乘法 矩阵加速 矩阵快速幂 ...
- [SDOI2009]HH的项链解题报告
原题目:洛谷P1972 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断地收集新的贝壳,因此 ...
- 洛谷P1972 [SDOI2009]HH的项链 题解
[SDOI2009]HH的项链 题目背景 无 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不 ...
- 洛谷 P1972 [SDOI2009]HH的项链【莫队算法学习】
P1972 [SDOI2009]HH的项链 题目背景 无 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含 ...
- [洛谷 P1972] HH的项链(SDOI2009)
P1972 [SDOI2009]HH的项链 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断 ...
- 洛谷 P1972 [SDOI2009]HH的项链 解题报告
P1972 [SDOI2009]HH的项链 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断 ...
- 洛谷——P1972 [SDOI2009]HH的项链(线段树)
P1972 [SDOI2009]HH的项链 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断地收集新的 ...
- 洛谷 P1972 [SDOI2009]HH的项链-二维偏序+树状数组+读入挂(离线处理,思维,直接1~n一边插入一边查询),hahahahahahaha~
P1972 [SDOI2009]HH的项链 题目背景 无 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含 ...
随机推荐
- MFC unicode字符集与多字节字符集 问题之彻底终结!
Unicode 和多字节字符集 (MBCS) 支持 Visual Studio .NET 2003 有些国际市场以大字符集来使用日文和中文等语言.为了支持这些市场的编程,Microsoft 基础类 ...
- JS基础-DOM
DOM DOM 事件的级别 DOM 事件模型 DOM 事件流 DOM 事件捕获的具体流程 Event 对象的常见应用 自定义事件 DOM概述 | MDN DOM | MDN DOM操作 DOM事件级别 ...
- 【IntelliJ Idea】使用学习
[IntelliJ Idea]使用学习 转载:https://www.cnblogs.com/yangchongxing/p/10658259.html 目录 ==================== ...
- 【Eclipse】安装配置
[Eclipse]安装配置 官网:https://www.eclipse.org 全部版本下载:https://www.eclipse.org/downloads/packages/
- 如何在Tomcat服务器配置CGI运行Python
想通过请求触发部署在tomcat上的非java应用程序,需要用到Common Gateway Interface(CGI).Tomcat提供了Servlet CGI支持. 修改web.xml web. ...
- java基础篇二
引言 滴,第二天卡. 五.关键字 -static -初始化顺序 -静态变量和静态语句块优先于实例变量和普通语句块,静态变量和静态语句块的初始化顺序取决于它们在代 ...
- 《一头扎进》系列之Python+Selenium框架设计篇4- 价值好几K的框架,呵!这个框架有点意思啊
1.简介 前面文章,我们实现了框架的一部分功能,包括日志类和浏览器引擎类的封装,今天我们继续封装一个基类和介绍如何实现POM.关于基类,是这样定义的:把一些常见的页面操作的selenium封装到bas ...
- 《Java算法》贪心算法
贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解. 贪心算法的经典案例: 跳跃游戏: 给定一个非负整 ...
- Mybatis中的 >= <= 与 sql写法区别
- LeetCode刷题总结-排序、并查集和图篇
本文介绍LeetCode上有关排序.并查集和图的算法题,推荐刷题总数为15道.具体考点分析如下图: 一.排序 1.数组问题 题号:164. 最大间距,难度困难 题号:324. 摆动排序 II,难度中等 ...