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

九下三月上旬日记

时间:2024-03-04 18:11:43浏览次数:20  
标签:rt int luogu ll tree sum2 上旬 三月 日记

3.1

闲话

做题纪要

luogu B3908 异或构造题?

  • 构造 \(x= \bigoplus\limits_{i=1}^{n}a_{i}\) 即可。

    点击查看代码
    int main()
    {
    	ll n,a,x=0,i;
    	cin>>n;
    	for(i=1;i<=n;i++)
    	{
    		cin>>a;
    		x^=a;
    	}
    	cout<<x<<" "<<0<<endl;
    	return 0;
    }
    

luogu P4303 [AHOI2006] 基因匹配

  • 不太清楚该做法是否能扩展到其他情况。

    点击查看代码
    int c[200000],f[200000],a[200000],b[200000];
    vector<int>vis[200000];
    int lowbit(int x)
    {
    	return (x&(-x));
    }
    void add(int n,int x,int key)
    {
    	for(int i=x;i<=n;i+=lowbit(i))
    	{
    		c[i]=max(c[i],key);
    	}
    }
    int getsum(int x)
    {
    	int ans=0;
    	for(int i=x;i>=1;i-=lowbit(i))
    	{
    		ans=max(ans,c[i]);
    	}
    	return ans;
    }
    int main()
    {
    	int n,ans=0,i,j;
    	cin>>n;
    	for(i=1;i<=5*n;i++)
    	{
    		cin>>a[i];
    		vis[a[i]].push_back(i);
    	}
    	for(i=1;i<=5*n;i++)
    	{
    		cin>>b[i];
    	}
    	for(i=1;i<=5*n;i++)
    	{
    		if(vis[b[i]].size()>=1)
    		{
    			for(j=vis[b[i]].size()-1;j>=0;j--)
    			{
    				f[vis[b[i]][j]]=getsum(vis[b[i]][j]-1)+1;
    				add(5*n,vis[b[i]][j],f[vis[b[i]][j]]);
    			}
    		}
    	}
    	for(i=1;i<=5*n;i++)
    	{
    		ans=max(ans,f[i]);
    	}
    	cout<<ans<<endl;
    	return 0;
    }
    

3.2

闲话

做题纪要

luogu P5142 区间方差

  • 对方差的推导过程详见 2.20 做题纪要 luogu P1471 方差

    点击查看代码
    const ll p=1000000007;
    ll a[500000];
    struct SegmentTree
    {
    	ll l,r,sum1,sum2;
    }tree[500000];
    ll lson(ll x)
    {
    	return x*2;
    }
    ll rson(ll x)
    {
    	return x*2+1;	
    }
    void pushup(ll rt)
    {
    	tree[rt].sum1=(tree[lson(rt)].sum1+tree[rson(rt)].sum1)%p;
    	tree[rt].sum2=(tree[lson(rt)].sum2+tree[rson(rt)].sum2)%p;
    }
    void build(ll rt,ll l,ll r)
    {
    	tree[rt].l=l;
    	tree[rt].r=r;
    	if(l==r)
    	{
    		tree[rt].sum1=a[l];
    		tree[rt].sum2=a[l]*a[l]%p;
    		return;
    	}
    	ll mid=(l+r)/2;
    	build(lson(rt),l,mid);
    	build(rson(rt),mid+1,r);
    	pushup(rt);
    }
    void update(ll rt,ll pos,ll val)
    {
    	if(tree[rt].l==tree[rt].r)
    	{
    		tree[rt].sum1=val;
    		tree[rt].sum2=val*val%p;
    		return;
    	}
    	ll mid=(tree[rt].l+tree[rt].r)/2;
    	if(pos<=mid)
    	{
    		update(lson(rt),pos,val);
    	}
    	else
    	{
    		update(rson(rt),pos,val);
    	}
    	pushup(rt);
    }
    ll query1(ll rt,ll l,ll r)
    {
    	if(r<tree[rt].l||tree[rt].r<l)
    	{
    		return 0;
    	}
    	if(l<=tree[rt].l&&tree[rt].r<=r)
    	{
    		return tree[rt].sum1;
    	}
    	return (query1(lson(rt),l,r)+query1(rson(rt),l,r))%p;
    }
    ll query2(ll rt,ll l,ll r)
    {
    	if(r<tree[rt].l||tree[rt].r<l)
    	{
    		return 0;
    	}
    	if(l<=tree[rt].l&&tree[rt].r<=r)
    	{
    		return tree[rt].sum2;
    	}
    	return (query2(lson(rt),l,r)+query2(rson(rt),l,r))%p;
    }
    ll qpow(ll a,ll b,ll p)
    {
    	ll ans=1;
    	while(b>0)
    	{
    		if(b&1)
    		{
    			ans=ans*a%p;
    		}
    		b>>=1;
    		a=a*a%p;
    	}
    	return ans;
    }
    int main()
    {
    	ll n,m,x,y,pd,sum1,sum2,i;
    	cin>>n>>m;
    	for(i=1;i<=n;i++)
    	{
    		cin>>a[i];
    	}
    	build(1,1,n);
    	for(i=1;i<=m;i++)
    	{
    		cin>>pd>>x>>y;
    		if(pd==1)
    		{
    			update(1,x,y);
    		}
    		if(pd==2)
    		{
    			sum1=query1(1,x,y)*qpow(y-x+1,p-2,p)%p;
    			sum2=query2(1,x,y)*qpow(y-x+1,p-2,p)%p;
    			cout<<(sum2-sum1*sum1%p+p)%p<<endl;
    		}
    	}
    	return 0;
    }
    

