• bzoj3781 小B的询问


    题目

    luogu2709

    bzoj3781

    题解

    很裸的一道莫队

    最近真的是,感觉自己完全不在状态,几道题WA N遍过不了,最后发现全部都是类型出问题,int直接赋给longlong,longlong输出用%d !!?

    啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊,我怕是大寿将至了

    代码

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #define N 50005
    #define ll long long 
    using namespace std;
    
    int n,m,k,b[N];
    int block,blo[N];
    ll cnt,ans[N],sum[N];
    
    struct node
    {
    	int l,r,id;
    }q[N];
    
    bool cmp(node x,node y)
    {
    	if(blo[x.r]!=blo[y.r]) return blo[x.r]<blo[y.r];
    	return blo[x.l]<blo[y.l];
    }
    
    void update(int x,int deta)
    {
    	cnt-=sum[b[x]]*sum[b[x]];
    	sum[b[x]]+=(ll)deta;//* int赋给longlong要强制转换
    	cnt+=sum[b[x]]*sum[b[x]];
    }
    
    int main()
    {
    	scanf("%d%d%d",&n,&m,&k);block=sqrt(n); 
    	for(int i=1;i<=n;i++) scanf("%d",&b[i]),blo[i]=(i-1)/block+1;
    	for(int i=1;i<=m;i++) scanf("%d%d",&q[i].l,&q[i].r),q[i].id=i;
    	sort(q+1,q+1+m,cmp);
    	int pr=0,pl=1;
    	for(int i=1;i<=m;i++)
    	{
    		int id=q[i].id;
    		if(q[i].l==q[i].r){ans[id]=1;continue;}
    		if(q[i].r>pr) for(int j=pr+1;j<=q[i].r;j++) update(j,1);
    		else for(int j=pr;j>q[i].r;j--) update(j,-1);
    		if(q[i].l>pl) for(int j=pl;j<q[i].l;j++) update(j,-1);
    		else for(int j=pl-1;j>=q[i].l;j--) update(j,1);
    		pr=q[i].r;pl=q[i].l;
    		ans[id]=cnt;
    	}
    	for(int i=1;i<=m;i++) printf("%lld
    ",ans[i]);
    	return 0;
    }
  • 相关阅读:
    图解测试之稳定性-如何开始稳定性测试
    系统稳定性保障
    系统稳定性评测
    分布式架构的架构稳定性
    app测试--稳定性测试
    服务器稳定性测试方法汇总
    服务端稳定性测试
    发票问题
    android x86 固件定制
    Nim游戏博弈(收集完全版)
  • 原文地址:https://www.cnblogs.com/XYZinc/p/7395581.html
Copyright © 2020-2023  润新知