题解(自记录) | 牛客寒假集训营20250126第三场比赛
A.智乃的博弈游戏
题目:https://ac.nowcoder.com/acm/contest/95335/A
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main() {
ll x;
cin >> x;
if(x%2==0)cout << "No";
else cout << "Yes";
}
题解思路:题目本质上就是奇偶判断,若为偶数则仅能拿走奇数个,后手可以直接拿走奇数-2获得胜利,若为奇数则如上直接胜利.
B.智乃的质数手串
题目:https://ac.nowcoder.com/acm/contest/95335/B
C.智乃的Notepad(Easy version)
题目:https://ac.nowcoder.com/acm/contest/95335/C
D.智乃的Notepad(Hard version)
题目:https://ac.nowcoder.com/acm/contest/95335/D
E.智乃的小球
题目:https://ac.nowcoder.com/acm/contest/95335/E
F.智乃的捉迷藏
题目:https://ac.nowcoder.com/acm/contest/95335/F
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main() {
ll T;
cin >> T;
while(T--){
int n,a,b,c;
scanf("%d %d %d %d",&n,&a,&b,&c);
if(a+b+c>2*n||a+b+c<n)cout << "No" << endl;
else cout << "Yes" << endl;
}
}
题解思路:存在n个人,让小A小B小C分别看到a,b,c个人直接计算最小状态为a+b+c,最大状态为(a+b+c)*2如果n介于这两个区间内则可以成立,反之不成立
G.智乃与模数
题目:https://ac.nowcoder.com/acm/contest/95335/G
H.智乃与黑白树
题目:https://ac.nowcoder.com/acm/contest/95335/H
I.智乃的兔子跳
题目:https://ac.nowcoder.com/acm/contest/95335/I
J.智乃画二叉树
题目:https://ac.nowcoder.com/acm/contest/95335/J
K.智乃的逆序数
题目:https://ac.nowcoder.com/acm/contest/95335/K
L.智乃的三角遍历
题目:https://ac.nowcoder.com/acm/contest/95335/L
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main() {
int n;
cin >> n;
cout << "YES" << endl;
if(n == 1)
{
cout<<"1 2 3 1"<<endl;
}
if(n == 2)
{
cout<<"1 2 4 5 2 3 5 6 3 1"<<endl;
}
if(n == 3)
{
cout<<"1 2 4 7 8 4 5 8 9 5 2 3 5 6 9 10 6 3 1"<<endl;
}
if(n == 4)
{
cout<<"1 2 4 7 11 12 7 8 12 13 8 4 5 8 9 13 14 9 5 2 3 5 6 9 10 14 15 10 6 3 1"<<endl;
}
if(n == 5)
{
cout<<"1 2 4 7 11 16 17 11 12 17 18 12 7 8 12 13 18 19 13 8 4 5 8 9 13 14 19 20 14 9 5 2 3 5 6 9 10 14 15 20 21 15 10 6 3 1"<<endl;
}
if(n == 6)
{
cout<<"1 2 4 7 11 16 22 23 16 17 23 24 17 11 12 17 18 24 25 18 12 7 8 12 13 18 19 25 26 19 13 8 4 5 8 9 13 14 19 20 26 27 20 14 9 5 2 3 5 6 9 10 14 15 20 21 27 28 21 15 10 6 3 1"<<endl;
}
if(n == 7)
{
cout<<"1 2 4 7 11 16 22 29 30 22 23 30 31 23 16 17 23 24 31 32 24 17 11 12 17 18 24 25 32 33 25 18 12 7 8 12 13 18 19 25 26 33 34 26 19 13 8 4 5 8 9 13 14 19 20 26 27 34 35 27 20 14 9 5 2 3 5 6 9 10 14 15 20 21 27 28 35 36 28 21 15 10 6 3 1"<<endl;
}
}
题解思路:本题数据仅为1-7,所以选择直接输出,也可采用dfs的欧拉回路进行,但比较麻烦。
M. 智乃的牛题
题目:https://ac.nowcoder.com/acm/contest/95335/M
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main() {
string a="cdenoorw";
string b;
getline(cin,b);
sort(b.begin(),b.end());
if(a==b)cout << "happy new year";
else cout << "I AK IOI";
}
题解思路:题目要求输入的字母是否能拼成nowcoder那么将输入的字符串进行排序然后和已经排序好的字符串比较,如果相同则能否则不能。