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

    今天自己模拟了一套题,只写出两道来,第三道时间到了过了几分钟才写出来,啊,太菜了。

    A. Taymyr is calling you

    水题,问你在z范围内  两个序列  n,2*n,3*n......  和 m,2*m,3*m.....有多少个是一样的。

    #include<bits/stdc++.h>
    using namespace std;
    int n,m,z;
    int main()
    {
        cin>>n>>m>>z;
        int gcd=__gcd(n,m);
        int now=n*m/gcd;
        int ans=0;
        int res=now;
        while(res<=z)
        {
            ans++;
            res+=now;
        }
        cout<<ans<<endl;
        return 0;
    }
    View Code

    B. Timofey and cubes

    题目大意:给你n个数,进行(n/2)次操作,每次操作将制定区间里的数交换,给你交换后的

    让你求原来的。

    思路:水题,奇偶讨论。

    #include<bits/stdc++.h>
    const int N=2*1e5+5;
    using namespace std;
    int a[N];
    int n;
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++) scanf("%d",&a[i]);
        int mid=n/2;
        int i=1,j=n;
        bool flag=true;
        while(i<=j)
        {
            if(flag)
            {
                int t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
            flag=!flag;
            i++,j--;
        }
        for(int i=1;i<=n;i++) printf("%d%c",a[i],i==n? '
    ':' ');
        return 0;
    }
    View Code

    C. Timofey and a tree

    题目大意:给你一颗树,每个节点都有一个颜色,让你挑选一个节点当做整棵树的根,满足所有

    子树中节点的颜色都是一样的。如果没有输出NO 否则输入YES 且输出选择的节点。

    思路:刚开始的思路是我觉得这棵树中的颜色不能超过 3 种,后来一想这种想法好智障啊,明显

    不对,后来枚举树根每个都dfs一下超时,结束后想我随便找一个点dfs找到两个相邻的颜色不同的

    点,那么这两个点中间肯定有一个要当做树根的,否则不成立。这样只要dfs两次就行了。

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e5+5;
    vector<int> e[N];
    int c[N],item1,item2,n;
    map<int,bool> mp;
    bool flag;
    void dfs1(int u,int pre)
    {
        //printf("%d
    ",u);
        if(pre!=-1 && c[u]!=c[pre])
        {
            item1=u;
            item2=pre;
            return;
        }
        for(int i=0;i<e[u].size();i++)
        {
            int to=e[u][i];
            if(to!=pre) dfs1(to,u);
            if(item1!=-1) return;
        }
    }
    void dfs(int u,int pre,int item)
    {
       // printf("%d %d %d**
    ",u,pre,item);
        if(pre!=item && pre!=-1 && c[u]!=c[pre])
        {
            flag=false;
            return;
        }
        for(int i=0;i<e[u].size();i++)
        {
            int to=e[u][i];
            if(to!=pre) dfs(to,u,item);
            if(!flag) return;
        }
    }
    int main()
    {
        cin>>n;
        for(int i=1;i<n;i++)
        {
            int f,t;
            scanf("%d%d",&f,&t);
            e[f].push_back(t);
            e[t].push_back(f);
        }
        int cnt=0;
        for(int i=1;i<=n;i++) scanf("%d",&c[i]);
        item1=-1,item2=-1;
        dfs1(1,-1);
        if(item1==-1)
        {
            puts("YES");
            puts("1");
            return 0;
        }
        flag=true;
        dfs(item1,-1,item1);
        if(flag)
        {
            puts("YES");
            printf("%d
    ",item1);
            return 0;
        }
        flag=true;
        dfs(item2,-1,item2);
        if(flag)
        {
            puts("YES");
            printf("%d
    ",item2);
            return 0;
        }
        puts("NO");
        return 0;
    }
    View Code

    D. Timofey and rectangles

    题目大意:给你n个矩形,且矩形的边长为奇数,任意两个矩形都不相交,最多相邻,现在让你给这些矩形上色,

    一种4种颜色,相邻的矩形颜色不能相等,问你有没有这样的方案,如果有则输出。

    思路:赤裸裸的脑洞题,专门碾压我这种低智商的,这题最关键的是矩形的边长是奇数,虽然我知道,但是

    我还是不会写QAQ。 

    首先,四个矩形不可能两两互相相邻,所以结论一定是YES

    然后,我们考虑矩形的左下角的顶点,如果 x 和 y 的值都为奇数,因为边长是奇数,所以这个矩形不可能和

    另一个左下角坐标都为奇数的矩形相邻。所以我们给这类矩形染色 1  。

    其他三种同理。

    #include<bits/stdc++.h>
    using namespace std;
    const int N=5*1e5+5;
    int n,vis[N],m=1e9;
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            int x1,y1,x2,y2;
            scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
            if((x1+m)%2 && (y1+m)%2) vis[i]=1;
            else if((x1+m)%2) vis[i]=2;
            else if((y1+m)%2) vis[i]=3;
            else vis[i]=4;
        }
        cout<<"YES"<<endl;
        for(int i=1;i<=n;i++) printf("%d
    ",vis[i]);
        return 0;
    }
    View Code
  • 相关阅读:
    【转载】COM 组件设计与应用(十一)—— IDispatch 及双接口的调用
    【转载】COM 组件设计与应用(十)——IDispatch 接口 for VC.NET
    网易云课堂_Linux操作系统入门(嵌入式开发零基础Ⅰ)_章节3:Linux 命令(下)
    网易云课堂_Linux操作系统入门(嵌入式开发零基础Ⅰ)_章节2:Linux 命令(上)
    网易云课堂_艾叔:零基础一站式C语言|C程序设计精讲_章节12:指针
    网易云课堂_艾叔:零基础一站式C语言|C程序设计精讲_章节8:输入与输出
    网易云课堂_艾叔:零基础一站式C语言|C程序设计精讲_章节5整型
    Vim应用
    gcc编译命令
    虚拟机使用PuTTY、SSH Secure Shell Client前的配置
  • 原文地址:https://www.cnblogs.com/CJLHY/p/7259286.html
Copyright © 2011-2022 走看看