2023.8.31题目小记

2023-11-09

1.费解的开关

1208. 翻硬币 - AcWing题库

1.使用位进制优化

2.由于第一行如果已经确定下来则后面的每一行都可以确定,可以将第一行的所有方法全部记录下来PS:32的二进制为100000一共六位,而此就已经可以使用位运算将五位开关全部枚举出来。此时枚举如果位运算当前位为1表示需要按开关,如果为0则不需要,注意此处不要和题目中的01亮灯是否的意思搞混

此处解释一下为什么第一行需要将所有安灯的方法枚举一遍:;因为第一行的灯的亮暗可以由自己决定也可以由第二行决定,只有第一行枚举所有方法时是以自己为中心改变按钮,后面的都是一下一行为中心改变按钮

3.最后将每一种枚举方法取最小值

#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
int t, cnt;
char g[N][N], ba[N][N];
int dx[5] = {-1, 0, 1, 0, 0};
int dy[5] = {0, 1, 0, -1, 0};
void turn(int x, int y)
{
	for(int i = 0; i < 5; i ++)
	{
		int a = x + dx[i];
		int b = y + dy[i];
		if(a >= 0 && a < 5 && b >= 0 && b < 5)
		{
			g[a][b] ^= 1;
		} 
	}
}
int main()
{
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	cin >> t;
	while(t --)
	{
		int res = 10;
		for(int i = 0; i < 5; i ++)cin >> ba[i];
		for(int op = 0; op < 32; op ++)
		{
			memcpy(g, ba, sizeof g);
			cnt = 0;
			for(int i = 0; i < 5; i ++)
			{
				if(op >> i & 1)
				{
					turn(0, i);
					cnt ++;
				}
			}
			for(int i = 0; i < 4; i ++)
			{
				for(int j = 0; j < 5; j ++)
				{
					if(g[i][j] == '0')
					{
						turn(i + 1, j);
						cnt ++;
					}
				}
			}
			int dark = 1;
			for(int i = 0; i < 5; i ++)
			{
				if(g[4][i] == '0')
				{
					dark = 0;
					break;
				}
			}
			if(dark)res = min(res, cnt);	
		}
		if(res > 6)res = -1;
		cout << res << '\n';
	}
	return 0;
}

2.翻硬币

1208. 翻硬币 - AcWing题库

#include<bits/stdc++.h>
using namespace std;
string s, e;
int cnt;
void turn(int x)
{
	if(s[x] == '*')s[x] = 'o';
	else s[x] = '*';
}
int main()
{
	cin >> s >> e;
	for(int i = 0; i < s.size() - 1; i ++)
	{
		if(s[i] != e[i])
		{
			turn(i + 1);
			cnt ++;
		}
	}
	cout << cnt;
	return 0;
}

3.约数之和

97. 约数之和 - AcWing题库

采用分治

