Day6 - B - 采花 HYSBZ - 2743
Input
Output共m行,每行一个整数,第i个数表示公主在女仆的第i个行程中能采到的花的颜色数。Sample Input5 3 5 1 2 2 3 1 1 5 1 2 2 2 2 3 3 5
Sample Output2 0 0 1 0 【样例说明】 询问[1, 5]:公主采颜色为1和2的花,由于颜色3的花只有一朵,公主不采;询问[1, 2]:颜色1和颜色2的花均只有一朵,公主不采; 询问[2, 2]:颜色2的花只有一朵,公主不采; 询问[2, 3]:由于颜色2的花有两朵,公主采颜色2的花; 询问[3, 5]:颜色1、2、3的花各一朵,公主不采。 Hint
【数据范围】
对于100%的数据,1 ≤ n ≤ 10^6,c ≤ n,m ≤10^6。
思路:和A题一样,用树状数组优化求和,只不过这一题是两个重复的再加1,更改的时候都是两者之间的前者,直接代码理解一下
const int maxm = 1e6+; int C[maxm], pre[maxm], vis[maxm], a[maxm], n, c, m, ans[maxm]; struct Node {
int l, r, id;
bool operator<(const Node &T) const {
return r < T.r;
}
} query[maxm]; void add(int x, int val) {
for(; x <= n; x += lowbit(x))
C[x] += val;
} int getsum(int x) {
int ret = ;
for(; x; x -= lowbit(x))
ret += C[x];
return ret;
} int main() {
int t1, t2;
scanf("%d%d%d", &n, &c, &m);
for(int i = ; i <= n; ++i)
scanf("%d", &a[i]);
for(int i = ; i < m; ++i) {
scanf("%d%d", &query[i].l, &query[i].r);
query[i].id = i;
}
sort(query, query+m);
int k = ;
for(int i = ; i < m; ++i) {
for(; k <= query[i].r; ++k) {
if(!vis[a[k]]) {
vis[a[k]] = k;
} else if(vis[a[k]] && !pre[a[k]]) {
pre[a[k]] = vis[a[k]];
vis[a[k]] = k;
add(pre[a[k]], );
} else if(pre[a[k]]) {
add(pre[a[k]], -);
add(vis[a[k]], );
pre[a[k]] = vis[a[k]];
vis[a[k]] = k;
}
}
ans[query[i].id] = getsum(query[i].r) - getsum(query[i].l-);
}
for(int i = ; i < m; ++i)
printf("%d\n", ans[i]);
return ;
}
Day6 - B - 采花 HYSBZ - 2743的更多相关文章
- 采花 bzoj 2743
采花(1s 128MB)flower [题目描述] 萧芸斓是Z国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了n朵花,花有c种颜色(用整 ...
- BZOJ 2743: [HEOI2012]采花
2743: [HEOI2012]采花 Time Limit: 15 Sec Memory Limit: 128 MBSubmit: 2056 Solved: 1059[Submit][Status ...
- BZOJ 2743: [HEOI2012]采花( 离线 + BIT )
处理出每个数下一个出现的位置, 然后按左端点排序回答询问.处理当前数去除的影响 ------------------------------------------------------------ ...
- BZOJ 2743: [HEOI2012]采花 离线树状数组
2743: [HEOI2012]采花 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=2743 Description 萧芸斓是Z国的公主, ...
- BZOJ 2743 【HEOI2012】 采花
题目链接:采花 这道题一眼看去,一个很显然的想法就是莫队.但是数据范围是\(10^6\)级别的,莫队显然已经过不去了. 其实感觉这道题和以前写过的一道题HH的项链很像.只不过那道题要求的是区间出现次数 ...
- [BZOJ 2743] [HEOI 2012] 采花
Description 萧芸斓是Z国的公主,平时的一大爱好是采花.今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了 \(n\) 朵花,花有 \(c\) 种颜色(用整数 \ ...
- 2743: [HEOI2012]采花
Description 萧芸斓是Z国的公主,平时的一大爱好是采花.今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花 .花园足够大,容纳了n朵花,花有c种颜色(用整数1-c表示),且花是排成一 ...
- [HEOI2012]采花 树状数组 BZOJ 2743
题目描述 萧薰儿是古国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花. 花园足够大,容纳了n朵花,花有c种颜色(用整数1-c表示),且花是排成一排的,以便于 ...
- 洛谷 P2056 BZOJ 2743 [HEOI2012]采花
//表示真的更喜欢洛谷的题面 题目描述 萧芸斓是 Z国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了 n 朵花,花有 c 种颜色(用整数 ...
随机推荐
- Spring Boot 2 实战:如何自定义 Servlet Filter
1.前言 有些时候我们需要在 Spring Boot Servlet Web 应用中声明一些自定义的 Servlet Filter 来处理一些逻辑.比如简单的权限系统.请求头过滤.防止 XSS 攻击等 ...
- HTML中的ul标签
UL格式: <ul> <li>Coffee</li> <li>Tea</li> <li>Milk</li> < ...
- 腾讯云 docker 镜像 dotnet/core sdk aspnet
ccr.ccs.tencentyun.com/mcr.microsoft.com/dotnetcoresdk = mcr.microsoft.com/dotnet/core/sdk => 3 ...
- centOS+DJango+mysql_nginx部署流程记录
安装Python3.6.2: https://www.jianshu.com/p/7a76bcc401a1 安装MySQL: https://www.cnblogs.com/luohanguo/p/9 ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:列表
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 学习笔记(12)- chatopera的语义理解系统
参考https://github.com/chatopera/clause-py-demo 前提:安装完毕 Docker.Docker Compose 和 Python3.x git clone ht ...
- Python 基础之if if else
1.代码块 以冒号作为开始,用缩进来划分区域,这个整体叫做代码块 if 5 == 5: print(1) print(2) if True: print(3) print(4) ...
- Write-up-Bob_v1.0.1
关于 下载地址:点我 哔哩哔哩视频:哔哩哔哩 信息收集 网卡:vmnet8:IP在192.168.131.1/24 ➜ ~ ip a show dev vmnet8 5: vmnet8: <BR ...
- 【Linux shell】 while read line
循环中的重定向或许你应该在其他脚本中见过下面的这种写法:while read linedo …done < file刚开始看到这种结构时,很难理解< file是如何与循环配合在一起工作的. ...
- Vue二次精度随笔(1)
1.button.input标签的disabled属性 该标签可以控制按钮是否可用,如果他的值为以上几种的话,则他都不会在标签上渲染出这个属性,一旦这个属性出现的话,就说明他是禁用的 2.移除动态绑定 ...