今晚ABC A-D题题解
2025-10-11 22:03:30
发布于:广东
今晚估计得上大分了 爽飞。
没什么东西的题解,自己写个乐呵。
A:
一眼题,不讲。
#include<bits/stdc++.h>
using namespace std;
int main(){
string a;
cin>>a;
for(int i = 0;i<a.size();++i){
if(i == (a.size()+1>>1)-1){
continue;
}
cout<<a[i];
}
}
B:
按照题意模拟。
#include<bits/stdc++.h>
using namespace std;
int a[109];
int d(int x){
int sum = 0;
while(x){
sum+=x%10;
x/=10;
}
return sum;
}
int main(){
int n;
cin>>n;
a[0] = 1;
for(int i = 1;i<=n;++i){
for(int j = 0;j<i;++j){
a[i]+=d(a[j]);
}
}
cout<<a[n];
}
C:
微水题
转换一下题意可得出,我们找到一种划分点的方式,使得每个集合内的边数尽可能少。
不妨将第一个点固定在集合1,然后枚举所有可行的划分,计算出最小边数,然后取最小的为答案。
#include<bits/stdc++.h>
using namespace std;
struct node{
int u,v;
};
vector<node> g;
int main(){
int n,m;
cin>>n>>m;
for(int i = 1;i<=m;++i){
int u,v;
cin>>u>>v;
g.push_back((node){u,v});
}
int ans = m;
for(int i = 2;i<(1<<n);i+=2){
int sum = 0;
for(auto &[u,v]:g){
int uu = (i>>u)&1,vv = (i>>v)&1;
if(uu == vv) sum++;
}
ans = min(ans,sum);
}
cout<<ans;
}
D:
不水题。
懒得写。
全部评论 4
题解,但是懒得写?
1周前 来自 广东
0感觉这次ABC比上次难一点
1周前 来自 浙江
06
1周前 来自 江西
0实在是好水的题解
1周前 来自 江苏
0
有帮助,赞一个