luogu P2056 采花
题目描述
萧芸斓是 Z国的公主,平时的一大爱好是采花。
今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花。花园足够大,容纳了 n 朵花,花有 c 种颜色(用整数 1-c 表示) ,且花是排成一排的,以便于公主采花。
公主每次采花后会统计采到的花的颜色数, 颜色数越多她会越高兴! 同时, 她有一癖好,她不允许最后自己采到的花中,某一颜色的花只有一朵。为此,公主每采一朵花,要么此前已采到此颜色的花,要么有相当正确的直觉告诉她,她必能再次采到此颜色的花。 由于时间关系,公主只能走过花园连续的一段进行采花,便让女仆福涵洁安排行程。福涵洁综合各种因素拟定了 m 个行程,然后一一向你询问公主能采到多少朵花(她知道你是编程高手,定能快速给出答案! ) ,最后会选择令公主最高兴的行程(为了拿到更多奖金! ) 。
输入输出格式
输入格式:
第一行四个空格隔开的整数 n、c 以及 m。
接下来一行 n 个空格隔开的整数,每个数在[1, c]间,第i 个数表示第 i 朵花的颜色。
接下来 m 行每行两个空格隔开的整数 l 和 r(l ≤ r) ,表示女仆安排的行程为公主经过第 l 到第r 朵花进行采花。
输出格式:
共m行, 每行一个整数, 第i个数表示公主在女仆的第i个行程中能采到的花的颜色数。
输入输出样例
5 3 5
1 2 2 3 1
1 5
1 2
2 2
2 3
3 5
2
0
0
1
0
说明
对于100%的数据,1 ≤ n ≤10^5,c ≤ n,m ≤ 10^5。
莫队,luogu数据较水
#include<cmath>
#include<cstdio>
#include<iostream>
#include<algorithm> using namespace std;
const int maxn = ;
struct node{
int l,r,id,block;
bool operator < (const node&a)const
{
if(block==a.block)return r<a.r;
return block < a.block;
}
}q[maxn];
int a[maxn],cnt[maxn],ans[maxn];
int n,m,k,pos,tmp;
void del(int x)
{
cnt[a[x]]--;
if (cnt[a[x]]==)tmp--;
}
void add(int x)
{
cnt[a[x]]++;
if (cnt[a[x]]==)tmp++;
}
void work()
{
int l=,r=;
for(int i =;i<=m;++i)
{
while(l>q[i].l)l--,add(l);
while(r<q[i].r)r++,add(r);
while(l<q[i].l)del(l),l++;
while(r>q[i].r)del(r),r--;
ans[q[i].id] = tmp;
}
}
int main()
{
scanf("%d%d%d",&n,&k,&m);
pos = sqrt(n);
for(int i=;i<=n;++i)
scanf("%d",a+i);
for (int i=;i<=m;++i)
{
scanf("%d%d",&q[i].l,&q[i].r);
q[i].block = (q[i].l-)/pos+;
q[i].id=i;
}
sort(q+,q+m+);
work();
for(int i=;i<=m;++i)
printf("%d\n",ans[i]);
return ;
}
luogu P2056 采花的更多相关文章
- 洛谷P2056 采花
		
P2056 采花 52通过 99提交 题目提供者shengmingkexue 标签云端↑ 难度省选/NOI- 时空限制1s / 128MB 提交 讨论 题解 最新讨论更多讨论 求助莫队为什么被卡 ...
 - 洛谷 P2056 采花 - 莫队算法
		
萧芸斓是 Z国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了 n 朵花,花有 c 种颜色(用整数 1-c 表示) ,且花是排成一排的,以 ...
 - P2056 采花
		
题目描述 萧芸斓是 Z国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了 n 朵花,花有 c 种颜色(用整数 1-c 表示) ,且花是排成 ...
 - cogs:1619. [HEOI2012]采花/luogu P2056
		
1619. [HEOI2012]采花 ★★☆ 输入文件:1flower.in 输出文件:1flower.out 简单对比时间限制:5 s 内存限制:128 MB [题目描述] 萧薰儿是 ...
 - AC日记——采花 洛谷 P2056
		
采花 思路: 莫队: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 100005 int bel[maxn] ...
 - 洛谷 P2056 BZOJ 2743 [HEOI2012]采花
		
//表示真的更喜欢洛谷的题面 题目描述 萧芸斓是 Z国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了 n 朵花,花有 c 种颜色(用整数 ...
 - BZOJ 2743 【HEOI2012】 采花
		
题目链接:采花 这道题一眼看去,一个很显然的想法就是莫队.但是数据范围是\(10^6\)级别的,莫队显然已经过不去了. 其实感觉这道题和以前写过的一道题HH的项链很像.只不过那道题要求的是区间出现次数 ...
 - 【HEOI2012】采花 BZOJ2743
		
Description 萧芸斓是Z国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了n朵花,花有c种颜色(用整数1-c表示),且花是排成一 ...
 - 采花 bzoj 2743
		
采花(1s 128MB)flower [题目描述] 萧芸斓是Z国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了n朵花,花有c种颜色(用整 ...
 
随机推荐
- 《linux设备驱动开发详解》笔记——7并发控制
			
linux中并发无处不在,底层驱动需要考虑. 7.1 并发与竞争 7.1.1 概念 并发:Concurrency,多个执行单元同时.并行执行 竞争:Race Condistions,并发的执行单元对共 ...
 - 实验4 —— [bx]和loop的使用
			
实验 综合使用 loop.[bx],编写完整汇编程序,实现向内存 b800:07b8 开始的连续 16 个字单元重复填充字数据 0403H. 以下为示例程序: assume cs:code # 1 c ...
 - JAVA基础篇—继承
			
父类Vehicle package com.car; public class Vehicle { final String brand;// String color;// double speed ...
 - vijos--繁华的都市
			
描述 城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造.城市C的道路是这样分布的:城市中有n个交叉路口,有些交叉路口之间有道路相连,两个交叉路口之间最多有一条道路 ...
 - kettle-批量同步表数据
			
一.实验目标 利用kettle实现从mysql数据库中的dbf库批量同步表到dbm库(全量同步) 二.实验环境 dbf 库中表f1.f2.f3 .f1中1条数据,f2中100条数据,f3中2条数据 ...
 - python面试题解析(网络编程与并发)
			
1.答: 应用层 与其它计算机进行通讯的一个应用,它是对应应用程序的通信服务的.例如,一个没有通信功能的字处理程序就不能执行通信的代码,从事字处理工作的程序员也不关心OSI的第7层.但是,如果添加了一 ...
 - python 学习分享-购物车实操篇
			
程序要求如下: '''购物车程序: 启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表 允许用户根据商品编号购买商品 用户选择商品后,检测余额是否够,够就直接扣款,不够就 ...
 - php isset()与empty()详解
			
bool isset(mixed var);[;mixed var[,...]] 这个函数需要一个变量名称作为参数,如果这个变量存在,则返回true,否则返回false. 也可以传递一个由逗号间隔的变 ...
 - Tinkoff Internship Warmup Round 2018 and Codeforces Round #475 (Div. 2)
			
A. Splits time limit per test 1 second memory limit per test 256 megabytes input standard input outp ...
 - [CODEVS1915] 分配问题(最小费用最大流)
			
传送门 脑残题 建图都懒得说了 ——代码 #include <queue> #include <cstdio> #include <cstring> #includ ...