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 种颜色(用整数 ...
随机推荐
- 数字反转(0)<P2011_1>
数字反转 (reverse.cpp/c/pas) [问题描述] 给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形 式,即除非给定的原数为零,否则反转后得到的新数的最高位数 ...
- PTA的Python练习题(六)
从 第3章-8 字符串逆序 开始 1. n = str(input()) n1=n[::-1] print(n1) 2. 不是很好做这道题,自己还是C语言的思维,网上几乎也找不到什么答案 s = in ...
- linux jar 启动shell 脚本
#!/bin/bash APP_NAME=/data/wwwroot/app.jar #使用说明,用来提示输入参数 usage() { echo "Usage: sh app.sh [sta ...
- kvm的分层控制
第五层 virsh virt-manager(和libvirtd)利用了libvirt-api virsh pool-list --all virsh pool-define xxx/xml会 ...
- 了解 Fetch API与Fetch+Async/await
背景 提及前端与服务器端的异步通信,离不开 Ajax (Asynchronous JavaScript and XML).实际上我们常说的 Ajax 并非指某一项具体的技术,它主要是基于用脚本操作 H ...
- LeetCode 83. Remove Duplicates from Sorted List(从有序链表中删除重复节点)
题意:从有序链表中删除重复节点. /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode ...
- 02-09Android学习进度报告九
今天我学习了关于Adapter的基础知识,了解了Android开发的一些思路和架构. 首先我了解了Adapter的概念以及开发过程中常用的Adapter: BaseAdapter:抽象类,实际开发中我 ...
- Linux命令:ping命令
ping命令:类似于windows的ping命令,用于测试网络主机ICMP请求回应的 ping选项 ping -c # # 执行次数 -w # #测试 ...
- java 实现图片上传功能
1:jsp 页面上传图片按钮在这里我就写相关的代码 <div class="control-group"> <label class="control- ...
- Day1-C-CF-1144A
简述:给你一串字符,判断是否由连续字母构成且每个字符只出现一次 思路:用set直接储存,判断size和初末位置字母与size的关系即可 代码: #include<iostream> #in ...