3.3

闲话

做题纪要

AT_joig2021_d 展覧会 2 (Exhibition 2)

3.4

闲话

  • 上午上正课的时候,感觉讲的好快,有点跟不上了。
  • 下午刚到机房的时候,有只鸽子飞进了 \(1\) 机房,找 \(miaomiao\) 说要把鸽子放出去了但没成功。后来 \(feifei\) 来了后联合机房众人把鸽子放出去了。
  • \(miaomiao\) 又稍微解释了下直升的政策,包括但不限于分校区时因怕和 @5k_sync_closer@hh弟中弟 抢明年省队名额故不给分到 HZ 然后两个校区平分;若没考到衡中系自主招生线则必须学奥赛,学费看实际奥赛成绩。然后扯了些别的,包括但不限于因学校师资紧张,年级部不给安排上高一课程;初三下半年重心要放在奥赛上。

做题纪要

luogu P3451 [POI2007]ATR-Tourist Attractions

  • 跑 \(d+1\) 遍 \(dijkstra\) ,分别预处理出从 \(1 \sim d+1\) 到 \(1 \sim d+1\) 和 \(n\) 的最短距离。

  • 设 \(f_{i,j}\) 表示当前“停留状态”对应的二进制数为 \(i\) 时,且当前处于点 \(j\) 时的最短路长度。

  • 接下来考虑优化空间。

    • 将 \(2 \sim d+1\) 映射到 \(0 \sim d-1\) 。
    • 因在转移过程中若 \(f_{i,j}\) 能进行转移则,则状态 \(i\) 中已经包含了 \(j\) ,故可以抹去这一位。
    点击查看代码
    struct node
    {
    	int nxt,to,w;
    }e[400010];
    int head[20010],dis[30][20010],viss[20010],f[(1<<19)+10][22],cnt=0;
    bool vis[20010];
    void add(int u,int v,int w)
    {
    	cnt++;
    	e[cnt].nxt=head[u];
    	e[cnt].to=v;
    	e[cnt].w=w;
    	head[u]=cnt;
    }
    void dijkstra(int s)
    {
    	memset(dis[s],0x3f,sizeof(dis[s]));
    	memset(vis,false,sizeof(vis));
    	priority_queue<pair<int,int> >q;
    	int x,i;
    	dis[s][s]=0;
    	q.push(make_pair(0,-s));
    	while(q.empty()==0)
    	{
    		x=-q.top().second;
    		q.pop();
    		if(vis[x]==false)
    		{
    			vis[x]=true;
    			for(i=head[x];i!=0;i=e[i].nxt)
    			{
    				if(dis[s][e[i].to]>dis[s][x]+e[i].w)
    				{
    					dis[s][e[i].to]=dis[s][x]+e[i].w;
    					q.push(make_pair(-dis[s][e[i].to],-e[i].to));
    				}
    			}
    		}
    	}
    }
    int del(int x,int y)
    {     
    	return ((x>>(y+1))<<y)+x-((x>>y)<<y);
    }
    int main()
    {
    	int n,m,d,q,u,v,w,r,s,ans=0x7f7f7f7f,i,j,k;
    	cin>>n>>m>>d;
    	for(i=1;i<=m;i++)
    	{
    		cin>>u>>v>>w;
    		add(u,v,w);
    		add(v,u,w);
    	}
    	cin>>q;
    	for(i=1;i<=d+1;i++)
    	{
    		dijkstra(i);
    	}
    	if(d==0)
    	{
    		cout<<dis[1][n]<<endl;  
    	}
    	else
    	{
    		memset(f,0x3f,sizeof(f));
    		for(i=1;i<=q;i++)
    		{
    			cin>>r>>s;
    			viss[s]|=1<<(r-2);
    		}
    		for(i=1;i<=d+1;i++)
    		{
    			if(viss[i]==0)
    			{
    				f[0][i]=dis[1][i];
    			}
    		}
    		for(i=0;i<=(1<<d)-1;i++)
    		{
    			for(j=2;j<=d+1;j++)
    			{
    				if((i>>(j-2))&1)
    				{
    					for(k=2;k<=d+1;k++)
    					{
    						if(((i>>(k-2))&1)==0&&(i&viss[k])==viss[k])
    						{
    							f[del(i,k-2)][k]=min(f[del(i,k-2)][k],f[del(i,j-2)][j]+dis[j][k]);
    						}
    					}
    				}
    			}
    		}
    		for(i=2;i<=d+1;i++)
    		{
    			ans=min(ans,f[del((1<<d)-1,i-2)][i]+dis[i][n]);
    		}
    		cout<<ans<<endl;
    	}
    	return 0;
    }
    

