首页 > 其他分享 >20240503比赛总结

20240503比赛总结

时间:2024-05-03 21:45:33浏览次数:25  
标签:总结 gxyzoj 比赛 int 100005 20240503 hzoj include com

T1 [CF1279C]Stack of Presents

https://gxyzoj.com/d/hzoj/p/3686

数据出锅了,100->40

按题意模拟即可,可以发现,最优情况下,一定是将取出的数按后面的拿的顺序排序,O(1)取出,而在取之前未排序的,则需要花2k+1的时间排序并取出

代码:

#include<cstdio>
#define ll long long
using namespace std;
int T,n,m,a[100005],b[100005],vis[100005];
int main()
{
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d%d",&n,&m);
		for(int i=1;i<=n;i++)
		{
			scanf("%d",&a[i]);
			vis[a[i]]=i;
		}
		for(int i=1;i<=m;i++)
		{
			scanf("%d",&b[i]);
			b[i]=vis[b[i]];
		}
		ll ans=0;
		int id=0;
		for(int i=1;i<=m;i++)
		{
			if(b[i]<id) ans++;
			else
			{
				ans=ans+1ll*2*(b[i]-i)+1;
				id=b[i];
			}
		//	printf("%d\n",ans);
		}
		printf("%lld\n",ans);
	}
	return 0;
}

T2 [luogu5522]棠梨煎雪

https://gxyzoj.com/d/hzoj/p/3667

树状数组+卡常

没事千万别写线段树!!!

可以发现,如果同一位上既有0,又有1,则这个区间必然无解,而如果所有的都是?,则这一位有两种情况,乘法原理求解即可

如何判断0与1的情况?

直接用60个树状数组,记录每一位0和1的情况,然后求和即可

代码:

#include<cstdio>
#include<iostream>
#include<string>
using namespace std;
int n,m,q;
string s[100010];
int lowbit(int x)
{
	return x & (-x);
}
struct tree{
	int a[100010];
	void add(int x,int val)
	{
		while(x<=m)
		{
			a[x]+=val;
			x+=lowbit(x);
		}
	}
	int query(int x)
	{
		int res=0;
		while(x)
		{
			res+=a[x];
			x-=lowbit(x);
		}
		return res;
	}
}tr[65];
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>m>>q;
	for(int i=1;i<=m;i++)
	{
		cin>>s[i];
		for(int j=0;j<n;j++)
		{
			int x=s[i][j]-'0';
			if(s[i][j]!='?')
			tr[j*2+x].add(i,1);
		}
	}
	int ans=0;
	while(q--)
	{
		int opt;
		cin>>opt;
		if(opt==0)
		{
			int l,r;
			cin>>l>>r;
			int sum=1;
			for(int i=0;i<n;i++)
			{
				int x=tr[i*2].query(r)-tr[i*2].query(l-1);
				int y=tr[i*2+1].query(r)-tr[i*2+1].query(l-1);
				if(x!=0&&y!=0)
				{
					sum=0;
					break;
				}
				if(x==0&&y==0) sum<<=1;
			}
			ans^=sum;
		//	cout<<sum<<"\n";
		}
		else
		{
			int x;
			string st;
			cin>>x>>st;
			for(int i=0;i<n;i++)
			{
				int tmp=s[x][i]-'0';
				if(s[x][i]!='?') 
				tr[i*2+tmp].add(x,-1);
				tmp=st[i]-'0';
				if(st[i]!='?')
				tr[i*2+tmp].add(x,1);
			}
			s[x]=st;
		}
	}
	cout<<ans;
	return 0;
}

T3 [luogu1174]打砖块

https://gxyzoj.com/d/hzoj/p/3685

标签:总结,gxyzoj,比赛,int,100005,20240503,hzoj,include,com
From: https://www.cnblogs.com/wangsiqi2010916/p/18171646

相关文章

  • 第一本书总结@_@
    第一本书分为十四个单元,我们只学习了十二个,这里不过多赘述。我先学了如何开启C++,并编写下第一串程序"cout<<"Hellowould!";这便是梦开始的地方,后来又学了各种类型———"bool,int,double,longlong,char,string…等。同时,for语句的学习使原来十分麻烦的代码变得简单,代码长度也......
  • multiset用法总结
    multiset是库中一个非常有用的类型,它可以看成一个序列,插入一个数,删除一个数都能够在O(logn)的时间内完成,而且他能时刻保证序列中的数是有序的,而且序列中可以存在重复的数。简单应用:通过一个程序来看如何使用multiset:#include<string>#include<iostream>#include<set>usin......
  • 5.3考试总结
    今天考的好一些。(244分,rk2)T1[CF1279C]StackofPresents显而易见,每次排序的时候肯定是把先取出来的排在前面,所以只需要维护一个指针\(z\),表示目前最靠里的一个礼物,假如现在这个要取的礼物比它靠外,贡献为1,否则它之前所有礼物都在它的外侧,计算出贡献后,将\(z\)改为这个礼物......
  • 中考常见同义词和同义短语总结
    about(大约)=orsoacoupleof=several=afewa(large)numberof=manyalittle=alittlebitalotof=lotsof=many/muchapieceofadvice=asuggestionaquartertofive=fourforty-fiveateacherwithexperience=anexperiencedteachera......
  • 【比赛】高一下三调
    A.李时珍的皮肤衣看不出规律就打表点击查看代码#include<bits/stdc++.h>#definell__int128usingnamespacestd;longlongn;voidp(llx){ if(!x)return; p(x/10); cout<<int(x%10);}llqpow(lla,llb){ llans=1; while(b) { if(b&1)ans=ans*a%n; a=......
  • 2024.5.3【比赛】高一下三调
    为了拓宽自己的英雄池,还是要写一下。分数&排名:理想:会牵挂的叫亲人,回不去的是故乡。现实:神虎一跃,威震天地!A.李时珍的皮肤衣今天输了,明天也要卷土重来。赛后加点卡赛时是不理解的。为啥这次就加点,上次数据范围错了都不把数据范围错的删了给我重测。自己手动模......
  • 操作系统总结
    首先,我们从概念说起,操作系统是一种系统软件,它是计算机硬件和其他软件之间的桥梁。它的作用便是管理和控制计算机的硬件资源,如处理器、内存、硬盘等等,操作系统的主要任务又包括进程管理、内存管理、文件系统管理、设备管理和网络管理等。操作系统的发展是从微机操作系统到多处理器......
  • 微机结构总结
    通过对微机结构的学习,我对微机有了更加全面的了解。微机,又称为“微型计算机”,是相对于大型计算机而言的。它以微处理器为核心,配合内存、输入输出接口电路和相应的辅助电路而构成的裸机。下面是他的结构组成:中央处理器(CPU):CPU是微机的核心部件,它负责执行程序中的指令,完成各种算术......
  • 操作系统总结
    操作系统的地位:操作系统是计算机硬件上加载的第一层软件,是对计算机硬件功能的首次扩充。其他软件只有在操作系统的支持下,才能对计算机硬件工作。操作系统是一种重要的系统软件。计算机硬件加上I/O管理软件称为虚拟机,虚拟机再加上文件管理软件称为较强的虚拟机,较强的虚拟机再加上......
  • 《操作系统》分析与总结
    通过这段时间对《操作系统》的学习,我有了很多感受,首先操作系统是计算机系统中最基本的系统软件之一。操作系统的主要功能包括进程管理、内存管理、文件系统管理和设备管理。现代操作系统已经具备了强大的功能和稳定性,为计算机用户提供了便利的操作环境。首先,操作系统中有内存管理......