当前位置: 首页 > news >正文

周赛6(28)

天梯座位模拟

 

一开始用最原始最复杂的方法模拟了一个小时才做完 :  

#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<cmath>
#include <bits/stdc++.h>
#include<algorithm>

using namespace std;


int main()
{

  int a[200][20][20]={0};
  int n;
  cin>>n;
  int team[200];
  for(int i=0;i<n;i++)
      cin>>team[i];
int n3=1;

      //printf("aaa\n");
            for(int i=0;i<n;i++)
 {
     for(int j=0;j<team[i];j++)
     {
         for(int k=0;k<10;k++)
            a[i][j][k]=1;
     }

 }


 int max1=*max_element(team,team+n);
           //cout<<max1<<endl;
 int c=0;
 
 for(int i=0;i<max1;i++)
 {
     for(int j=0;j<10;j++)
     {
         for(int k=0;k<n;k++)
            if(a[k][i][j]==1) a[k][i][j]=++c;
     }
 }


int p=max_element(team,team+n)-team; //cout<<p<<endl;
  team[p]=0;
  int max2=*max_element(team,team+n-1);
  team[p]=max1;
   int x=max1-max2;
//cout<<x<<endl;
int n1;
if(x>1) n1=0;
else  n1=1;


for(int i=x;i>0;i--)
{
    for(int k=0;k<10;k++)
    {
a[p][max1-i][k]+=n1;n1++;}
}
 int case1=1;


   for(int i=0;i<n;i++)
 {   cout<<'#'<<case1++<<endl;
     for(int j=0;j<team[i];j++)
     {     int first=1;
         for(int k=0;k<10;k++)
            if(first){cout<<a[i][j][k];first=0;}else {cout<<' '<<a[i][j][k];}
            if(j!=team[i]-1||i!=n-1)cout<<endl;
     }

     }
return 0;
}
View Code

 

现在十五分钟

#include<cstdio>
#include<map>
#include<set>
#include<vector>
#include<iostream>
#include<string>
#include<cstring>
using namespace std;

struct school
{
   vector<int>a;
   int num;
    int f;
} s[105];


int main()
{

     int sum=0;
    int n;cin>>n;
    for(int i=1;i<=n;i++)
    {
       int x;cin>>x;
       s[i].num+=10*x;sum+=10*x;
        s[i].f=1;
    }
    int d=1;int len=1;
    while(sum--)
    {

        for(int i=1;i<=n;i++)
        {
            if(s[i].a.size()!=s[i].num)
            {
                s[i].a.push_back(d);if(len==n)d+=2;else d++;
            }

            if(s[i].a.size()==s[i].num&&s[i].f==1){len++;s[i].f=0;}

        }


    }

    int case1=1;
    for(int i=1;i<=n;i++)
    {
        printf("#%d\n",case1++);
           int first=1;
        for(int j=0;j<s[i].a.size();j++)
        {

            if(first){first=0;printf("%d",s[i].a[j]);}
            else printf(" %d",s[i].a[j]);
            if((j+1)%10==0){first=1;cout<<endl;}



        }



    }



    return 0;
}
View Code

 


 

小字辈

用的是数组模拟 

只是骗了一点分数  然后超时了  应该用向量的  这样可以说不定就过了

#include <bits/stdc++.h>


using namespace std;



int main()
{

int n;
cin>>n;
int b[100000];
int a[100][100];int zu;
for(int i=1;i<=n;i++)
{
    cin>>b[i];if(b[i]==-1) zu=i;

}

int left=n-1;


a[1][1]=zu;int n1=1;int c;
int i;
for(i=1;left>0;i++)
{    //cout<<n1<<endl<<endl;
   // for(int k=1;k<=n1;k++)
    // printf("%d ",a[i][k]);
    //cout<<endl;c=0;
    c=0;
     for(int k=1;k<=n1;k++)
     {


     for(int j=1;j<=n;j++)
        {

            if(b[j]==a[i][k]){a[i+1][++c]=j;left--;if(left==0)break;}

        }
     }
      n1=c;

}


int first=1;
printf("%d\n",i);
for(int j=1;j<=n1;j++)
   {
       if(first) {first=0;printf("%d",a[i][j]);}
       else printf(" %d",a[i][j]);

   }






 return 0;
}
View Code

 

DFS  注意  vector<int>level(n+1)  是先开下标到n+1   不然后面直接调用 level[x]会越界  因为没有push_back进来   开一个数组同样可行  要是数组开到全局 每次得清零  要是开到里面  会造成不必要的内存浪费  还是vector好

