当前位置: 首页 > article >正文

CF 1900B Laura and Operations 学习笔记

原题链接

传送门

题意

输入三个数字a,b,c表示1,2,3的数目,也就是说有a个1,b个2,c个3,每一次可以删除两个不同的数字,增加一个剩下的数字,比如说删除1和3,增加2,问经过多次操作,能不能使得所有数字只有1,或者只有2,只有3

代码

#include<bits/stdc++.h>
using namespace std;

int main()
{
	int t;
	scanf("%d",&t);
	
	while(t--)
	{
		int a,b,c;
		scanf("%d%d%d",&a,&b,&c);
		
		if(a==b&&b==c)	printf ("1 1 1\n");
		else
		{
			if((b+c)%2==0)
			{
				printf("1 ");
			}
			else
			{
				printf("0 ");
			}
			
			if((a+c)%2==0)
			{
				printf("1 ");
			}
			else
			{
				printf("0 ");
			}
			
			if((a+b)%2==0)
			{
				printf("1\n");
			}
			else
			{
				printf("0\n");
			}
		}
	}
	
	return 0;
}

总结

1.因为英文的原因,读了挺多遍才理解题目的意思

2.赛时我是根据样例分析,猜出来的,赛时可以自己多模拟几个样例检测自己猜的结论是否具有普适性

3.根据奇偶性分析,删去的两个数字奇偶性有两种情况,第一种情况,都是奇数,第二种情况,都是偶数,(写到这里想起来,一道题写完之后最好马上写一下总结,不然,之后补总结,题目积累多了,就不想补了,有几个题目就不想写了)

4.有一个性质,删去1和2,a和b的和的奇偶性不会发生变化,a和b的和每一次都是减小2的倍数,如果和是奇数,表示原来的两个数字分别是奇数和偶数,也就是说奇偶校验不一致,假设最后要得到只剩下数字1,就要求2和3最后的数量都等于0,假设2和3的数量的奇偶校验不一致,无法使得最后满足要求,所以b和c的奇偶校验必须一致才能最后只剩下1

5.背后的数学原理是:经过一次操作之后什么不会发生变化,考虑只有1 剩下的情况,经过一次操作,a会增加1,b和c都会减小1,b+c的奇偶性不会发生变化,因为每一次都是减小2,b和c最终都要减小到0,表示两个数字的奇偶性相同,每一次操作都是减小1,b+c的奇偶性必须是偶数才行

6.总的来说就是,b+c的奇偶性不会发生变化,b+c最后要变成0,所以b+c必须要是偶数

7.考虑到上述情况即可解决该题,参考:官方题解,其他选手代码,以及该题解传送门


http://www.kler.cn/a/147250.html

相关文章:

  • 基于gradio+networkx库对图结构进行可视化展示
  • 【Android原生问题分析】夸克、抖音划动无响应问题【Android14】
  • RabbitMQ教程:路由(Routing)(四)
  • 力扣刷题日记之150.逆波兰表达式求值
  • Neo4j Desktop 和 Neo4j Community Edition 区别
  • 什么是MySQL,有什么特点
  • ETL+BI结合的数据集成工具
  • 了解FastSam:一个通用分割模型(草记)
  • 20231124给RK3399的挖掘机开发板在Andorid10下加鼠标右键返回
  • vue中的keep-alive详解与应用场景
  • 【React】useReducer
  • OpenCvSharp从入门到实践-(03)像素
  • 搭建web服务器
  • Android 单元测试初体验
  • shell_exec 和 exec区别
  • 机器学习——多元线性回归升维
  • HarmonyOS 数据持久化 Preferences 如何在页面中对数据进行读写
  • leetcode做题笔记828. 统计子串中的唯一字符
  • C 中的指针 - 数组和字符串
  • 红黑树(万字图文详解)
  • VUE项目部署过程中遇到的错误:POST http://124.60.11.183:9090/test/login 405 (Not Allowed)
  • WSL2编译内核并更改替换内核版本
  • 安陆FPGA调试中遇到的问题总结
  • 过渡曲线的构造之平面PH曲线
  • oracle数据库巡检常见脚本-系列二
  • Ubuntu 23.10 服务器版本 ifconfig 查不到网卡 ip(已解决)