[CSP-S模拟测试]:计划(前缀和)
题目传送门(内部题32)
输入格式
第一行,三个正整数$n,m,q$。
第二行,$n$个正整数$a_i$,保证$1\leqslant a_i\leqslant n$。
接下来$q$行,每行两个正整数$k,l$,保证$k<l$。
输出格式
输出$q$行,表示每个旅行计划询问的答案。
样例
样例输入:
7 2 7
6 1 3 6 4 6 5
1 2
4 6
2 7
6 7
1 2
1 4
2 6
样例输出:
1
4
35
1
1
10
20
数据范围与提示
对于$20\%$的数据,$2\leqslant n,q\leqslant 100$。
对于$40\%$的数据,$2\leqslant n,q\leqslant 1,000$。
对于$80\%$的数据,$2\leqslant n,q\leqslant 10,000$。
对于$100\%$的数据,$2\leqslant n,q\leqslant 100,000,1\leqslant m\leqslant n,1\leqslant a_i\leqslant n,1\leqslant k < l\leqslant n$。
题解
我们可以$\Theta(n^2)$的时间内求出对于每个左端点,最靠左的不乏味点的位置。
维护四个前缀和。
对于每一次询问,二分求出右端点,然后$\Theta(1)$前缀和就好了。
时间复杂度:$\Theta(n^2+q\log n)$。
期望得分:$100$分。
实际得分:$100$分。
代码时刻
#include<bits/stdc++.h>
using namespace std;
int n,m,q;
int a[100001],sum,vis[100001];
long long cnt[100001];
pair<pair<long long,long long>,pair<long long,long long> > pos[100001];
int main()
{
scanf("%d%d%d",&n,&m,&q);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
cnt[i]=n+1;
}
vis[0]=sum=1;
for(int i=1;i<=n;i++)
{
vis[a[i-1]]--;
if(vis[a[i-1]]){cnt[i]=cnt[i-1];continue;}
sum--;
for(int j=cnt[i-1]+1;j<=n;j++)
{
if(!vis[a[j]])sum++;
vis[a[j]]++;
if(sum>=m)
{
cnt[i]=j;
break;
}
}
}
for(int i=1;i<=n;i++)
{
pos[i].first.first=pos[i-1].first.first+i;
pos[i].second.first=pos[i-1].second.first+i*cnt[i];
pos[i].first.second=pos[i-1].first.second+cnt[i];
pos[i].second.second=pos[i-1].second.second+cnt[i]*cnt[i];
}
while(q--)
{
long long l,r;
scanf("%lld%lld",&l,&r);
long long mid=upper_bound(cnt+l,cnt+r+1,r)-cnt-1;
printf("%lld\n",((r*r+r)*(mid-l+1)-((r+1)*(pos[mid].first.first-pos[l-1].first.first)<<1)+pos[mid].first.second-pos[l-1].first.second+((pos[mid].second.first-pos[l-1].second.first)<<1)-pos[mid].second.second+pos[l-1].second.second)>>1);
}
return 0;
}
rp++
[CSP-S模拟测试]:计划(前缀和)的更多相关文章
- 利用Python中的mock库对Python代码进行模拟测试
这篇文章主要介绍了利用Python中的mock库对Python代码进行模拟测试,mock库自从Python3.3依赖成为了Python的内置库,本文也等于介绍了该库的用法,需要的朋友可以参考下 ...
- Mac下Jmeter快速安装与入门-模拟测试Post请求及设置Http头
[1]去Apache官网下载 Binaries系列的最新Jmeter.gz包 [2]下载到本地之后解压缩,进入到解压之后的目录然后,找到apache-jmeter-4.0/bin/jmeter.sh ...
- Python 的mock模拟测试介绍
如何不靠耐心测试 可能我们正在写一个社交软件并且想测试一下"发布到Facebook的功能",但是我们不希望每次运行测试集的时候都发布到Facebook上. Python的unitt ...
- 【转】利用Python中的mock库对Python代码进行模拟测试
出处 https://www.toptal.com/python/an-introduction-to-mocking-in-python http://www.oschina.net/transla ...
- noi2019模拟测试赛(四十七)
noi2019模拟测试赛(四十七) T1与运算(and) 题意: 给你一个序列\(a_i\),定义\(f_i=a_1\&a_2\&\cdots\&a_i\),求这个序列的所 ...
- csp-s模拟测试91
csp-s模拟测试91 倒悬吃屎的一套题. $T1$认真(?)分析题意发现复杂度不能带$n$(?),计划直接维护答案,考虑操作对答案的影响,未果.突然发现可以动态开点权值线段树打部分分,后来$Tm$一 ...
- csp-s模拟测试83(集训过半)
csp-s模拟测试83(集训过半) 一场信心赛.起初$OJ$爆了我就看见全场$A$了$T1$并且夹杂着$A$掉$T2$我就很难受. 这场比赛没有深入思考,很失败,一个多小时后就结束了我罪恶的一生. 0 ...
- 2019.8.14 NOIP模拟测试21 反思总结
模拟测试20的还没改完先咕着 各种细节问题=错失190pts T1大约三分钟搞出了式子,迅速码完,T2写了一半的时候怕最后被卡评测滚去交了,然后右端点没有初始化为n…但是这样还有80pts,而我后来还 ...
- 2019.8.9 NOIP模拟测试15 反思总结
日常爆炸,考得一次比一次差XD 可能还是被身体拖慢了学习的进度吧,虽然按理来说没有影响.大家听的我也听过,大家学的我也没有缺勤多少次. 那么果然还是能力问题吗……? 虽然不愿意承认,但显然就是这样.对 ...
随机推荐
- 用C#编写ActiveX控件,开发浏览器控件,注册ActiveX 控件
用C#编写ActiveX控件,开发浏览器控件,注册ActiveX 控件用C#编写ActiveX控件 开发浏览器控件这是本控件开发完成后的一个简单应用.我们可以利用它以本地文件夹为单位来批量更新服务器的 ...
- [CSP-S模拟测试]:Star Way To Heaven(最小生成树Prim)
题目描述 小$w$伤心的走上了$Star\ way\ to\ heaven$. 到天堂的道路是一个笛卡尔坐标系上一个$n\times m$的长方形通道(顶点在$(0,0)$和$(n,m)$),小$w$ ...
- JPA project Change Event Handler问题解决
eclipse使用的是有经常会出现JPA project Change Event Handler(watering)很卡 网上的解决办法是 [Help > Installation Detai ...
- mysql查看sql执行情况的几种方法
mysql系统变量分为全局变量和会话变量,全局变量的修改影响到整个服务器,会话变量修改只影响当前的会话. 查看log日志是否开启 show variables like 'general_log' s ...
- 信息安全-威胁防御系统-Fortinet:Fortinet
ylbtech-信息安全-威胁防御系统-Fortinet:Fortinet Fortinet 是多层威胁防御系统的创新者和先锋.该系统能够为业务通信提供最佳安全.优秀性能和低总体占用成本. Forti ...
- Linux-文件系统概述
主要对外部存储设备: 分区与格式化原理: IDE: /dev/hda 第一块硬盘 ……/dev/hdn /dev/hda1 第一块硬盘的第一个分区 第n块IDE硬盘 SCSI:/de/sda ...
- DT时代,如何成为十字复合型数据分析师
DT时代,如何成为十字复合型数据分析师 当前社会正从IT到DT智能时代,传统行业嫁接互联网,产生的是加法效应:大数据创新驱动,产生的是乘法效应,价值呈指数递增.DT时代拼的是人才和创新价值的能力,拼的 ...
- 安装Elasticsearch5.4.0以及head,kibana插件
可以在网盘中下载也可以去官网下载 网盘: Elasticsearch 地址:http://pan.baidu.com/s/1hrI0AFU elasticsearch-head 地址:http:// ...
- mysql null 值查询问题
我在开发公司内部的一个项目时遇到一个问题:select student_quality_id from STUDENT_QUALITY where mark_status=0 and batch_st ...
- BPT(Business Process Testing)