abc262_a

题目翻译

问第 $Y$ 年后(包括第 $Y$ 年)最近一次世界杯在什么时候。

题目思路

世界杯举办的年份 $\bmod 4$ 为 $2$。

AC 代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a;
    cin>>a;
    cout<<a+(4-(a-2)%4)%4<<endl;
    return 0;
}

abc262_b

题目翻译

无向图三元环计数。

题目思路

$n=100$,$n^3$ 枚举可过。

可以用邻接矩阵。

AC 代码

#include<bits/stdc++.h>
using namespace std;
bool b[105][105];
int main()
{
    int n,m,ans=0;
    cin>>n>>m;
    for(int i=1;i<=m;i++)
    {
        int u,v;
        cin>>u>>v;
        b[u][v]=b[v][u]=1;
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=i+1;j<=n;j++)
        {
            for(int k=j+1;k<=n;k++)
            {
                if(b[i][j]==1&&b[j][k]==1&&b[k][i]==1)
                {
                    ans++;
                }
            }
        }
    }
    cout<<ans<<endl;
    return 0;
}

abc262_c

题目翻译

问有多少两元组 $(i,j)$ 满足:

  • $1\leq i<j\leq n$。
  • $\min(a_i,a_j)=i$
  • $\max(a_i,a_j)=j$

题目思路

由题意可知,只有以下两种情况:

$a_i=i,a_j=j$

$a_i=j,a_j=i$

对于第一种,数一下自己下标为自己的个数,然后组合一下 $C_x^2$,$x$ 是自己下标为自己个数。

对于第二种,$j$ 可以用 $a_i$ 表示,就是 $a_{a_i}=i$ 的个数。

AC 代码

#include<bits/stdc++.h>
using namespace std;
int a[500020];
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    long long ans=0,cnt=0;
    for(int i=1;i<=n;i++)
    {
        int j=a[i];
        if(a[j]==i&&i!=j)
        {
            ans++;
        }
        if(a[i]==i)
        {
            cnt++;
        }
    }
    cout<<1LL*ans/2+1LL*cnt*(cnt-1)/2<<endl;
    return 0;
}
最后修改:2023 年 04 月 20 日
v我50吃疯狂星期四