• 被教育场45


    ABC略

    C爆int,从20min一直调到70min,然后放弃,结束时改了long来了一发然后AC,,多了200++罚时很难受。1100-1800。

    D题非常简单(但是我一直在肝C。。。)

    题意:求一个具有n个顶点的图,该图有a个联通块,该图的补图有b个联通块。

    离散都学了,,然而我都睡过去了导致很懵逼,看了好久才注意到这样一个事情: 补图的联通块的个数等于原图中度数为n-1的顶点的个数加一

    然后我们很容易就能发现 a>=2&&b>=2 时是无解的。那么就只剩下3种情况。

    1.a==1&&b==1

      首先注意到 n=1,2,3这种特殊情况。剩下的只要按顺序连点就可以(i-i+1相连)。

    2.a==1&&b>1(用if-else的话后面的b我就懒得写了)

      那么我们首先先让b-1个点都是完全点(我也不知道怎么称呼,就是与其他每个点都有边),然后就不用管了。。。

    3.a>1&&b==1

      先让a-1个点独立。剩下的连起来就完事了。

    前面的是快速IO。。。

    正在努力向c++转变,,,

    package R45;
    
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.util.StringTokenizer;
    
    public class Main4 {
        static BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
        static StringTokenizer tok;
        static boolean hasNext()
        {
            while(tok==null||!tok.hasMoreTokens())
                try{
                    tok=new StringTokenizer(in.readLine());
                }
                catch(Exception e){
                    return false;
                }
            return true;
        }
        static String next()
        {
            hasNext();
            return tok.nextToken();
        }
        static long nextLong()
        {
            return Long.parseLong(next());
        }
        static int nextInt()
        {
            return Integer.parseInt(next());
        }
        static PrintWriter out=new PrintWriter(new OutputStreamWriter(System.out));
    
    
        static int n;
        static int g[][];
        public static void main(String[] args) {
            n = nextInt();
            int a = nextInt();
            int b = nextInt();
            g = new int[n+1][n+1];
            if (a>=2&&b>=2){
                out.println("NO");
                out.flush();
                return;
            }else if (a==1&&b==1){
                if (n==1){
                    out.println("YES");
                    out.println(0);
                }else if (n<=3){
                    out.println("NO");
                }else {
                    out.println("YES");
                    for(int i=2;i<=n;i++){
                        g[i-1][i]=1;
                        g[i][i-1]=1;
                    }
                    syso();
                }
            }else {
                out.println("YES");
                if (a==1){
                    for(int i=1;i<=b-1;i++){
                        for(int j=1;j<=n;j++){
                            if (i!=j) {
                                g[i][j] = 1;
                                g[j][i] = 1;
                            }
                        }
                    }
                    syso();
                }else {//b==1
                    //先挑出来a-1个单独的点,剩下的随,随意?
                    for(int i=a;i<=n;i++){
                        for(int j=a;j<=n;j++){
                            if (i!=j)
                                g[i][j]=g[j][i]=1;
                        }
                    }
                    syso();
                }
            }
            out.flush();
        }
        public static void syso(){
            for(int i=1;i<=n;i++){
                for(int j=1;j<=n;j++){
                    out.print(g[i][j]);
                }
                out.println();
            }
        }
    }
  • 相关阅读:
    C# IP地址字符串和数值转换
    Xstream序列化实体
    异步线程及同步控制
    XML序列化与反序列化(转)
    C# Webserice 代理生成工具(WSDL)
    ASP.NET(C#)图片加文字、图片水印(转)
    异步导致UI句柄增加的解决办法
    终于找到WinForm自定义控件不能拖到IDE设计器容器的办法
    C# PropertyGrid控件应用心得(转载)
    GDI_图片半透明效果示例
  • 原文地址:https://www.cnblogs.com/MXang/p/9164599.html
Copyright © 2020-2023  润新知