博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 4671 Backup Plan (构造)
阅读量:5290 次
发布时间:2019-06-14

本文共 1453 字,大约阅读时间需要 4 分钟。

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

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

解题代码:

1 #include 
2 #include
3 #include
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("\n");50 }51 }52 return 0 ;53 }
View Code

 

转载于:https://www.cnblogs.com/zyue/p/3256498.html

你可能感兴趣的文章
程序员的“机械同感”
查看>>
RAP在centos上的部署
查看>>
java 8 新特性
查看>>
在16aspx.com上下了一个简单商品房销售系统源码,怎么修改它的默认登录名和密码...
查看>>
VS2015 create a C++ console application based on WinRT
查看>>
c++回调函数
查看>>
神经网络初探
查看>>
linux下Rtree的安装
查看>>
【Java】 剑指offer(53-2) 0到n-1中缺失的数字
查看>>
Delphi中ListView类的用法
查看>>
POJ 1202 Family 概率,DP,高精 难度:2
查看>>
jquery元素查找方法
查看>>
纯代码Tom
查看>>
C Looooops(poj2115+扩展欧几里德)
查看>>
Monkey测试
查看>>
二、Statement 、PreparedStatement 、CallableStatement
查看>>
selenium学习
查看>>
bzoj3110: [Zjoi2013]K大数查询 【树套树,标记永久化】
查看>>
nodejs介绍
查看>>
TCP心跳包
查看>>