A.时间表查询!
链接:https://ac.nowcoder.com/acm/contest/100671/A
来源:牛客网
题目描述
今天是2025年1月25日,今年的六场牛客寒假算法基础集训营中,前两场比赛已经依次于 20250121、20250123 举行;而后四场比赛将依次于 20250126、20250206、20250208、20250211 举行。
小歪想知道第 x 场比赛是否已经举行,你能帮帮他吗?
输入描述:
一个整数 x(1≦x≦6) 代表询问的场次。
输出描述:
如果第 x 场比赛已经举行,输出 YES;否则,输出 NO。
示例1
输入
1
输出
YES
说明
第一场比赛已经于2025年1月21日举行。
示例2
输入
6
输出
NO
说明
第六场比赛将于2025年2月11日举行。
代码:
#include <bits/stdc++.h>
#define ll long long
#define endl "\n"
using namespace std;
int main()
{int x;cin>>x;if(x==1||x==2) cout<<"YES";else cout<<"NO";return 0;
}
B.一起做很甜的梦!
链接:https://ac.nowcoder.com/acm/contest/100671/B
来源:牛客网
题目描述
梦境是由我们的记忆碎片重组后再次演绎的结果。对于一个拥有 n 段记忆的人,我们可以使用 1∼n 这 n 个整数来表示每一段记忆。将这 n 段记忆打乱后重新组合,就得到了一个梦。
作为牛客星球的首席梦境研究员,牛可乐在研究中发现:如果一个梦境中任意连续的 k 段记忆(其中 1<k<n)都无法完整还原出一段真实经历时(即不构成一个排列),这个梦就会特别甜美。这种恰到好处的记忆重组方式,让梦境与现实保持着微妙的距离,创造出令人陶醉的朦胧美感。
现在,牛可乐想请你帮忙设计一些这样的甜美梦境,来继续他的天才研究。
\hspace{15pt}长度为 nnn 的排列是由 1∼n 这 n 个整数、按任意顺序组成的数组,其中每个整数恰好出现一次。例如,{2,3,1,5,4} 是一个长度为 555 的排列,而 {1,2,2}\ 和 {1,3,4} 都不是排列,因为前者存在重复元素,后者包含了超出范围的数。
输入描述:
在一行上输入一个整数 n(3≦n≦2×1e5)代表记忆的段数。
输出描述:
在一行上输出 n 个整数,代表你为一个有着 n 段记忆的人设计的甜美梦境。如果存在多种可能的甜美梦境,你可以输出任意一种。系统会自动判定你的设计是否符合要求。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1
输入
4
输出
2 4 1 3
说明
在这个样例中,任意连续的 kkk 段记忆: {2,4} ; {4,1} ; {1,3} ; {2,4,1} ; {4,1,3} ; 都不构成一个排列,所以这是一个甜美的梦境。
示例2
输入
4
输出
3 1 4 2
说明
当然,梦的形状千奇百怪,我们有数不清的设计方案。
思路:
其实只要1不在2前面就行。
代码:
#include <bits/stdc++.h>
#define ll long long
#define endl "\n"
using namespace std;
int main()
{int n;cin>>n;for(int i=2;i<=n;i++) cout<<i<<" ";cout<<1;return 0;
}
C.翻之
链接:https://ac.nowcoder.com/acm/contest/100671/C
来源:牛客网
题目描述
对于给定的 n 行 m 列的矩阵,每一个元素要么是 ‘0’,要么是 ‘1’。
每一轮,你可以进行一次以下操作:
选择一行的元素,将其全部反置,即 ‘0’ 变为 ‘1’,‘1’ 变为 ‘0’。
请你帮助小歪判断,若能进行任意多轮操作(也可以不进行操作),至多能使得多少列的元素均为 1’。你只需要输出这个最大值。
输入描述:
第一行输入两个正整数 n,m(1≦n,m≦3×1e3) 代表矩阵的行数和列数。 此后 n 行,每行输入一个长度为 m 、仅由 ‘0’和 ‘1’ 构成的字符串,代表矩阵每一行中的元素。
输出描述:
输出一个整数,表示至多能使得多少列的元素均为 ‘1’。
示例1
输入
3 4 1111 1111 1111
输出
4
说明
在这个样例中,不需要进行操作,所有列的元素均为 ‘1’。
示例2
输入
3 2 01 10 11
输出
1
说明
在这个样例中,我们可以选择对第一行进行操作,使得第一行变为 "10",此时,第一列的元素均为 ‘1’。
思路:
求相同的列数的最大值即可。
代码:
#include <bits/stdc++.h>
#define ll long long
#define endl "\n"
using namespace std;
int main()
{int n,m,ans = 0,mmax=1;cin >> n >> m;vector<string> v(n + 1),t(m+1,"");for(int i = 0;i < n; i++){cin >> v[i];}for(int j = 0; j < m; j++){for(int i=0;i<n;i++){t[j]+=v[i][j];}}map<string,int>mp;for(int j=0;j<m;j++) {mp[t[j]]++;}auto it=mp.end();for(auto it=mp.begin();it!=mp.end();it++) {ans=max(ans,it->second);}
// it--;cout<<ans;/*1 0 10 1 01 0 1*/ return 0;
}