Codeforces Round #804 (Div. 2)

Posted yeah17981

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #804 (Div. 2)相关的知识,希望对你有一定的参考价值。

https://codeforces.com/contest/1699/problem

我好困啊……

上一次cf还是在上一次(印象中班主任上课我打题解)

差点就只过一题了,爬了现在div2都干不动了吗

迷迷糊糊的想题想到现在

A:给n,选仨数,使得a^b+b^c+c^a=n。在二进制下,最后一位只能是0or1,且最后一位的结果决定了奇偶性,因此我们枚举了一下最后一位的情况(111,110,100,000)发现最后一位必然是偶数。此时令a和b都是1,c就是(n/2)^1

B:我靠有笨蛋看了一小时才看见了偶数。构造一个n*m的二进制矩阵,使得每个数周围有且只有2个与其不同的数。你看那个样例1and2,啊那个形状就非常的妙啊是不是,最小单位就是2,就把样例2翻转填充就好啦。

例:6*4

0 1 1 0 0 1

1 0 0 1 1 0

1 0 0 1 1 0

0 1 1 0 0 1

C:脑子离家出走,看了好久才看懂题目,and不知道为什么以为是单调栈

题目:给定一个元素为0到n-1的长度为n的序列a,求符合要求的序列b种类

要求:任意一个区间l-r,al到ar的mex(区间中不出现的最小自然数)和bl到br的mex相同

题解:从0开始考虑,因为mex{0}=1,所以0的位置是不能改变的

接下来是1,设0在1的前面(设0到1的区间为(x,y)),因此选定一个区间(l,r),当这个区间中包含了0和1(l<=x<y<=r),mex最小为2,除此之外的其他区间mex最大为1,符合这个条件的1也只有一种情况(位置不动)

然后是2,2的话有两种情况,设2的位置为pos,第一种情况下pos<x or pos>y 可以类比1的情况,得出2的位置唯一解。第二种情况是x<pos<y,区间(l,r)在l<=x<y<=r时mex最小为3,除此之外最大为2,3可以出现在区间(x,y)中任意一个原本没数字的位置,ans*=(r-l-i+1)。

后面同理。

ll n,m;
ll a[N];
ll f[N]; 
int main()

	int _;
	_=read();
	while(_--)
	
		n=read();
		for(int i=1;i<=n;i++)
		
			a[i]=read();
			f[a[i]]=i; 
		
		ll l=f[0],r=f[0],ans=1;
		for(int i=1;i<n;i++)
		
			if(f[i]<l)l=f[i];
			else if(f[i]>r) r=f[i];
			else	ans*=(r-l-i+1);
			ans=ans%mod;
		
		printf("%d\\n",ans);
	
  

D:给一个序列,每次可以删除相邻两个不相同的数字,求最后能构成的最长的相同数字的序列。

首先判断一个区间是否能被完全删除:1、区间长度是否为偶数2、区间所有数字出现次数是否过半

设函数f[i]为从1-i的最长的以a[i]结尾的符合结果的序列,令a[j]=a[i],此时判断他们之间的序列是否能被完全删除,可以的话就进行更新。

最后找到f的最大值。

回头再写

以上是关于Codeforces Round #804 (Div. 2)的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #804 (Div. 2) A-E题解

Codeforces Round #804 (Div. 2) A-E题解

Codeforces Round #804 (Div. 2) A-E题解

Codeforces Round #436 E. Fire(背包dp+输出路径)

[ACM]Codeforces Round #534 (Div. 2)

codeforces 804A Find Amir 思维/水题