zoukankan      html  css  js  c++  java
  • Codeforces Round #395 (Div. 2)(未完)

    2.2.2017 9:35~11:35


    A - Taymyr is calling you

    直接模拟

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <cmath>
    using namespace std;
    typedef long long ll;
    const int N=1e4+5;
    inline int read(){
        char c=getchar();int x=0,f=1;
        while(c<'0'||c>'9'){if(c=='-')f=-1; c=getchar();}
        while(c>='0'&&c<='9'){x=x*10+c-'0'; c=getchar();}
        return x*f;
    }
    int n,m,z,ans;
    int vis[N];
    int main(int argc, const char * argv[]) {
        n=read();m=read();z=read();
        for(int i=n;i<=z;i+=n) vis[i]=1;
        for(int i=m;i<=z;i+=m) ans+=vis[i];
        printf("%d",ans);
        return 0;
    }
    View Code

    B - Timofey and cubes

    奇数位置反转,偶数位置不变

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <cmath>
    using namespace std;
    typedef long long ll;
    const int N=2e5+5;
    inline int read(){
        char c=getchar();int x=0,f=1;
        while(c<'0'||c>'9'){if(c=='-')f=-1; c=getchar();}
        while(c>='0'&&c<='9'){x=x*10+c-'0'; c=getchar();}
        return x*f;
    }
    int n,a[N];
    int main(int argc, const char * argv[]) {
        n=read();
        for(int i=1;i<=n;i++) a[i]=read();
        for(int i=1;i<=n/2;i++) if(i&1) swap(a[i],a[n-i+1]);
        for(int i=1;i<=n;i++) printf("%d ",a[i]);
        return 0;
    }
    View Code

    C - Timofey and a tree

    题意:选一个根使得所有子树同色(每个子树中节点同色 不同子树可以不同色)

    比赛时先打了个傻逼树形DP发现不对  然后就用对于一个点i它的子树用树形DP,它的上面的树用DFS序+线段树/ST表询问颜色相同......反正A掉了

    //
    //  main.cpp
    //  C
    //
    //  Created by Candy on 2017/2/2.
    //  Copyright © 2017年 Candy. All rights reserved.
    //
    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <cmath>
    using namespace std;
    #define mid ((l+r)>>1)
    #define lson x<<1,l,mid
    #define rson x<<1|1,mid+1,r
    #define lc x<<1
    #define rc x<<1|1
    typedef long long ll;
    const int N=2e5+5;
    inline int read(){
        char c=getchar();int x=0,f=1;
        while(c<'0'||c>'9'){if(c=='-')f=-1; c=getchar();}
        while(c>='0'&&c<='9'){x=x*10+c-'0'; c=getchar();}
        return x*f;
    }
    int n,u,v,c[N],a[N];
    struct edge{
        int v,ne;
    }e[N<<1];
    int h[N],cnt=0;
    inline void ins(int u,int v){
        cnt++;
        e[cnt].v=v;e[cnt].ne=h[u];h[u]=cnt;
        cnt++;
        e[cnt].v=u;e[cnt].ne=h[v];h[v]=cnt;
    }
    struct node{
        int same;
    }t[N<<2];
    void build(int x,int l,int r){
        if(l==r) t[x].same=a[l];
        else{
            build(lson);
            build(rson);
            if(t[lc].same==0||t[rc].same==0||t[lc].same!=t[rc].same) t[x].same=0;
            else t[x].same=t[lc].same;
        }
    }
    int segSame(int x,int l,int r,int ql,int qr){
        if(ql>qr) return -1;
        if(t[x].same) return t[x].same;
        if(ql<=l&&r<=qr) return t[x].same;
        else{
            int same=-1;
            if(ql<=mid) same=segSame(lson,ql,qr);
            if(mid<qr){
                int _=segSame(rson,ql,qr);
                if(same==-1||same==_) same=_;
                else same=0;
            }
            return same;
        }
    }
    int d[N],L[N],R[N],dfc;
    void dfs(int u,int fa){
        L[u]=++dfc; a[dfc]=c[u];
        d[u]=c[u];
        for(int i=h[u];i;i=e[i].ne){
            int v=e[i].v;
            if(v==fa) continue;
            dfs(v,u);
            if(d[u]!=0&&d[v]!=d[u]) d[u]=0;
        }
        R[u]=dfc;
    }
    int ans;
    void dfsSol(int u,int fa){//printf("dfsSol %d %d
    ",u,fa);
        if(ans) return;
        int flag=1;
        for(int i=h[u];i;i=e[i].ne) if(e[i].v!=fa)
            if(d[e[i].v]==0) {flag=0;break;}
        if(flag){
            int s1=segSame(1,1,n,1,L[u]-1),s2=segSame(1,1,n,R[u]+1,n);
            flag=0;
            if(s1!=0&&s2!=0&&(s1==-1||s2==-1||s1==s2)) flag=1;
    //        printf("hi %d %d %d   %d %d %d
    ",u,L[u],R[u],s1,s2,flag);
            if(flag) {ans=u;return;}
        }
        
        for(int i=h[u];i;i=e[i].ne)
            if(e[i].v!=fa) dfsSol(e[i].v,u);
    }
    int main(int argc, const char * argv[]) {
        n=read();
        for(int i=1;i<=n-1;i++) u=read(),v=read(),ins(u,v);
        for(int i=1;i<=n;i++) c[i]=read();
        dfs(1,0);
        build(1,1,n);
    //    for(int i=1;i<=n;i++) printf("hi %d %d %d %d
    ",i,d[i],L[i],R[i]);
    //    for(int i=1;i<=n;i++) printf("a %d %d
    ",i,a[i]);
        dfsSol(1,0);
        if(ans) printf("YES
    %d",ans);
        else puts("NO");
        return 0;
    }
    比赛代码

    实际上可以发现如果一条边两边节点的颜色不对一定是这两个节点中的一个做根,三遍DFS就行了....好简单

    dfs

    D - Timofey and rectangles

    题意:一些不相交矩形边长都是奇数 4种颜色染色 判断可行及一种方案

    ....最后才看到洛谷群有这道题题解然后最后10s提交失败呜呜呜

    超简单 边长奇数,所以横边相邻的矩形y坐标奇偶性不同 x同理 所以按左下角奇偶性染色就行了

    //
    //  main.cpp
    //  C
    //
    //  Created by Candy on 2017/2/2.
    //  Copyright © 2017年 Candy. All rights reserved.
    //
    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <cmath>
    using namespace std;
    typedef long long ll;
    inline int read(){
        char c=getchar();int x=0,f=1;
        while(c<'0'||c>'9'){if(c=='-')f=-1; c=getchar();}
        while(c>='0'&&c<='9'){x=x*10+c-'0'; c=getchar();}
        return x*f;
    }
    int n,x,y;
    int main(int argc, const char * argv[]) {
        n=read();
        puts("YES");
        for(int i=1;i<=n;i++){
            x=read();y=read();
            x=min(x,read());y=min(y,read());
            x+=1e9;y+=1e9;
            if(x&1){
                if(y&1) puts("1");
                else puts("2");
            }else{
                if(y&1) puts("3");
                else puts("4");
            }
        }
    }
    View Code

    未完

  • 相关阅读:
    C# 开源框架(整理)
    设计模式六大原则
    注册3D组件
    asp.net mvc(模式)和三层架构(BLL、DAL、Model)的联系与区别 (转)
    MVC5中利用NOPI导出EXCLE
    C# 连接 Oracle 的几种方式
    web.config 为某个单独页面设置编码格式
    解析ASP,NET MVC 中 web.config XML文件 取出数据库类型
    SNMP4J与ObjectSNMP对比分析
    SNMP简单概述
  • 原文地址:https://www.cnblogs.com/candy99/p/6362422.html
Copyright © 2011-2022 走看看