3.5

闲话

做题纪要

luogu P2831 [NOIP2016 提高组] 愤怒的小鸟

luogu P3622 [APIO2007]动物园

luogu P4163 [SCOI2007]排列

luogu P2167 [SDOI2009]Bill的挑战

luogu P3226 [HNOI2012]集合选数

luogu P3214 [HNOI2011]卡农

luogu P3349 [ZJOI2016]小星星

luogu P6348 [PA2011] Journeys

CF786B Legacy

标签:rt,int,luogu,ll,tree,sum2,上旬,三月,日记
From: https://www.cnblogs.com/The-Shadow-Dragon/p/18052341

相关文章

  • 2024.3 训练日记(上)
    \(\color{grey}\bigstar\)可以秒杀的题。\(\color{green}\bigstar\)思考一会儿后可以秒的题。\(\color{blue}\bigstar\)需要较长时间思考的题。\(\color{#F1C40F}\bigstar\)看题解、稍加指点就会做的题。\(\color{red}\bigstar\)看题解后需要较长时间消化,甚至现在都没有......
  • 三月三日
    今天主要是关于c3p0的配置,我用的是eclipse2020版的,主要遇到的问题是在src目录下创建c3p0-config.xml时找不到file。 看到图理最上方大写的File就可以了,还有图中的代码是测试c3p0的。还有我自己在网上找到的xml的具体内容,<?xmlversion="1.0"encoding="UTF-8"?><c3p0-con......
  • 三月三
    阳历的三月三好像不是什么特殊的日子,不过还是感觉这个日期很特别,正好,自己好久不写东西了。这个寒假自己经历了太多太多了,补课,作业,串亲戚,饭局,还有主角——抑郁症。没错,过了个年,我也彻底崩溃了。低沉的情绪先是如潮水般涌来,然后又凝固变重,将我埋没,让我窒息。在这摊泥沼中,外面的中......
  • 20240301-日记
    今天一下子给我赶到别的地方了。本来想趁着请半天假逃过周五的周会,结果狗领导说,要推迟到周一开。我当时真的是,就是小丑就是我自己。年前车子被剐蹭送去保修,昨天才修好,今天就赶到4S店取车。其实也并不是嫌弃对象的家,只是没想到有点朴素过头了。但是想起自己之前老家住的,好像那种就......
  • 20240229-日记
    可能是因为周一周二加班后遗症,今天的工作进度也不怎么样,最近又临近房子退租,搬家的各个事项又很繁琐。今天一个同事离职的lastday,请团队总共五个小兵一起吃饭,怎么说呢,也没有想象中的推杯换盏,也不会推心置腹。社会是真正极其复杂的,只要我自己做到不害别人,不内耗自己,努力争取自己最......
  • Spring Boot学习日记17
    尝试整合JDBC spring:datasource:username:rootpassword:123456url:jdbc:mysql://localhost:3306/mybatis?useSSL=true&userUniceode=true&characterEncoding=utf8driver-class-name:com.mysql.cj.jdbc.Driverpackagecom.example.spri......
  • Spring Boot学习日记9
    在springboot项目中的resources目录下新建一个文件application.yml编写一个实体类Dog;packagecom.example.springboot02configure.pojo;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.stereotype.Component;@Component//添加......
  • Spring Boot学习日记6
    @SpringBootConfiguration:SpringBoot的配置@Configuration:spring配置类@Component:说明这也是一个spring的组件@EnableAutoConfiguration:自动配置@AutoConfigurationPackage:自动配置包@Import({Registrar.class}):导入了选择器@Import({AutoConfigurationImportSelect......
  • Spring Boot学习日记7
    学会了配置springboot导入各种组件SpringBoot在启动的时候,从类路径下/META-INF/spring.factories获取指定的值将这些自动配置的类导入容器,自动配置类就会生效,帮我们进行自动配置以前我们需要自动配置的东西,现在不需要了整合javaEE,解决方案和自动配置的东西都在Spring-boot-......
  • 二月十三日安卓开发日记6
    1.获取SSHkeys输入 cd~/.ssh,返回"nosuchfileordirectory"表明电脑没有sshkey,需要创建sshkey。然后输入 ssh-keygen-trsa-C“git账号” 以下截图就证明成功了,这个时候按照它给的打开以下地址: 按路径进入.ssh,里面存储的是两个sshkey的秘钥,id_rsa.pub文件里......