AtCoder Beginner Contest 262 题解
AtCoder Beginner Contest 262
A - World Cup
题解:循环判断即可
#include <bits/stdc++.h>
using namespace std;
void solve()
{
int n;
cin>>n;
for(int i=n;;i++)
{
if(i%4==2)
{
cout<<i<<'\n';
return;
}
}
}
int main()
{
int T=1;
while(T--) solve();
return 0^0;
}
B - Triangle (Easier)
题意: 给定
题解:观察到
#include <bits/stdc++.h>
using namespace std;
const double PI=acos(-1.0);
typedef pair<int,int> PII;
void solve()
{
int n,m;
cin>>n>>m;
map<PII,int> mp;
for(int i=0;i<m;i++)
{
int a,b;
cin>>a>>b;
mp[{a,b}]++;//模拟连边
mp[{b,a}]++;
}
int ans=0;
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
for(int k=j+1;k<=n;k++)
{
if(mp[{i,j}]&&mp[{i,k}]&&mp[{j,k}])//表示连接了
{
ans++;
}
}
}
}
cout<<ans<<'\n';
}
int main()
{
int T=1;
// cin>>T;
while(T--) solve();
return 0^0;
}
C - Min Max Pair
题意:给定
个数字,并且数字范围是 到 ,然后如果满足以下等式那么就 ++,求 的个数:
题解:这里有两种情况要考虑.
- 当
的时候,这时候另一个就是 ,这里可以发现所以的 两两之间都可以进行相应的排列组合,,比并且这里就是组合数 (就是两两组合) - 当
的时候,那么他肯定是这样的 和 这两个组合,那么就可以直接找,然后进判断.
code
#include <bits/stdc++.h>
using namespace std;
const double PI=acos(-1.0);
typedef long long ll;
void solve()
{
int n;
cin>>n;
vector<int> q(n+1);
for(int i=1;i<=n;i++) cin>>q[i];
ll ans=0;
vector<int> st(n+1,true);
for(int i=1;i<=n;i++)
{
if(q[i]!=i)
{
if(q[q[i]]==i&&st[i]&&st[q[i]])
{
ans++;//这个统计的是第二种情况,
st[i]=false;//防止重复出现
st[q[i]]=false;
}
}
}
// cout<<ans<<'\n';
ll temp=0;
for(int i=1;i<=n;i++) temp+=(q[i]==i);//第一种情况
// cout<<temp<<'\n';
ans+=(ll)(temp*(temp-1)/2);//组合数C_{n}^{2}
cout<<ans<<'\n';
}
int main()
{
int T=1;
//cin>>T;
while(T--) solve();
return 0^0;
}
D - I Hate Non-integer Number
题意:给定
个数字,对于 个数字组成的所有的非空子集,他的子集元素所组成的算数平均数是整数的子集个数有多少个? 答案对于 进行取模
题解: 显示要考虑
设
;选 这个数字 ;不选 这个数字
code
#include <bits/stdc++.h>
using namespace std;
const int N=101;
const int mod=998244353;;
ll f[N][N][N][N];
//表示的是前i个数字,选j个,在模k的情况下等于b的方案数
void solve()
{
int n;
cin>>n;
for(int i=0;i<=n;i++) f[0][0][i][0]=1;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
for(int j=0;j<=i;j++)
{
for(int k=1;k<=n;k++)
{
for(int b=0;b<=n;b++)
{
f[i+1][j+1][k][(b+x)%k]=(f[i+1][j+1][k][(b+x)%k]+f[i][j][k][b])%mod;//选这个数字
f[i+1][j][k][b]=(f[i+1][j][k][b]+f[i][j][k][b])%mod;//不选这个数字
}
}
}
}
ll ans=0;
for(int i=1;i<=n;i++) ans=(ans+f[n][i][i][0])%mod;
cout<<ans<<'\n';
}
int main()
{
int T=1;
while(T--) solve();
return 0^0;
}
本文来自博客园,作者:Meteor_Z,转载请注明原文链接:https://www.cnblogs.com/Meteor-Z/p/16546637.html
分类:
题解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!