#include<bits/stdc++.h>
using namespace std;
const int mod = 9901;
int a, b;
int qmi(int p, int k)
{
	int res = 1;
	p %= mod;
	while(k)
	{
		if(k & 1)res = res * p % mod;
		p = p * p % mod;
		k >>= 1;
	}
	return res;
}
int sum(int p, int k)
{
	if(k == 1)return 1;
	if(k % 2 == 0)return (1 + qmi(p,k / 2)) * sum(p, k / 2) % mod;
	return (sum(p, k - 1) + qmi(p, k - 1)) % mod;
}
int main()
{
	cin >> a >> b;
	int res = 1;
	for(int i = 2; i <= a / i; i ++)
	{
		if(a % i == 0)
		{
			int s = 0;
			while(a % i == 0)
			{
				a /= i;
				s ++;
			}
			res = res * sum(i, b * s + 1) % mod;
		}
	}
	if(a > 1)res = res * sum(a, b + 1) % mod;
	if(a == 0)res = 0;
	cout << res;
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2023.8.31题目小记 的相关文章

随机推荐

  • 根据点云高度赋色(附open3d python代码)

    绘制点云图时用颜色来表征其高度 我们先计算了点云的高度范围 然后把每个点的颜色根据高度来进行映射 稍微修改代码 我们也可以让高度颜色渐变转换为 X 轴距离颜色渐变 稍微修改代码 我们也可以让高度颜色渐变转换为 X 轴距离颜色渐变 codin
  • Promise 实现原理

    文章目录 一 Promise 介绍 二 promise 源码实现 一 Promise 介绍 定义 Promise 是异步编程的一种解决方法 比传统的回调函数和事件更合理 它是由社区提出和实现经由 ES6 将其写进语言标准 并在原生提供了 P
  • Linux安装python3和pip3

    安装python3 yum y install zlib devel bzip2 devel openssl devel ncurses devel sqlite devel readline devel tk devel gdbm dev
  • python serial打开M5串口重启问题

    使用比较常用的方法打开串口 import serial ser serial Serial COM3 115200 使用上述代码 第一次打开会导致m5重启 重启的原因可能跟烧录类似 在烧录程序完毕以后都会重启 解决方法 import ser
  • 问题/lib64/libc.so.6: version `GLIBC_2.18‘ not found

    1 首先下载GLIBC 2 18到本地 2 解压压缩包 3 cd进入到解压好的文件夹内 mkdir build 4 cd build 执行该命令 configure prefix usr disable profile enable add
  • python 绘制正弦余弦函数 matplotlib的基本使用

    matplotlib的基本使用 import matplotlib pyplot as mp import numpy as np x np linspace 0 2 np pi 1000 y sin np sin x y cos np c
  • [初学python]新类(new-style class)

    类 class 也是对象在python之中 万物皆对象 类也是对象 类的类 就被称为元类 即类是元类的实例 正如类的实例的行为取决于类 元类的实例 类 的行为也取决于元类 new style classes的由来new style clas
  • 华为OD机试真题Java_2022-2023-题目0189-最多等和不相交连续子序列

    最多等和不相交连续子序列 题目描述 给定一个数组 我们称其中连续的元素为连续子序列 称这些元素的和为连续子序列的和 数组中可能存在几组连续子序列 组内的连续子序列互不相交且有相同的和 求一组连续子序列 组内子序列的数目最多 输出这个数目 输
  • 笔记24-2(C语言进阶 程序环境和预处理)

    目录 注 预定义详解 预处理符号 举例 使用例 define define 定义标识符 define定义宏 括号很重要 define 替换规则 和 带副作用的宏参数 宏和函数的对比 命名约定 undef 命名行定义 条件编译 常见的条件编译
  • 宏定义 类模板 及类模板的全特化

    如下所示 定义一个宏函数 只要传入类型名 即可生成一个类模板 include
  • 图灵1月书讯:阅新书辞旧岁,览经典迎新年

    原文链接 本期小编为您特别推荐的是 说服人要懂心理学 著名行为心理学家 演讲大师最新力作 七大动力 丰富实例 教你做个说服高手 Susan M Weinschenk拥有行为心理学博士学位 在35年的职业生涯中 她一直致力于把心理学领域对人类
  • c语言把一个数组里面的部分值直接复制到另外一个数组

    头文件是 include
  • MATLAB实现费诺编码的计算与分析

    一 实验目的 1 理解霍费诺编码的原理 2 掌握费诺编码的方法和步骤 3 熟悉费诺编码的效率 4 本实验用Matlab语言编程实现费诺 Fano 编码 二 实验环境 windows XP MATLAB 7 三 实验原理 费诺编码算法如下 在
  • 【实战 01】心脏病二分类数据集

    目录 1 获取数据集 2 数据集介绍 3 数据预处理 4 构建随机森林分类模型 5 预测测试集数据 6 构建混淆矩阵 7 计算查全率 召回率 调和平均值 8 ROC曲线 AUC曲线 注 每一章节可以为一个py文件 4 5 6 7写在同一个文
  • OAuth2 使用Zuul细粒度权限控制笔记

    先置条件 基于我的项目 假设我现在 有gateway service 网关 auth service 权限认证 game service 游戏 ad service 广告 使用相关版本如下 版本搭配参考 https github com a
  • 吃老本

    一转眼毕业都快10年了 感觉加入现在这个公司以来 技术上没什么进展 还在吃老本 都是毕业后前5年的时候学到的东西 晚上回去以后 也没有热情看书了 只想休息 奉劝那些刚刚毕业的同学 趁着年轻 有大把时间 多看书 多钻研一下技术 别像我这样在这
  • 由Eclipse中Ctrl+H快捷键失效而引申出的一系列问题

    前面说过新公司用idea 但是用了一段时间后发现里面的操作 界面 快捷键等等和我的习惯实在相差太大 于是最近又把eclipse下载了回来 但是在设置环境的时候却出现了一些伤脑筋的小问题 首先第一点问题是一些快捷键失效了 比如CTRL H 这
  • 数字图像处理 -灰度变换 之 gamma变换(gamma transformation)

    Reference https blog csdn net zhoufan900428 article details 12709361 The gamma transformation is different from log tran
  • HTTP的8种请求方法和用途

    一 什么是HTTP 超文本传输协议 Hyper Text Transfer Protocol HTTP 是一个简单的请求 响应协议 它通 常运行在TCP之上 它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应 请求 和响应消息的
  • 2023.8.31题目小记

    1 费解的开关 1208 翻硬币 AcWing题库 1 使用位进制优化 2 由于第一行如果已经确定下来则后面的每一行都可以确定 可以将第一行的所有方法全部记录下来PS 32的二进制为100000一共六位 而此就已经可以使用位运算将五位开关全