• Codeforces Round #804 (Div. 2) Editorial(A-B)



    C的题解着实看不懂,先写写 A,B

    A — The Third Three Number Problem

    题意

    给出一个数 n ,找出任意三个数 a b c 满足

    ( a ⊕ b ) + ( b ⊕ c ) + ( a ⊕ c ) = n (a⊕b)+(b⊕c)+(a⊕c)=n (ab)+(bc)+(ac)=n

    思路

    首先根据
    a + b = a ⊕ b + 2 ∗ ( a & b ) a+b=a⊕b+2*(a\&b) a+b=ab+2(a&b)
    这个式子可知
    a ⊕ b a⊕b ab 的奇偶性是与 a + b a+b a+b 相同的
    ( a ⊕ b ) + ( b ⊕ c ) + ( a ⊕ c ) (a⊕b)+(b⊕c)+(a⊕c) (ab)+(bc)+(ac)的奇偶性是与 ( a + b ) + ( b + c ) + ( a + c ) (a+b)+(b+c)+(a+c) (a+b)+(b+c)+(a+c) 相同的,是与 2 ∗ ( a + b + c ) 2*(a+b+c) 2(a+b+c) 的奇偶性相同 ,故 可证得 n 一定是个偶数 , 故在奇数情况下无解;

    然后是构造,根据性质 a ⊕ 0 = a a⊕0=a a0=a 我们 可以构造 0 0 n 2 n\over2 2n 三个数

    #include<bits/stdc++.h>
     
    using namespace std;
     
    int n,t; 
    int main()
    {
    	cin>>t;
    	while(t--)
    	{
    		cin>>n;
    		
    		if(n%2!=0) puts("-1");
    		else cout<<"0 0 "<<n/2<<endl;
    		
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    B — Almost Ternary Matrix

    题意

    矩阵构造,使得每个块相连的块与其不同的恰好只有两个

    思路:

    在这里插入图片描述
    把 n 与 m 取得稍大一点画出图既能看出规律

    #include<bits/stdc++.h>
    
    using namespace std;
    typedef long long ll;
    
    int a,b;
    
    int t;
    
    int s[51][51];
    
    int main()
    {
    	cin>>t;
    	
    	while(t--)
    	{
    		cin>>a>>b;
    		
    		s[1][1]=1;
    		s[1][2]=0;
    		s[2][1]=0;
    		s[2][2]=1;//先构造 2*2 的最小单位块
    		
    		for(int i=3;i<=b;i++) 
    			if(i%2==0) s[1][i]=s[1][i-3];
    			else s[1][i]=s[1][i-1];
    		
    		for(int i=3;i<=b;i++) 
    			if(i%2==0) s[2][i]=s[2][i-3];
    			else s[2][i]=s[2][i-1];//构造前两行
    			
    		for(int i=3;i<=a;i++)
    		{
    			if(i%2==0)
    			{
    				for(int j=1;j<=b;j++)
    				{
    					s[i][j]=s[i-3][j];
    				}
    			}
    			else
    			{
    				for(int j=1;j<=b;j++)
    				{
    					s[i][j]=s[i-1][j];
    				}
    			}
    		}//构造后面行
    		
    		for(int i=1;i<=a;i++)
    		{
    			for(int j=1;j<=b;j++)
    			{
    				cout<<s[i][j]<<" ";
    			}
    			puts("");
    		}
    				
    	}//输出
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
  • 相关阅读:
    国外视频搬运素材去哪里找?可搬运下载国外的素材网站库分享
    mdadm命令详解及实验过程
    React中Toast 库推荐
    三电系统集成技术杂谈
    浅谈spring-createBean
    stable diffusion webui中的sampler
    PyQt5 QDockWidget
    基于uwb和IMU融合的三维空间定位算法matlab仿真
    Node + Express 后台开发 —— 上传、下载和发布
    TypeScript 条件语句
  • 原文地址:https://blog.csdn.net/woshilichunyang/article/details/125614320