• Educational Codeforces Round 10


    652A - Gabriel and Caterpillar    20171128

    按题意模拟即可

    #include<stdlib.h>
    #include<stdio.h>
    #include<math.h>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int h1,h2,a,b,ans=1;
    int main()
    {
        scanf("%d%d%d%d",&h1,&h2,&a,&b);
        if(h1+8*a>=h2)return printf("0
    "),0;
        if(a<=b)return printf("-1
    "),0;
        h1+=8*a-12*b;
        while(true)
          {
          if(h1+12*a>=h2)return printf("%d
    ",ans),0;
          h1+=12*(a-b),ans++;
          }
    }
    View Code

    652B - z-sort    20171128

    排序之后把大的数字放偶数位即可

    #include<stdlib.h>
    #include<stdio.h>
    #include<math.h>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int n,a[1001],ans[1001];
    int main()
    {
        scanf("%d",&n);int N=n;
        for(int i=1;i<=n;i++)
          scanf("%d",&a[i]);
        sort(a+1,a+n+1);
        for(int i=1;i<=n;i+=2)ans[i]=a[i+1>>1];
        for(int i=N-(N&1);i>=2;i-=2)ans[i]=a[n--];
        for(int i=1;i<=N;i++)
          printf("%d%c",ans[i],i==N?'
    ':' ');
        return 0;
    }
    View Code

    652C - Foe Pairs    20171128

    对每个数记录所有和他组成Foe Pair的数字位置即可

    #include<stdlib.h>
    #include<stdio.h>
    #include<math.h>
    #define N 300001
    #include<vector> 
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    #define LL long long
    #define MOD 1000000007
    LL n,m,a,b,ans,p[N],pos[N];
    vector<LL>f[N];
    int main()
    {
        scanf("%I64d%I64d",&n,&m);
        for(LL i=1;i<=n;i++)
          scanf("%I64d",&p[i]),pos[p[i]]=i;
        for(LL i=1;i<=m;i++)
          {
          scanf("%I64d%I64d",&a,&b);
          if(pos[a]>pos[b])
            swap(a,b);
          f[pos[a]].push_back(pos[b]-1);
          }
        LL _=n;
        for(LL i=n;i>=1;i--)
          {
          for(LL j=0;j<f[i].size();j++)
            _=min(_,f[i][j]);
          ans+=_-i+1;
          }
        printf("%I64d
    ",ans);
        return 0;
    }
    View Code

    652D - Nested Segments    20190312

    离散化后用树状数组处理即可

    #include<bits/stdc++.h>
    using namespace std;
    #define N 200001
    int n,l[N],r[N],a[N],f[N],t[N];
    map<int,int>mp;
    int lowbit(int x){return x&(-x);}
    bool cmpl(int x,int y){return l[x]<l[y];}
    bool cmpr(int x,int y){return r[x]<r[y];}
    void change(int x,int c){while(x<N)t[x]+=c,x+=lowbit(x);}
    int ask(int x){int res=0;while(x)res+=t[x],x-=lowbit(x);return res;}
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
          scanf("%d%d",&l[i],&r[i]),a[i]=i;
        sort(a+1,a+n+1,cmpr);
        for(int i=1;i<=n;i++)
          mp[r[a[i]]]=i;
        sort(a+1,a+n+1,cmpl);
        for(int i=1;i<=n;i++)
          change(i,1);
        for(int i=1;i<=n;i++)
          change(mp[r[a[i]]],-1),f[a[i]]=ask(mp[r[a[i]]]);
        for(int i=1;i<=n;i++)printf("%d
    ",f[i]);
    }
    View Code

    652E - Pursuit For Artifacts    20190402

    缩点后深搜一次即可,注意细节处理

    #include<bits/stdc++.h>
    using namespace std;
    #define N 300001
    #define mp make_pair
    stack<int>s,t;
    vector<pair<int,int> >d[N],d2[N];
    int n,m,u,v,z,cnt,dcnt,f[N],dfn[N],low[N],flg[N];
    void dfs(int cur,int pre)
    {
        s.push(cur);
        low[cur]=dfn[cur]=++dcnt;
        for(auto nxt:d[cur])if(nxt.first!=pre)
          {
          if(!dfn[nxt.first])dfs(nxt.first,cur);
          low[cur]=min(low[cur],low[nxt.first]);
          }
        if(dfn[cur]==low[cur])
          {
          cnt++;
          while(s.top()!=cur)
            f[s.top()]=cnt,t.push(s.top()),s.pop();
          f[s.top()]=cnt,t.push(s.top()),s.pop();
          while(!t.empty())
            {
            int x=t.top();t.pop();
            for(auto y:d[x])
              if(f[x]==f[y.first])
                flg[cnt]|=y.second;
            }
          }
    }
    void dfs2(int cur,int pre)
    {
        flg[cur]|=flg[pre];
        for(auto nxt:d2[cur])
          if(nxt.first!=pre)
            flg[nxt.first]|=nxt.second,
            dfs2(nxt.first,cur);
    }
    int main()
    {
        scanf("%d%d",&n,&m);
        for(int i=1;i<=m;i++)
          {
          scanf("%d%d%d",&u,&v,&z);
          d[u].push_back(mp(v,z));
          d[v].push_back(mp(u,z));
          }
        for(int i=1;i<=n;i++)
          sort(d[i].begin(),d[i].end());
        for(int i=1;i<=n;i++)
          if(!dfn[i])dfs(i,0);
        for(int i=1;i<=n;i++)
          for(auto j:d[i])if(f[i]!=f[j.first])
            d2[f[i]].push_back(mp(f[j.first],j.second));
        scanf("%d%d",&u,&v);
        dfs2(f[u],0);
        printf("%s
    ",flg[f[v]]?"YES":"NO");
        return 0;
    }
    View Code

    652F - Ants on a Circle    20190403

    [Educational Round 10][Codeforces 652F. Ants on a Circle]

  • 相关阅读:
    PC上图标显示异常 白色框框处理方案
    判断Javascript变量是否为空 undefined 或者null(附样例)
    MySQL双版本共存解决方案
    跨境电商进口业务的通关模式
    史上最完整跨境电商投资分析报告!
    Fastcgi_Finish_Request 提高页面响应速度
    浏览器工作原理
    thinkphp 命名规范
    git diff ^M的消除
    git简明教程
  • 原文地址:https://www.cnblogs.com/DeaphetS/p/10648254.html
Copyright © 2020-2023  润新知