• 2022“杭电杯”中国大学生算法设计超级联赛(7)


    1004.Black Magic

    题意:
    给出(0,0),(1,0),(0,1),(1,1)的砖块,分别为e,l,r,b个。
    当1和1相邻时,这两块砖会变成一块。
    把这些砖块排成一排,求最后砖块数目的最大值和最小值。

    思路:
    (1)求最小值思路:
    (0,0)是不起作用的,所以为e块。
    如果有(1,1),先把所有的(1,1)排一起 ,会合成一块。
    初始f=0。
    在有(1,1)的情况下,最后会变成一块(1,1),那么就标记f=1。
    为了让砖块更少,那么如果有(0,1),就排成(0,1)(1,1),l–。
    如果有(1,0),就排成(1,1)(1,0),r–。
    (0,1)和(1,0)就尽量让它们拼成(0,1)(1,0)。这样就会形成min(l,r)块。
    剩下的就不能消除了。
    则mi=e+f+min(l,r)+abs(l,r)
    (2)求最大值思路:
    尽量不要让1和1相邻,那就把(1,1)和(0,0)交替放,
    可知x个(0,0)可以消耗x+1个(1,),
    其余的(0,0)不变为e,(0,1)全部自己排,(1,0)也全部自己排,
    最后其实是看还有没有剩余的(1,1),
    如果有,那无论如何都会消耗掉。
    设消耗的个数num=(b-e-1>0)?(b-e-1):0。
    则ma=总砖块数量-num。

    代码:

    #include
    using namespace std;
    int e,l,r,b,t;
    int mi(int e,int l,int r,int b){
    	int f=0,ans=0;
    	if(b>0) {
    		f=1;
    	    if(l>=1) l=l-1;
    	    if(r>=1) r=r-1;
    	}
    	ans=f+min(l,r)+abs(l-r)+e;
    	return ans;
    }
    int ma(int e,int l,int r,int b){
    	int num=(b-e-1>0) ? (b-e-1) : 0;
    	int ans=e+l+r+b-num;
    	return ans;
    }
    int main(){
    	scanf("%d",&t);
    	while(t--){
    		scanf("%d%d%d%d",&e,&l,&r,&b);
    		int ans1=mi(e,l,r,b);
    		int ans2=ma(e,l,r,b);
    		printf("%d %d\n",ans1,ans2);
    	}
    	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

    1008.Triangle Game

    题意:
    给出非退化三角形的三条边a,b,c,玩家轮流操作,每次选择一条边并减小这条边,并要使之也能成为非退化三角形。

    思路:
    博弈论。
    如果石子个数减一的异或和不为0,先手必胜;否则后手必胜。
    关于我因为忘记加括号导致答案错误,真的教训深刻,啊啊啊!

    代码:

    #include 
    using namespace std;
    int a,b,c;
    int main(){
    	int t;
    	scanf("%d",&t);
    	while(t--){
    		scanf("%d%d%d",&a,&b,&c);
    		a--,b--,c--;
    		int ans=a^b^c;
    		if(ans==0) puts("Lose");
    		else puts("Win");
    	}
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
  • 相关阅读:
    程序的环境
    深入探讨 Golang 中的追加操作
    Ubuntu系统安装MySQL主从模式集群(成功!)
    Linux查看指定端口是否被占用
    攻防世界之Misc文件类型
    基于射频指纹的LoRa网络安全方案研究
    1688按关键字搜索商品 API 返回值说明
    媒体服务器与视频服务器有什么区别
    【电视剧-长相思】经典语录
    Vue3.0和2.0语法不同分析
  • 原文地址:https://blog.csdn.net/srh20/article/details/126252447