zoukankan      html  css  js  c++  java
  • 题解:LOJ540游戏

    题目描述

    小L计划进行n场游戏,每场游戏使用一张地图,小 L 会同时使用三辆车在该地图上完成游戏。
    小 L 的赛车有三辆,分别用大写字母 A、B、C 表示。地图是一张无向简单图(没有重边或自环),每次他会在地图中选择不同的三个点 i,j,k满足\(i<j<k\)且两两之间均有边。此时他会让 A 从i到j,B 从j到k,C从k到i,完成一场游戏。他记得有一张地图使得他恰好能完成n场不同的游戏,且这个地图顶点数不超过500,请你帮他找到这张地图。
    有时候小L会记得地图的一些特点,他会把这些告诉你以帮助你找到地图。
    也就是说,给一个正整数n,请你构造一个无向简单图使得其三元环个数为n。

    说实话这个题一看以为是什么高深的玩意,完全看不出是NOIP的难度

    做这个题的时候,各位神犇需要做的就是,把之前学的各种算法,数据结构全忘了QAQ
    蒟蒻的搜索T到飞起

    #include<algorithm>
    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<vector>
    #include<queue>
    using namespace std;
    
    #define re register
    #define ll long long
    #define gc getchar()
    inline int read()
    {
     	re int x(0),f(1);re char c(gc);
        while(c>'9'||c<'0')f=c=='-'?-1:1,c=gc;
        while(c>='0'&&c<='9')x=x*10+c-48,c=gc;
        return f*x;
    }
    
    const int N=505;
    int f[N][N],a[N],b[N],c[N],n;
    
    int main()
    {
        n=read();
        int i,tot;
        for(tot=1;n;tot++)
        {
    		for(i=1;i<tot&&i*(i-1)/2<=n;i++)
    			f[i][tot]=1;
    		n-=(i-1)*(i-2)/2;
    	}
        cout<<tot<<endl;
        for(i=1;i<tot;i++)
        {
    		for(int j=i+1;j<=tot;j++)
    			cout<<(f[i][j]|f[j][i])<<" ";
    		cout<<endl;
    	}
        return 0;
    }
    
  • 相关阅读:
    由于客观原因,暂时学习php两天,然后继续学习.net
    【任务】html编辑器在vs2003下实现
    one bug og webMatrix when create a new file
    数据统一接口?
    安全3S
    一个订单管理页面
    【总结】浪费3个月向.net继续前进
    关于在asp.net中类的继承问题
    【心得】create a data table in webMatrix is very easy!
    Java与.NET谁是未来
  • 原文地址:https://www.cnblogs.com/zijinjun/p/10695125.html
Copyright © 2011-2022 走看看