#include<iostream>
#include<vector>
using namespace std;
struct TNode
{
    int father;
    vector<int>child;
}List[100000];
int maxb = 1;
void dfs(vector<int>&l, int b, int s)
{
    if (!(List[s].child.size()))
        return;
    for (int i = 0; i < List[s].child.size(); i++)
    {
        l[List[s].child[i]] = b;
        if (b > maxb)
            maxb = b;
        dfs(l, b + 1, List[s].child[i]);
    }
    return;
}
int main()
{
    int n;
    cin >> n;
    int root;
    vector<int>level(n + 1);
    for (int i = 1; i <= n; i++)
    {
        cin >> List[i].father;
        if (List[i].father == -1)//万恶之源!!!!!!!!!
        {
            root = i;
            continue;
        }
        List[List[i].father].child.push_back(i);
    }
    level[root] = 1;
    dfs(level, 2, root);
    int flag = 1;
    cout << maxb << endl;
    for (int i = 1; i <= n; i++)
    {
        if (level[i] == maxb)
        {
            if (flag)
            {
                cout << i;
                flag = 0;
            }
            else
                cout << " " << i;
        }
    }
    return 0;
}
View Code

 

BFS(还不会) BFS的内存消耗比DFS小很多

#include<iostream>
#include<vector>
#include<deque>
using namespace std;
struct TNode
{
    int father;
    vector<int>child;
}List[100000];
int maxb = 1;
void cxbl(vector<int>&l, int s)
{
    deque<int>dl;
    dl.push_back(s);
    while (dl.size())
    {
        int a = dl.front();
        dl.pop_front();
        for (int i = 0; i < List[a].child.size(); i++)
        {
            l[List[a].child[i]] = l[a] + 1;
            if (l[a] + 1 > maxb)
                maxb = l[a] + 1;
            dl.push_back(List[a].child[i]);
        }
    }
    return;
}
int main()
{
    int n;
    cin >> n;
    int root;
    vector<int>level(n + 1);
    for (int i = 1; i <= n; i++)
    {
        cin >> List[i].father;
        if (List[i].father == -1)//万恶之源!!!!!!!!!
        {
            root = i;
            continue;
        }
        List[List[i].father].child.push_back(i);
    }
    level[root] = 1;
    cxbl(level, root);
    int flag = 1;
    cout << maxb << endl;
    for (int i = 1; i <= n; i++)
    {
        if (level[i] == maxb)
        {
            if (flag)
            {
                cout << i;
                flag = 0;
            }
            else
                cout << " " << i;
        }
    }
    return 0;
}
View Code

 

转载于:https://www.cnblogs.com/bxd123/p/10173461.html

相关文章:

  • 软件架构师成长之路
  • Django之一个基于多表的图书管理系统
  • 大学排名爬取 + 绘制树状图 + 绘制圆饼图
  • 一封支付宝老员工的离职信
  • spark的广播变量
  • regsvr32.exe使用详解
  • openwrt下定义软件包的依赖关系类型
  • 找不到IIS Out-Of-Process Pooled Applications
  • 注册表:DWORD
  • 如何提取hyper-v的驱动程序
  • js base64 转成图片上传
  • 超像素、语义分割、实例分割、全景分割 傻傻分不清?
  • webpack压缩图片之项目资源优化
  • 内存释放
  • 我的译作
  • Akka系列(七):Actor持久化之Akka persistence
  • Android Studio:GIT提交项目到远程仓库
  • Hibernate【inverse和cascade属性】知识要点
  • Javascripit类型转换比较那点事儿,双等号(==)
  • Java程序员幽默爆笑锦集
  • Laravel核心解读--Facades
  • React-redux的原理以及使用
  • Redux系列x:源码分析
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • 工作中总结前端开发流程--vue项目
  • 前端
  • 前端面试总结(at, md)
  • 一道闭包题引发的思考
  • 原生Ajax
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 带你开发类似Pokemon Go的AR游戏
  • #define,static,const,三种常量的区别
  • (30)数组元素和与数字和的绝对差
  • (笔试题)合法字符串
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (九)c52学习之旅-定时器
  • (强烈推荐)移动端音视频从零到上手(下)
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (四)鸿鹄云架构一服务注册中心
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • .Net 4.0并行库实用性演练
  • .NET Core中Emit的使用
  • .NET delegate 委托 、 Event 事件
  • .NET 常见的偏门问题
  • /bin、/sbin、/usr/bin、/usr/sbin
  • /usr/bin/env: node: No such file or directory
  • @Documented注解的作用
  • [ C++ ] STL_list 使用及其模拟实现
  • [AIGC] Nacos:一个简单 yet powerful 的配置中心和服务注册中心
  • [AIGC] 开源流程引擎哪个好,如何选型?
  • [Angularjs]asp.net mvc+angularjs+web api单页应用之CRUD操作
  • [C#]C# OpenVINO部署yolov8图像分类模型
  • [CF703D]Mishka and Interesting sum/[BZOJ5476]位运算