zoukankan      html  css  js  c++  java
  • HDU 4671 Backup Plan (构造)

    题意:题目真难懂  自行理解。。。

    解题思路:其实只要考虑两列就可以了,对于第一列都某个服务器,如果它坏了的话,就会有第二列的补上,所以我们只需要构造两列,第一列就按照1-n循环排,然后对于每个服务器,如果这个服务器坏了的话,从未排全的数开排,如果等于这个服务器编号,跳一个即可。。

    解题代码:

     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <stdlib.h>
     4 int a[1000][1000];
     5 int ths[1000][1000];
     6 int temp[1000];
     7 int main()
     8 {
     9    int n , m;
    10    while(scanf("%d %d",&n,&m) != EOF)
    11    {
    12      memset(a,0,sizeof(a));
    13 
    14      memset(temp,0,sizeof(temp));
    15      memset(ths,0,sizeof(ths));
    16      int k;
    17      for(int i = 1;i <= m;i ++)
    18      {    k = (i-1)%n+1;
    19           a[i][1] = k;
    20           ths[i][a[i][1]] = 1;
    21      }
    22      for(int i = 1;i <= n;i ++)
    23      {
    24         temp[i] = (k)%n + 1 ;
    25      }
    26      for(int i = 1;i <= m; i ++)
    27      {
    28         if(temp[a[i][1]] == a[i][1])
    29             temp[a[i][1]] =  temp[a[i][1]]%n +1;
    30         a[i][2] = temp[a[i][1]];
    31         ths[i][a[i][2]] = 1;
    32         temp[a[i][1]] = temp[a[i][1]] % n + 1;
    33      }
    34     for(int i = 1;i <= m;i ++)
    35     {
    36        int be = 1;
    37        for(int j = 3; j<= n;j ++)
    38        {
    39            while(ths[i][be] == 1)
    40              be++;
    41            a[i][j] = be;
    42            ths[i][be] = 1;
    43        }
    44     }
    45     for(int i = 1;i <= m;i ++)
    46     {
    47       for(int j = 1;j <= n;j ++)
    48         printf(j == 1?"%d":" %d",a[i][j]);
    49       printf("
    ");
    50     }
    51    }
    52   return 0 ;
    53 }
    View Code
    没有梦想,何谈远方
  • 相关阅读:
    asp.net 学习连接
    学习笔记一
    windows 2008 r2 AD密码策略
    Windows Server 2008 R2之活动目录回收站
    用java 调用 .net 自定义的 Soap WEB Service
    昆明赶街时间
    Windows Server 2008 R2 AD的备份和恢复
    AD 自定义属性
    AD、IIS、asp.net
    wsgen与wsimport命令说明
  • 原文地址:https://www.cnblogs.com/zyue/p/3256498.html
Copyright © 2011-2022 走看看