(重新组队后的第一场组队赛 也是和自己队友的一次磨合吧

这场比赛真的算是一个下马威吧……队友上手一看 啊这不是莫队嘛 然后开敲 敲完提交发现t了 在改完了若干个坑点后还是依然t(真是一个悲伤的故事)然后换我上去查 在经历了一番玄幻操作之后 不知为啥就过了……

J Different Integers

题目大意就是一个数组, 长度n<=1e5  q次询问(l, r)  输出区间[1, l]  [r, n]中不同数字的个数  q<=1e5

一开始上了莫队的板子 但是t掉了 后来发现题目中有个隐藏的坑点 就是存在l>r的情况

找出坑点后 发现还是t 就想到估计要有优化 在分块的时候不用从头到尾进行分块 这也是一个t的点

 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <string>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <cctype>
#include <ctime>
#include <map>
using namespace std;
const int maxn=1e5+;
int a[maxn];
int sum[maxn];
int num[maxn];
int n,q,now;
struct Node{
int l,r,id,d;
}node[maxn];
bool cmp1(Node one,Node two){
if(one.d!=two.d){
return one.d<two.d;
}else{
return one.r<two.r;
}
}
int main(){
while(~scanf("%d%d",&n,&q)){
int all=;
for(int i=;i<=n;i++) {
scanf("%d",&a[i]);num[a[i]]++;
if(num[a[i]]==){
all++;
}
}
int tmp=all;
int block=sqrt(n)+;
for(int i=;i<=q;i++){
scanf("%d%d",&node[i].l,&node[i].r);
node[i].l++;
node[i].r--;
node[i].d=node[i].l/block+;
node[i].id=i;
}
sort(node+,node++q,cmp1);
int l=,r=;
for(int i=;i<=q;i++){
if(node[i].l>node[i].r) {sum[node[i].id]=tmp;continue;}
while(l<node[i].l){
num[a[l]]++;
if(num[a[l]]==) all++;l++;
}
while(l>node[i].l){
l--;num[a[l]]--;
if(num[a[l]]==) all--;
}
while(r<node[i].r){
r++;
num[a[r]]--;
if(num[a[r]]==) all--;
}
while(r>node[i].r){
num[a[r]]++;
if(num[a[r]]==) all++;r--;
}
sum[node[i].id]=all;
}
for(int i=;i<=q;i++){
printf("%d\n",sum[i]);
}
for(int i=;i<=n;i++){
num[a[i]]=;
}
}
return ;
}

后来看叉姐直播讲解的时候 发现还可以用树状数组 线段树去做 好像卡掉了主席树 因为必须要离线状态 下次研究一下树状数组的做法 同时蔡队还在弹幕中提出了一个做法 感觉很巧妙 这里也分享一下 就是把原数组扩展成两倍的长度 首位拼接 所以1-l r-n就变成了r-l+n 就直接是区间问题了(就可以愉快的套板子了)(留坑 研究完就上传代码)

弱鸡队艰难签到成功后 在a题和d题卡了数不清的时间 等补题完后再来填坑orz

2018牛客暑期ACM多校训练营第一场(有坑未填)的更多相关文章

  1. 2018牛客暑期ACM多校训练营第二场(有坑未填)

    第二场终于等来学弟 开始(被队友带飞)的开心(被虐)多校之旅 A   run A题是一个递推(dp?)+前缀和 因为看数据量比较大 就直接上前缀和了 一个比较简单的递推 没有太多难点 签到题 需要注意 ...

  2. 牛客暑期ACM多校 第七场

    链接:https://www.nowcoder.com/acm/contest/145/C来源:牛客网 C .题目描述 A binary string s of length N = 2n is gi ...

  3. 牛客网暑期ACM多校训练营 第九场

    HPrefix Sum study from : https://blog.csdn.net/mitsuha_/article/details/81774727 k较小.分离x和k. 另外的可能:求a ...

  4. 2018牛客网暑期ACM多校训练营(第二场)I- car ( 思维)

    2018牛客网暑期ACM多校训练营(第二场)I- car 链接:https://ac.nowcoder.com/acm/contest/140/I来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 ...

  5. 牛客网暑期ACM多校训练营(第四场):A Ternary String(欧拉降幂)

    链接:牛客网暑期ACM多校训练营(第四场):A Ternary String 题意:给出一段数列 s,只包含 0.1.2 三种数.每秒在每个 2 后面会插入一个 1 ,每个 1 后面会插入一个 0,之 ...

  6. 牛客网暑期ACM多校训练营(第五场):F - take

    链接:牛客网暑期ACM多校训练营(第五场):F - take 题意: Kanade有n个盒子,第i个盒子有p [i]概率有一个d [i]大小的钻石. 起初,Kanade有一颗0号钻石.她将从第1到第n ...

  7. 牛客网 暑期ACM多校训练营(第二场)A.run-动态规划 or 递推?

    牛客网暑期ACM多校训练营(第二场) 水博客. A.run 题意就是一个人一秒可以走1步或者跑K步,不能连续跑2秒,他从0开始移动,移动到[L,R]的某一点就可以结束.问一共有多少种移动的方式. 个人 ...

  8. 牛客网 暑期ACM多校训练营(第一场)A.Monotonic Matrix-矩阵转化为格子路径的非降路径计数,Lindström-Gessel-Viennot引理-组合数学

    牛客网暑期ACM多校训练营(第一场) A.Monotonic Matrix 这个题就是给你一个n*m的矩阵,往里面填{0,1,2}这三种数,要求是Ai,j⩽Ai+1,j,Ai,j⩽Ai,j+1 ,问你 ...

  9. 牛客网暑期ACM多校训练营(第三场)H Diff-prime Pairs (贡献)

    牛客网暑期ACM多校训练营(第三场)H Diff-prime Pairs (贡献) 链接:https://ac.nowcoder.com/acm/contest/141/H来源:牛客网 Eddy ha ...

随机推荐

  1. Hibernate的入门(概念1):

    什么是持久化类? 持久化类的编写规则? 区分自然主键和代理主键? 主键生成策略?

  2. springboot启动报错Failed to configure a DataSource

    2018-11-21 19:43:12.076 WARN 5392 --- [ main] ConfigServletWebServerApplicationContext : Exception e ...

  3. Pandas透视表(pivot_table)详解

    介绍 也许大多数人都有在Excel中使用数据透视表的经历,其实Pandas也提供了一个类似的功能,名为pivot_table.虽然pivot_table非常有用,但是我发现为了格式化输出我所需要的内容 ...

  4. 修复./mysql/proc

    mysql数据库只能建不能删的错误提示及处理方法: mysql> drop database zabbixaa; ERROR 145 (HY000): Table ‘./mysql/proc‘ ...

  5. SVN简单的使用

    一.什么是SVN有什么用? SVN是Subversion的简称,是一个开放源代码的版本控制系统.主要是用于团队开发中的资源共享和团队协作. 二.SVN服务器的安装 1.下载安装文件 在下面地址下载Vi ...

  6. 网络编程基础【day09】:堡垒机前戏(十一)

    本节内容 1.堡垒机前戏 2.SSHClient 3.SFTPClient 一.堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 ...

  7. Ubuntu vim下 实现函数跳转功能

    安装sudo apt-get install exuberant-ctags   在每次使用时,需要初始化tags,只有这样才能使用跳转功能 初始化: 进入项目的顶级目录.输入以下命令.        ...

  8. Spring Boot 2下使用Feign找不到@EnableFeignClients的解决办法

    最近在实践Spring Boot 2+Spring Cloud(Finchley.M9),在用到Feign的时候发现@EnableFeignClients注解开不了,独立使用Feign是可以的,但就是 ...

  9. windows平台在tomcat中启动cas报错解决

    windows平台在tomcat中启动cas报错: Caused by: java.lang.UnsatisfiedLinkError: Could not load library. Reasons ...

  10. tomcat下的Cookie特殊符号问题

    案例:在项目中通过Cookie方式临时存放检索条件,不小心在Cookie值中使用了特殊符号"@",导致在服务器端无法正确解析Cookie值.之所以说"不小心", ...