CSP-S 2023 T1 题解
CSP-S 2023 T1 题解
很简单,我们只需要暴力枚举五位密码,每次判断拨一个齿轮和两个齿轮能达到的状态数,如果等于 \(n\),答案 \(+1\)。时间复杂度 \(O(10^5 \times 5n)\)。
code
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;
using ll = long long;
const int kMaxN = 110, kInf = (((1 << 30) - 1) << 1) + 1, kMod = 1e9 + 7;
int n, a[9][6], b[6], ans = 0, sum = 0, cnt = 0, c[4], idx = 0;
int main() {
// freopen(".in", "r", stdin);
// freopen(".out", "w", stdout);
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
cin >> n;
for (int i = 1; i <= n; ++ i) {
for (int j = 1; j <= 5; ++ j) {
cin >> a[i][j];
}
}
// 枚举五位密码
for (int i = 0; i <= 9; ++ i) {
for (int j = 0; j <= 9; ++ j) {
for (int k = 0; k <= 9; ++ k) {
for (int l = 0; l <= 9; ++ l) {
for (int x = 0; x <= 9; ++ x) {
b[1] = i, b[2] = j, b[3] = k, b[4] = l, b[5] = x;
sum = 0;
// 拨一个齿轮能达到的状态
for (int I = 1; I <= n; ++ I) {
cnt = 0;
for (int J = 1; J <= 5; ++ J) {
(b[J] == a[I][J]) && (++ cnt);
}
(cnt == 4) && (++ sum);
}
// 拨两个齿轮能达到的状态
for (int I = 1; I <= n; ++ I) {
cnt = 0, idx = 0;
for (int J = 1; J <= 5; ++ J) {
if (b[J] == a[I][J]) { // 如果相等
++ cnt; // 相同个数 +1
} else { // 否则记录
c[(idx == 3? idx : ++ idx)] = J;
}
}
if (cnt == 3) { // 如果有 2 个不同
if (idx == 2 && abs(c[1] - c[2]) == 1) { // 如果相邻
if ((a[I][c[1]] < b[c[1]]? 10 - (b[c[1]] - a[I][c[1]]) : a[I][c[1]] - b[c[1]]) == (a[I][c[2]] < b[c[2]]? 10 - (b[c[2]] - a[I][c[2]]) : a[I][c[2]] - b[c[2]]) && (a[I][c[1]] > b[c[1]]? 10 - (a[I][c[1]] - b[c[1]]) : b[c[1]] - a[I][c[1]]) == (a[I][c[2]] > b[c[2]]? 10 - (a[I][c[2]] - b[c[2]]) : b[c[2]] - a[I][c[2]])) { // 如果能朝同一方向波动且幅度相同
++ sum;
}
}
}
}
if (sum == n) { // 如果能达到的个数 = n
++ ans; // 答案 +1
}
}
}
}
}
}
cout << ans << '\n';
return 0;
}
CSP-S 2023 T1 题解的更多相关文章
- WC2019 全国模拟赛第一场 T1 题解
由于只会T1,没法写游记,只好来写题解了... 题目链接 题目大意 给你一个数列,每次可以任取两个不相交的区间,取一次的贡献是这两个区间里所有数的最小值,求所有取法的贡献和,对 \(10^9+7\) ...
- 【洛谷比赛】[LnOI2019]长脖子鹿省选模拟赛 T1 题解
今天是[LnOI2019]长脖子鹿省选模拟赛的时间,小编表示考的不怎么样,改了半天也只会改第一题,那也先呈上题解吧. T1:P5248 [LnOI2019SP]快速多项式变换(FPT) 一看这题就很手 ...
- 洛谷月赛2018.8 T1题解(U28036 Nagisa loves Tomoya)
[题解] 我们设原来的数组为a1,a2,a3..., 那么一次操作之后的数组变为a1+a2,a2+a3,a3+a4..., 两次操作之后数组变为a1+2a2+a3,a2+2a3+a4,a3+2a4+a ...
- csp联考T1
本题主要难点在于如何处理dist^2的问题 40分算法 n^2暴力就不必多嘴,直接枚举根节点DFS就行了. 70分算法 对于b=0的情况,我们可以考虑用换根法来计算根节点的变化对总权值带来的影响. 换 ...
- NOIP2017普及组T1题解
神奇的链接 上面时题目. 其实不得不说,这一题很水,比2015年的第一题水多了. 直接按题目套公式就行了,当然你也可以像我一样化简一下. 直接看代码: #include<cstdio> # ...
- 2019/10/22 test T1 题解
题目描述 给定n个a[i],b[i],求min(x$\in$R){$\sum\limits_{i=1}^{n}$|a[i]*x+b[i]|} 输入格式 第 1行 1个整数 n第 2行 n个整数,第 i ...
- 洛谷八月月赛 II T1 题解
Content 在大小为 \(n\) 的数字三角形中,第 \(i\) 行包含有 \(i\) 个数字,数字从上到下,从左到右依次排列为 \(1,2,3,\dots\). 设第 \(i\) 行第 \(j\ ...
- 信奥题库(OI题库)8月月赛T1题解 幂次数
0.前置知识 分解质因数 快速幂(不必要) 1.思路 首先,我们知道一个正整数(设它为 \(a\) )一定能分解成这样的形式: \[a= \prod_{i\in N^*} p_i^{c_i} \] 其 ...
- bzoj1630/2023 [Usaco2007 Demo]Ant Counting
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1630 http://www.lydsy.com/JudgeOnline/problem.ph ...
- 记codevs第一次月赛
第一次参加这种有奖励的比赛(没错,我就是为猴子而去的 一年没怎么碰代码果然手生,还是用没写多久的C++,差点全跪了 T1数学奇才琪露诺: 首先定义一个函数F(x),F(x)=x的各个数位上的数字和 然 ...
随机推荐
- 你常用哪些工具来分析 JVM 性能?
常用的 JVM 性能分析工具 JVM 性能分析工具主要用于监控.调试和优化 Java 程序的性能,尤其是在垃圾回收.内存泄漏.线程调度等方面.以下是一些常用的 JVM 性能分析工具: 1. jvisu ...
- Reactjs之Vue用户0基础上手Reactjs笔记
Reactjs之Vue用户0基础上手Reactjs笔记 - 搜栈网 (seekstack.cn)https://www.seekstack.cn/post/382
- mac使用pptp的正确方式
环境:macos mojave 10.14.6 尝试的解决方案: mac自带vpn 结论:已经不支持pptp协议 使用shimo 结论:无用,连接的时候没反应 为了解决不能连接的问题,某老外写的ppt ...
- 工具 | ysoSimple
0x00 简介 ysoSimple是一款简易的Java漏洞利用工具,集成Java反序列化,Hessian反序列化,XStream反序列化,SnakeYaml反序列化,Shiro550,JSF反序列化, ...
- Java基础之“数组扩容”
一.Java数组扩容的思路 正常逻辑:Java数组对象的大小是固定不变的,数组对象是不可扩容的. 尽然正常的不行,我们就在new他一次,利用数组复制方法可以变通的实现数组扩容. 逻辑:先弄出一个新的数 ...
- c++并发编程实战-第3章 在线程间共享数据
线程间共享数据的问题 多线程之间共享数据,最大的问题便是数据竞争导致的异常问题.多个线程操作同一块资源,如果不做任何限制,那么一定会发生错误.例如: 1 int g_nResource = 0; 2 ...
- MACD、RSI、Boll以及分型指标的实现与回测
对指标的实现 分为两部分: 信号的计算 实现信号算法 检测历史信号 保存到数据库 信号使用 提供查询接口 我们将信号的计算与回测分离开,将计算后的信号结果保存到数据库中,供回测时调用,模式图如下: 指 ...
- Scipy中的稀疏矩阵的编码方式
import numpy as np from scipy import sparse (1)COO( Coordinate) 最直观的就是COO格式.它用了1维的数组来表示2维的矩阵,每个数组的长度 ...
- CSP-S 2020模拟训练题1-信友队T2 挑战NPC
题意简述 有一个\(k\)维空间,每维的跨度为\(L\),即每一维的坐标只能是\(0,1, \cdots ,L-1\).每一步你可以移动到任意一个曼哈顿距离到自己小于等于\(d\)的任意一个合法坐标. ...
- [转]编译报错:virtual memory exhausted: Cannot allocate memory
一.问题 当安装虚拟机时系统时没有设置swap大小或设置内存太小,编译程序会出现virtual memory exhausted: Cannot allocate memory的问题,可以用swap扩 ...