Codeforces Round #784(div 4)
总结:div4相对比较简单,以至于能ak。
A. Division?
题目大意:对应分数输出等级
简单模拟
#include<iostream>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int x;
cin>>x;
if(x <= 1399) puts("Division 4");
else if(x <= 1599) puts("Division 3");
else if(x <= 1899) puts("Division 2");
else puts("Division 1");
}
return 0;
}
B. Triple
题目大意:找出在数组中出现次数超过3的数。
可以用vector简化,注意多组测试样例,不要在数据没输入完毕时break。
include <bits/stdc++.h>
using namespace std;
int main() {
int t; cin >> t;
while(t--) {
int n; cin >> n;
vector<int> cnt(n + 1, 0);
int ans = -1;
for(int i = 0; i < n; i++) {
int x; cin >> x;
if(++cnt[x] >= 3) {
ans = x;
}
}
cout << ans << endl;
}
}
C.Odd/Even Increments
题目大意:可以对奇数位或者偶数位同时加1,判断是否能让数组所有元素具有相同的奇偶性。
所有奇数位和偶数位对应的奇偶性必须相同,这样才能达到全部改掉的效果。
注意逻辑与和按位与的区别!!
// 按位与: a&b,a和b转化成二进制再进行与运算
// 逻辑与: a && b,当a、b均为true时,其结果才为true。
#include<iostream>
using namespace std;
const int N = 60;
int q[N];
int main()
{
int T;
cin>>T;
while(T--)
{
int od[2] = {0,0};
int ev[2] = {0,0};
int n;
cin>>n;
for(int i = 1;i <= n;i++)
{
cin>>q[i];
if(i&1)
{
if(q[i]&1) od[0]++;
else od[1]++;
}else
{
if(q[i] & 1) ev[0]++;
else ev[1]++;
}
}
if((od[0] && od[1]) || (ev[0] && ev[1])) puts("NO");
else puts("YES");
}
return 0;
}
D. Colorful Stamp
题目大意:给一行字符串,在上面染色,每相邻位置填BR或者RB,判断给定字符串是否合法
we must have placed RB, so it should have both the characters R and B.(即不能有一段R 或者 B)
#include<iostream>
using namespace std;
int n,t;
string s;
int main()
{
cin>>t;
while(t--)
{
cin>>n>>s;
bool flag = true;
for(int i = 0;i < s.size();i++)
{
if(s[i] != 'W')
{
int j = i;
while(s[j] == s[i] && j < s.size()) j++;
if((j == s.size() || s[j] == 'W') && (i == 0 || s[i-1] == 'W'))
{
flag = false;
break;
}
i = max(i,j-1);
}
}
if(flag)puts("YES");
else puts("NO");
}
}
E. 2-Letter Strings *
题目大意:给定n个字符串,求其中只有一位相同的字符串的对数。
统计第一位字母出现的次数cnt1,第二位出现的次数cnt2,再减去当前字符串s(两个字母都出现的次数)sum * 2,得到
#include<iostream>
#include<unordered_map>
using namespace std;
typedef long long LL;
unordered_map<char,int> mp1,mp2;
unordered_map<string,int> mp;
int n;
void solve()
{
LL res = 0;
mp1.clear();
mp2.clear();
mp.clear();
cin>>n;
for(int i = 0;i < n;i++)
{
string s;
cin>>s;
res = res + mp1[s[0]] + mp2[s[1]] - 2 * mp[s];
mp1[s[0]]++;
mp2[s[1]]++;
mp[s]++;
}
cout<<res<<endl;
}
int main()
{
int t;
cin>>t;
while(t--) solve();
return 0;
}
F. Eating Candies
题目大意:两人分别从数组两端向中间走(吃蛋糕),求两端路径总和的最长长度(吃的蛋糕最多)。
手里少的先吃(双指针)
//手里少的先吃
#include<iostream>
using namespace std;
const int N = 2e5 + 10;
int q[N];
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
for(int i = 0;i < n;i++) cin>>q[i];
int lsum = 0,rsum = 0;
int l = -1,r = n;
int res = 0;
while(l < r)
{
if(lsum <= rsum)
{
l++;
if(l == r) break;
lsum += q[l];
if(lsum == rsum) res = max(res,l +1 + n - r);
}
else
{
r--;
if(l == r) break;
rsum += q[r];
if(lsum == rsum) res = max(res,l+1+n-r);
}
}
cout<<res<<endl;
}
return 0;
}
G. Fall Down
题目大意:模拟石头下落的过程。
从下往上面模拟
#include<iostream>
using namespace std;
const int N = 60;
char g[N][N];
int n,m;
void solve()
{
cin>>n>>m;
for(int i = 0;i < n;i++) cin>>g[i];
for(int i = n-1;i >= 0;i--)
{
for(int j = 0;j < m;j++)
{
if(g[i][j] == '*')
{
int h = i;
while(g[h+1][j] == '.' && g[h+1][j] != 'o' && h + 1 < n) h++;
swap(g[i][j],g[h][j]);
}
}
}
for(int i = 0;i < n;i++)
{
for(int j = 0;j < m;j++) cout<<g[i][j];
puts("");
}
}
int main()
{
int t;
cin>>t;
while(t--) solve();
return 0;
}
H. Maximal AND
题目大意:给定一个数组,可以改变数组中的任何一个元素最多k次(任意位变成1),求数组所有元素按位与的最大值。
想要最大值,可以优先把高位变成1,如果k大于等于当前位0的个数,那么可以将该位变成1,反之跳到更低位。
#include<iostream>
#include<vector>
using namespace std;
int n,k;
void solve()
{
cin>>n>>k;
vector<int> cnt(31,0),a(n);
for(int i = 0;i < n;i++)
{
cin>>a[i];
for(int j = 30;j >= 0;--j)
if(a[i] & (1 << j))
cnt[j]++;
}
int ans = 0;
for(int i = 30;i >= 0;i--)
{
int need = n - cnt[i];
if(need <= k)
{
k -= need;
ans += (1 << i);
}
}
cout<<ans<<endl;
}
int main()
{
int t;cin>>t;
while(t--) solve();
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· Apache Tomcat RCE漏洞复现(CVE-2025-24813)