• AtCoder Beginner Contest 190


    签到场……

    ABC

    签到

    D

    设等差数列位[s+1,...,s+t],则和为t(2s+t+1)/2=n,也就是t(2s+t+1)=2n,枚举2n的因子t,判断(2n)/t是否为奇数即可,记得每次+2(因为[-i,...,i]=0)

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    ll n;
    int ans;
    void solve(ll x)
    {
        ll tmp=n/x;
        if(tmp%2)ans+=2;
    }
    int main()
    {
        cin>>n;
        n*=2;
        for(ll i=1;i*i<=n;i++)
        if(n%i==0)
        {
            solve(i);
            if(i*i<n)solve(n/i);
        }
        cout<<ans;
    }
    View Code

    E

    将每条限制视为一条边即可,然后预处理k个点到其他点的最短距离,然后状压DP即可

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e5+7;
    int n,m,k,c[20],mp[20][20],f[1<<17][17],d[N];
    vector<int>G[N];
    struct node{int u,d;};
    bool operator<(node a,node b){return a.d>b.d;}
    priority_queue<node>q;
    void dijkstra(int s)
    {
        for(int i=1;i<=n;i++)d[i]=1e9;
        d[s]=0,q.push((node){s,0});
        while(!q.empty())
        {
            node u=q.top();q.pop();
            if(d[u.u]!=u.d)continue;
            for(int i=0;i<G[u.u].size();i++)
            if(d[G[u.u][i]]>d[u.u]+1)
            d[G[u.u][i]]=d[u.u]+1,q.push((node){G[u.u][i],d[G[u.u][i]]});
        }
    }
    int main()
    {
        scanf("%d%d",&n,&m);
        for(int i=1,x,y;i<=m;i++)scanf("%d%d",&x,&y),G[x].push_back(y),G[y].push_back(x);
        scanf("%d",&k);
        for(int i=0;i<k;i++)scanf("%d",&c[i]);
        for(int i=0;i<k;i++)
        {
            dijkstra(c[i]);
            for(int j=0;j<k;j++)mp[i][j]=d[c[j]];
        }
        for(int i=0;i<k;i++)
        for(int j=0;j<k;j++)
        if(mp[i][j]==1e9){puts("-1");return 0;}
        for(int i=1;i<(1<<k);i++)for(int j=0;j<k;j++)f[i][j]=1e9;
        for(int i=0;i<k;i++)f[1<<i][i]=1;
        for(int S=0;S<(1<<k);S++)
        for(int i=0;i<k;i++)if((S>>i)&1)
        for(int j=0;j<k;j++)if(!((S>>j)&1))f[S|1<<j][j]=min(f[S|1<<j][j],f[S][i]+mp[i][j]);
        int ans=1e9;
        for(int i=0;i<k;i++)ans=min(ans,f[(1<<k)-1][i]);
        printf("%d",ans);
    }
    View Code

    F

    签到,树状数组裸题

    小号打的,45min不到AK才rank105,好在performance=2400满了,rating+=234,now rating=1627

  • 相关阅读:
    转自一位前辈的杂谈
    在vim编辑器中实现python的tab补全
    Go语言 异常panic和恢复recover用法
    go语言的cron包的简单使用
    go语言的指针
    Python 报 OpenSSL.SSL.SysCallError: (10054, 'WSAECONNRESET')
    python 之图像处理
    git 线上连接及版本控制
    vue依赖pycharm启动
    模拟django 后台管理
  • 原文地址:https://www.cnblogs.com/hfctf0210/p/14350848.html
Copyright © 2020-2023  润新知