zoukankan      html  css  js  c++  java
  • 辽宁省赛——杨鲁斯卡尔专场-J

    题意:

    就是一个人走到一个城市就会记录与该城市相连的城市有多少,最后判断这些城市是否全部相连;

    样例输入

    8
    7 7 4 3 3 3 2 1
    10
    5 4 3 3 2 2 2 1 1 1
    

    样例输出

    NO
    YES
    
    解题思路:
    其实就是判断无向连通图,sum<=(t)*(t-1)/2公式,sum是边长的和,t是顶点个数。不过需要注意的有几点。1、是当输入有0的时候直接就是no
    因为肯定不可能全部连通。2.是当输入等于2的时候可能这个公式判断不了需要自己做处理。

    忘了写了打表的代码起就是用数组写的模拟过程,模拟是对的会超时,所以可以用这个打表这个代码也发上来吧,没有写注释
    #include<iostream>
    #include<stdio.h>
    #include<vector>
    #include<iterator> 
    #include<cstring>
    using namespace std;
    int pp[11005];
    int main()
    {
        int n;
        while(scanf("%d",&n)!=EOF)
        {
            memset(pp,0,sizeof(pp));
            int temp=2;
            int it,itr;
            int len= n;
            int ccc=0;
            while(temp<=len)
            {         
                      ccc++;
                cout<<temp<<",";
                int i=0,res=0;
                for(it=1;it<=n;it++)
                {
                    if(pp[it]) continue;
                    i++;
                    if(i==temp)
                    {
                               
                        len--;
                        pp[it]=1;
                        i=0;
                    }                                                
                } 
          
                for(itr=temp+1;itr<=n;itr++)
                {
                    if(!pp[itr]) 
                    {
                        temp=itr;
                        break;
                    }                                  
                }
            } 
            //cout<<ccc<<")))))"; 
           // printf("%d
    ",len);       
        }
        system("pause");
        return 0;   
    }
    View Code

    下面是AC代码



    具体代码:
    #include<iostream>
    #include<cstring>
    using namespace std;
    int num[10005];
    int main()
    {
        int t,sum,res;
        while(scanf("%d",&t)!=EOF)
        {
            sum=0;
            res=0;
            memset(num,0,sizeof(num));
            for(int i=0;i<t;i++)
            {
                cin>>num[i];
                sum+=num[i];
                if(num[i]==0)
                    res=1;
            }
            if(t==2)
            {
                if(sum==2&&res==0)
                    cout<<"YES"<<endl;
                else
                    cout<<"NO"<<endl;
            }
            else
            {
                if(sum<=(t)*(t-1)/2&&res==0)
                    cout<<"YES"<<endl;
                else
                    cout<<"NO"<<endl;
            }
        }
        system("pause");
        return 0;
    }
    View Code
  • 相关阅读:
    document.createElement在IE和Firefox下的差异
    css3:基础知识
    XMLTProcessor根据XSLT样式规则将节点转换为document对象
    Sql:查看数据库表和表结构的语句
    前端性能优化方法总结
    vue-resource 设置请求的参数以formData形式以及设置请求的过滤器
    vuex
    vue 随笔3
    vuex
    vue随笔2
  • 原文地址:https://www.cnblogs.com/baoluqi/p/3731912.html
Copyright © 2011-2022 走看看