洛谷P1494 [国家集训队]小Z的袜子
Code:
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<cmath>
# define REP(i,a,n) for(int i=a;i<=n;++i)
# define CLR(d,a)memset(d,a,sizeof(d)); using namespace std; void SetIO(string a){
string in=a+".in";
freopen(in.c_str(),"r",stdin);
} const int maxn=60000+5; int n,m,col[maxn]; struct Asks{
int l,r;
Asks(int l=0,int r=0):l(l),r(r){}
}asks[maxn]; void Read(){
scanf("%d%d",&n,&m); REP(i,1,n)
scanf("%d",&col[i]); REP(i,1,m){
int a,b;
scanf("%d%d",&a,&b);
asks[i]=Asks(a,b);
}
} int block; int belong[maxn], ranking[maxn]; int get_belong(int i){
return (i-1)/block+1;
} bool cmp(int i,int j){
if(belong[asks[i].l]==belong[asks[j].l])
return asks[i].r<asks[j].r;
else
return belong[asks[i].l]<belong[asks[j].l];
} void Build(){
block=sqrt(n); REP(i,1,n)
belong[i]=get_belong(i); REP(i,1,m)
ranking[i]=i; sort(ranking+1,ranking+1+m, cmp);
} long long square[maxn], ans[maxn]; long long cnt[maxn]; long long sum_square=0; void update(int t, int delta){
sum_square-=square[t];
cnt[t]+=delta;
square[t]=cnt[t]*cnt[t];
sum_square+=square[t];
} void Work(){ int l=asks[ranking[1]].l, r=asks[ranking[1]].r; REP(i,l,r)
++cnt[col[i]]; REP(i,1,n){
square[i]=cnt[i]*cnt[i];
sum_square+=square[i];
} REP(i,1,m){ ans[ranking[i]]=sum_square; if(i==m)break; int l2=asks[ranking[i+1]].l;
int r2=asks[ranking[i+1]].r; if(r<r2)
REP(i,r+1,r2) update(col[i],1);
else
for(int i=r;i>r2;--i) update(col[i],-1); if(l>l2)
for(int i=l-1;i>=l2;--i)update(col[i],1);
else
REP(i,l,l2-1)update(col[i],-1); l = l2;
r = r2;
}
} long long gcd(long long a,long long b){
return b==0?a:gcd(b,a%b);
} long long up[maxn], down[maxn]; void Print(){
REP(i,1,m){
int l=asks[i].l;
int r=asks[i].r; if(l==r){
up[i]=0;
down[i]=1;
} else{
int length=r-l+1;
up[i]=ans[i]-length;
down[i]=(long long)length*(length-1); if(up[i]==0){
up[i]=0;
down[i]=1;
continue;
} long long k=gcd(up[i],down[i]);
up[i]/=k;
down[i]/=k;
}
} REP(i,1,m)
printf("%lld/%lld\n",up[i],down[i]);
} int main(){
SetIO("input");
Read();
Build();
Work();
Print();
return 0;
}
洛谷P1494 [国家集训队]小Z的袜子的更多相关文章
- 洛谷 P1494 [国家集训队] 小Z的袜子
题目概述: 小Z把N只袜子从1到N编号,然后从编号L到R(L 尽管小Z并不在意两只袜子是不是完整的一双,甚至不在意两只袜子是否一左一右,他却很在意袜子的颜色,毕竟穿两只不同色的袜子会很尴尬. 你的任务 ...
- 洛谷 P1494 [国家集训队]小Z的袜子(莫队)
题目链接:https://www.luogu.com.cn/problem/P1494 一道很经典的莫队模板题,然而每道莫队题的大体轮廓都差不多. 首先莫队是一种基于分块的算法,它的显著特点就是: 能 ...
- P1494 [国家集训队]小Z的袜子
题目 P1494 [国家集训队]小Z的袜子 解析 在区间\([l,r]\)内, 任选两只袜子,有 \[r-l+1\choose2\] \[=\frac{(r-l+1)!}{2!(r-l-1)!}\] ...
- P1494 [国家集训队]小Z的袜子/莫队学习笔记(误
P1494 [国家集训队]小Z的袜子 题目描述 作为一个生活散漫的人,小\(Z\)每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小\(Z\)再也无法忍受这恼人的找袜子过程,于是他 ...
- P1494 [国家集训队]小Z的袜子(luogu)
P1494 小Z的袜子 终于了解了莫队算法(更专业的名称Square Root Decomposition of Queries) 莫队算法: 一般来说解决静态(实际上也有修改的但复杂度更高)的离线( ...
- P1494 [国家集训队]小Z的袜子(莫队)
题目链接:https://www.luogu.org/problemnew/show/P1494 题目大意:中文题目 具体思路:计算概率的时候,每一次是区间的移动,每一次移动,记得先将原来的记录的影响 ...
- 【luogu P1494 [国家集训队]小Z的袜子】 题解
题目链接:https://www.luogu.org/problemnew/show/P1494 #include <cstdio> #include <algorithm> ...
- luogu P1494 [国家集训队]小Z的袜子 ( 普 通 )
题目: 链接:https://www.luogu.org/problemnew/show/P1494 题意:一些袜子排成一排,每个袜子有固定的颜色. ...
- Luogu P1494 [国家集训队]小Z的袜子
比较简单的莫队题,主要是为了熟练板子. 先考虑固定区间时我们怎么计算,假设区间\([l,r]\)内颜色为\(i\)的袜子有\(cnt_i\)只,那么对于颜色\(i\)来说,凑齐一双的情况个数为: \( ...
随机推荐
- CoordinatorLayout:android之ScrollingActivity
1.效果图 2.新建SrcollingActivity后生成代码为: <?xml version="1.0" encoding="utf-8"?> ...
- 去除input 在 webkit内核浏览器 选择历史时,有一个黄色背景
input:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px white inset; } http://www.imooc.com/arti ...
- 记一次redis-cluster的切换
# redis-cli -h 10.5.8.18 -c -p 8001 cluster nodes|grep master 6d2f817064a10631648f24f450a37237b3d53f ...
- 【XSY2689】王子 - 网络流
复活!qwq 题目来源:2018冬令营模拟测试赛(九) 题意: [背景描述] 不是所有王子都会遇见自己的中关村,主公,公主. 从前有个王子姓王,王王子遇到了一位美丽的公主,她的名字当然是公公主 ...
- POJ 3517 And Then There Was One( 约瑟夫环模板 )
链接:传送门 题意:典型约瑟夫环问题 约瑟夫环模板题:n个人( 编号 1-n )在一个圆上,先去掉第m个人,然后从m+1开始报1,报到k的人退出,剩下的人继续从1开始报数,求最后剩的人编号 /**** ...
- BZOJ 1176/2683 Mokia (三维偏序CDQ+树状数组)
题目大意: 洛谷传送门 三维偏序裸题.. 每次操作都看成一个三元组$<x,y,t>$,表示$x,y$坐标和操作时间$t $ 询问操作拆成$4$个容斥 接下来就是$CDQ$了,外层按t排序, ...
- Memcached的实战笔记
官网:http://memcached.org/ 优秀Blogs: http://blog.csdn.net/jingqiang521/article/details/48345021 开启telne ...
- S3C6410 LCD Overlay Test Program
测试了一下S3C6410 LCD控制器提供的Overlay功能,写了一个简单的test,主要用于实现FB0和FB1之间的Overlay操作.内核选项的Windows至少要为2. 具体支持如下操作:1 ...
- CRM系统 - 总结 (二) stark组件
介绍: stark组件,是一个帮助开发者快速实现数据库表的增删改查+的组件.目标: 10s 中完成一张表的增删改查. 前戏: django项目启动时,自定义执行某个py文件. django启动时,且在 ...
- Springmvc Get请求Tomcat、WebLogic中文乱码问题
Springmvc Get请求Tomcat.WebLogic中文乱码问题 学习了:http://www.cnblogs.com/qingdaofu/p/5633225.html http://www. ...