首页 > 其他分享 >九下四月下旬日记

九下四月下旬日记

时间:2024-04-22 14:46:59浏览次数:20  
标签:cnt ll 50010 -- sum pos 下旬 四月 日记

4.21

闲话

做题纪要

4.22

闲话

做题纪要

luogu P1494 [国家集训队] 小 Z 的袜子

  • 设 \([l,r]\) 内每个数出现的次数为 \(cnt_{i}\) ,有 \(\begin{aligned} \frac{\sum\limits_{i=1}^{\max\limits_{j=1}^{n} \{ c_{j} \}} \binom{cnt_{i}}{2}}{\binom{r-l+1}{2}} \end{aligned}\) 即为所求。

  • 注意莫队在修改对是否大于 \(0\) 进行特判。

    点击查看代码
    ll a[50010],cnt[50010],L[50010],R[50010],pos[50010],klen,ksum;
    pair<ll,ll>ans[50010];
    struct ask
    {
    	ll l,r,id;
    }q[50010];
    bool q_cmp(ask a,ask b)
    {
    	return (pos[a.l]==pos[b.l])?((pos[a.l]%2==1)?(a.r<b.r):(a.r>b.r)):(a.l<b.l);
    }
    void init(ll n,ll m)
    {
    	klen=n/sqrt(m)+1;
    	ksum=n/klen;
    	for(ll i=1;i<=ksum;i++)
    	{
    		L[i]=R[i-1]+1;
    		R[i]=R[i-1]+klen;
    	}
    	if(R[ksum]<n)
    	{
    		ksum++;
    		L[ksum]=R[ksum-1]+1;
    		R[ksum]=n;
    	}
    	for(ll i=1;i<=ksum;i++)
    	{
    		for(ll j=L[i];j<=R[i];j++)
    		{
    			pos[j]=i;
    		}
    	}
    }
    void add(ll x,ll &sum)
    {
    	sum-=(cnt[a[x]]>=1)*cnt[a[x]]*(cnt[a[x]]-1)/2;
    	cnt[a[x]]++;
    	sum+=cnt[a[x]]*(cnt[a[x]]-1)/2;
    }
    void del(ll x,ll &sum)
    {
    	sum-=cnt[a[x]]*(cnt[a[x]]-1)/2;
    	cnt[a[x]]--;
    	sum+=(cnt[a[x]]>=1)*cnt[a[x]]*(cnt[a[x]]-1)/2;
    }
    ll gcd(ll a,ll b)
    {
    	return b?gcd(b,a%b):a;
    }
    int main()
    {
    	ll n,m,l=1,r=0,sum=0,d,i;
    	cin>>n>>m;
    	for(i=1;i<=n;i++)
    	{
    		cin>>a[i];
    	}
    	init(n,m);
    	for(i=1;i<=m;i++)
    	{
    		cin>>q[i].l>>q[i].r;
    		q[i].id=i;
    	}
    	sort(q+1,q+1+m,q_cmp);
    	for(i=1;i<=m;i++)
    	{
    		while(l>q[i].l)
    		{
    			l--;
    			add(l,sum);
    		}
    		while(r<q[i].r)
    		{
    			r++;
    			add(r,sum);
    		}
    		while(l<q[i].l)
    		{
    			del(l,sum);
    			l++;
    		}
    		while(r>q[i].r)
    		{
    			del(r,sum);
    			r--;
    		}
    		ans[q[i].id]=make_pair(sum,(q[i].r-q[i].l+1)*(q[i].r-q[i].l+1-1)/2);
    	}
    	for(i=1;i<=m;i++)
    	{
    		if(ans[i].first==0)
    		{
    			cout<<"0/1"<<endl;
    		}
    		else
    		{
    			d=gcd(ans[i].first,ans[i].second);
    			if(d==0)
    			{
    				cout<<"0/1"<<endl;
    			}
    			else
    			{
    				cout<<ans[i].first/d<<"/"<<ans[i].second/d<<endl;
    			}
    		}
    	}
    	return 0;
    }
    

标签:cnt,ll,50010,--,sum,pos,下旬,四月,日记
From: https://www.cnblogs.com/The-Shadow-Dragon/p/18150601

相关文章

  • 日记
    2024/4/21#include<stdio.h>voidf(doublea,doubleb,doublec,double*max){  *max=a;  intarr[3]={a,b,c};  for(inti=0;i<3;i++){    if(*max<arr[i])*max=arr[i];  }}intmain(){  doublea=0.0,b=0.0,c=0.0;  doublemax_1=0......
  • 日记
    2024.4.19#include<stdio.h>voiddot(intarr[6][6],int*num,int*row,int*col){ intc=0; intc_1=0; for(inti=1;i<=5;i++){ for(intj=1;j<=5;j++){ for(intp=1;p<=5;p++){ if(arr[i][j]<=arr[p][j]){ c++; } } if(c==5)......
  • 组会日记
    2024-4-18日记大的方向:看完一篇论文!!1.puncturedcode:为什么每一个locallity都要捎带着提一下puncturedcode呢?每一个码都一定有locality属性,但是可能很差,我们需要一个衡量的标准,那么怎么来定义这个标准呢,就是通过punctured来定义,因为punctured是截断的,我们可以通过截断,来判断该......
  • 打造心灵栖息地:YY日记App——原型设计分享
    YY日记App是一个专为年轻人打造的心灵日记应用,旨在提供一个私密、个性化的日记记录平台。在本篇博客中,我将分享我对YY日记App的原型设计思路和实现过程。一、用户研究  在设计YY日记App的原型之前,我进行了深入的用户研究,明确了目标用户群体为年轻人,他们希望有一个简洁易用、......
  • 团队开发日记第二篇
    今天进行了站立会议,主要讨论了整个项目的工作分配和关键技术点......
  • 日记
    2024.4.15#include<stdio.h>voidf(intarr[][5],intnum_1,intnum_2){for(intj=0;j<5;j++){inttemp=arr[num_1-1][j];arr[num_1-1][j]=arr[num_2-1][j];arr[num_2-1][j]=temp;}}i......
  • Jedis连接踩坑日记
    Jedis连接踩坑日记背景:线上某块业务的增删改功能全部都不可用。页面发送了xhr请求之后状态一直处于pending状态,后端没有日志产生排查路线与解决办法第一:由于服务在内网里面,无法进行远程调试。所以采用比较笨的方式,在代码里面多加一些日志,最后定位JedisUtil.getJedis().hs......
  • 日记
    2024.4.14洛谷B2074计算星期几voidf(int*num,intpower,int*ans){*num=*num%7;for(inti=1;i<=power;i++){(*ans)*=(*num);(*ans)%=7;}}intmain(){intnum=0,power=0,ans=1;scanf("%d%d",&num,&power);......
  • 日记
    2024.4.13#include<stdio.h>voidf(intnum,int*num_1){inta,b,c,d;intnum_3;for(inti=0;i<num;i++){scanf("%d",&num_3);a=num_3/1000%10;b=num_3/100%10;c=num_3/10%10;d=num_3%......
  • 九下四月中旬日记
    4.11闲话白天考试,依次是英语早读,理综,英语,数学,长达\(2h\)的文综自习,文综。理综物理多选\(BD\)涂成了\(CD\),挂了\(3pts\)。因不知道水是比热容最大的液体,多分讨了一种情况,挂了\(1pts\)。化学英语\(D\)篇阅读感觉挺贴合自身实际的。数学已知\(\fr......