博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cdoj 1256 昊昊爱运动 预处理
阅读量:5303 次
发布时间:2019-06-14

本文共 1187 字,大约阅读时间需要 3 分钟。

昊昊爱运动

Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)

昊昊喜欢运动

NN天内会参加MM种运动(每种运动用一个[1,m][1,m]的整数表示)

舍友有QQ个问题

问昊昊第ll天到第rr天参加了多少种不同的运动

Input

输入两个数NN, MM (1N20001≤N≤2000, 1M1001≤M≤100);

输入NN个数aiai表示在第i天昊昊做了第aiai类型的运动;

输入一个数QQ(1Q1061≤Q≤106);

输入QQ行 每行两个数 ll, rr(1lrn1≤l≤r≤n);

Output

一共QQ行

每一行输出一个数 表示昊昊在第ll天到第rr天一共做了多少种活动

Sample input and output

Sample Input Sample Output
5 31 2 3 2 231 42 41 5
323

Source

第七届ACM趣味程序设计竞赛第二场(正式赛)
思路:一眼不是离线树状数组,然后看到数据比较小,n*n*m超时;
   预处理n*n,Q*m可以水过;
#include
using namespace std;#define ll long long#define pi (4*atan(1.0))const int N=2e3+10,M=4e6+10,inf=1e9+10;int sum[N][N];int a[N];int main(){ int n,m,t; scanf("%d%d",&n,&m); for(int i=1; i<=n; i++) scanf("%d",&a[i]); for(int i=1; i<=n; i++) { for(t=1; t<=m; t++) sum[t][i]=sum[t][i-1]; sum[a[i]][i]=sum[a[i]][i-1]+1; } int q; scanf("%d",&q); while(q--) { int l,r,ans=0; scanf("%d%d",&l,&r); for(int i=1;i<=m;i++) if(sum[i][r]-sum[i][l-1]>0) ans++; printf("%d\n",ans); } return 0;}

 

转载于:https://www.cnblogs.com/jhz033/p/5837520.html

你可能感兴趣的文章
django中的缓存 单页面缓存,局部缓存,全站缓存 跨域问题的解决
查看>>
常见HTTP状态码(200、301、302、500等)
查看>>
Atiti.大企业病与小企业病 大公司病与小公司病
查看>>
处理器管理与进程调度
查看>>
解决随机数生成的坐标在对角线上的问题
查看>>
服务器ganglia安装
查看>>
ps aux 状态介绍
查看>>
二级指针内存模型
查看>>
bzoj千题计划140:bzoj4519: [Cqoi2016]不同的最小割
查看>>
AsyncTask 异步 URL请求加载图片并保存到本地sd卡
查看>>
ansible-playbook-常用
查看>>
【English】七、常见动词
查看>>
formatDate
查看>>
一个小小的測试题,求解(欢迎解答)
查看>>
Android之SystemUI载入流程和NavigationBar的分析
查看>>
layer 常用弹出
查看>>
170803、springboot jar包启动提示没有主清单属性
查看>>
void*类型的指针
查看>>
jQuery plugin
查看>>
android 城市列表
查看>>