[2009国家集训队]小Z的袜子(hose)(莫队算法)
来源:互联网 发布:股票数据下载 编辑:程序博客网 时间:2024/04/28 22:49
之前做的一道CF题就是这样的,这题还要简单一点,把查询分块,不同块的按块排序,同一块的按右区间排序。每次把当前的区间[L,R]调整到目标区间[L',R'],然后计算就行了。
代码:
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<map>#include<queue>#include<stack>#include<set>#include<cmath>#include<vector>#define inf 0x3f3f3f3f#define Inf 0x3FFFFFFFFFFFFFFFLL#define eps 1e-9#define pi acos(-1.0)using namespace std;typedef long long ll;const int maxn=50000+10;const int Size=255;struct Querys{ int L,R,id; bool operator <(const Querys & a) const { if(L/Size!=a.L/Size) return L<a.L; return R<a.R; }}querys[maxn];int c[maxn],wz[maxn],n,m;ll ans[maxn][2],res;ll gcd(ll a,ll b) {return b==0?a:gcd(b,a%b);}inline ll cal(ll x){ if(x<2) return 0; return x*(x-1)/2;}void Add(int x){ res-=cal(c[wz[x]]); res+=cal(c[wz[x]]+1); c[wz[x]]++;}void Dec(int x){ res-=cal(c[wz[x]]); res+=cal(c[wz[x]]-1); c[wz[x]]--;}void solve(){ memset(c,0,sizeof(c)); res=0; int l=1,r=0,p; ll d; for(int i=0;i<m;++i) { while(l<querys[i].L) Dec(l++); while(l>querys[i].L) Add(--l); while(r<querys[i].R) Add(++r); while(r>querys[i].R) Dec(r--); p=querys[i].id; ans[p][0]=res; ans[p][1]=(ll)(r-l+1)*(r-l)/2; d=gcd(ans[p][0],ans[p][1]); ans[p][0]/=d;ans[p][1]/=d; }}int main(){ //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); scanf("%d%d",&n,&m); for(int i=1;i<=n;++i) scanf("%d",&wz[i]); for(int i=0;i<m;++i) { scanf("%d%d",&querys[i].L,&querys[i].R); querys[i].id=i; } sort(querys,querys+m); solve(); for(int i=0;i<m;++i) printf("%lld/%lld\n",ans[i][0],ans[i][1]); return 0;}
0 0
- BZOJ 2038([2009国家集训队]小Z的袜子(hose)-莫队算法序列)
- [2009国家集训队]小Z的袜子(hose)(莫队算法)
- BZOJ 2038 2009国家集训队 小Z的袜子(hose) 莫队算法
- bzoj2038: [2009国家集训队]小Z的袜子(hose) 莫队算法(分块)
- [BZOJ2038][2009国家集训队]小Z的袜子(hose) && 莫队算法
- 2038: [2009国家集训队]小Z的袜子(hose) 莫队算法
- kyeremal-bzoj2038-[2009国家集训队]-小z的袜子(hose)-莫队算法
- bzoj 2038: [2009国家集训队]小Z的袜子(hose) (莫队算法)
- 2038: [2009国家集训队]小Z的袜子(hose) 莫队算法
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose)|分块|莫队算法
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose)(莫队算法)
- BZOJ_P2038 [2009国家集训队]小Z的袜子(hose)(莫队算法)
- [2009国家集训队]小Z的袜子(hose)(莫队算法)
- bzoj 2038: [2009国家集训队]小Z的袜子(hose) 【莫队算法】
- bzoj 2038: [2009国家集训队]小Z的袜子(hose)(莫队算法)
- 莫队算法 (dsy)2038: [2009国家集训队]小Z的袜子(hose)
- 2038: [2009国家集训队]小Z的袜子(hose) (莫队算法)
- 2038: [2009国家集训队]小Z的袜子(hose) (莫队算法)
- 引用 世界24大视觉奇图
- 卧室风水与夫妻关系的致命要点
- 居家不可不知的21条风水禁忌
- 第五周——项目一扩展——矩形类
- 按条件改变datagridview的单元格样式
- [2009国家集训队]小Z的袜子(hose)(莫队算法)
- 经典语录
- 用流操作文本文件
- 内存流的读写
- 分数类的雏形
- 代理模式-对象结构型模式
- 二进制序列化
- tcp网络传输服务器 listener
- JSON.stringify语法实例分析