HDU 4671 Backup Plan (2013多校7 1006题 构造)
Backup Plan
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)
Total Submission(s): 93 Accepted Submission(s): 36
Special Judge
Every time someone wants to execute queries on a certain database, he will send a request to the first server in the list. If it's dead, he will simply turn to the next one. Otherwise a working copy of the database is found, and this copy is called active.
Now, given N and M, Makomuno wants to find a permutation for each database which could assure that all servers are load-balanced. Moreover, Makomuno hopes the system will be load-balanced even if exactly one server is broken.
Note that if we call the number of active copies on i-th server Ai, then load-balanced means max∣Ai - Aj∣≤1 for any i and j in non broken servers set. We won't consider broken servers in this case.
Each test case has one line containing two integer N ( 2≤N≤100) and M ( 1≤M≤100).
1 5 4 2 3
3 5 2 4 1
In the sample test case, the active copies of these databases are on server 2,1 and 3 in normal state. A = {1,1,1,0,0}
If server 1 or 3 has broken, server 5 will take its work. In case we lost server 2, the second database will use server 4 instead. A = {1,BROKEN,1,1,0}
It's clear that in any case this system is load-balanced according to the plan in sample output.
题目意思很难懂,自己去理解吧、
就是要构造出一个m*n的矩阵
我的做法就是
1) n>=m
那么第一列就放1,2,....m
第二列放n n n n n n n n (如果n==m的情况,那么在第一列是n的时候放n-1).
其余列放没有在第一列和第二列出现的既可。
2) n < m
这种情况:
第一列的方法是1 2 3 ....n 1 2 3 ....n 1 2 3...这样循环
第二列。
对于第1列放1的行,就是n*k+1(k=0,1,2...)行,从n,n-1,n-2,...这样循环放,遇到1就跳过。
对于放2的行一样处理,遇到2跳过
对于其它数也一样。
然后其余列只有和前两列不同既可
/* **********************************************
Author : kuangbin
Created Time: 2013/8/13 13:34:52
File Name : F:\2013ACM练习\2013多校7\1006.cpp
*********************************************** */ #include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
using namespace std;
int a[][];
bool used[];
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int n,m;
while(scanf("%d%d",&n,&m) == )
{
if(n >= m)
{
for(int i = ;i <= m;i++)
{
a[i][] = i;
a[i][] = n;
if(a[i][]==n)a[i][] = n-;
memset(used,false,sizeof(used));
used[a[i][]] = used[a[i][]] = true;
int t = ;
for(int j = ;j <= n;j++)
{
while(used[t])t++;
a[i][j] = t++;
}
}
}
else
{
int t = ;
for(int i = ;i <= m;i++)
{
a[i][] = t++;
if(t > n)t = ;
}
for(int i = ;i <= n;i++)
{
if(i < n)t = n;
else t = n-;
for(int j = ;j*n+i <= m;j++)
{
a[j*n+i][] = t;
t--;
// printf("%d %d %d\n",i,j,t);
if(t == )t = n;
if(t == i)t--;
if(t==)t=n;
} }
for(int i = ;i <= m;i++)
{
memset(used,false,sizeof(used));
used[a[i][]] = used[a[i][]] = true;
int t = ;
for(int j = ;j <= n;j++)
{
while(used[t])t++;
a[i][j] = t++;
}
}
}
for(int i = ;i <= m;i++)
{
for(int j = ;j <= n;j++)
{
printf("%d",a[i][j]);
if(j < n)printf(" ");
else printf("\n");
}
}
}
return ;
}
HDU 4671 Backup Plan (2013多校7 1006题 构造)的更多相关文章
- HDU 4681 String(2013多校8 1006题 DP)
String Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Subm ...
- HDU 4691 Front compression (2013多校9 1006题 后缀数组)
Front compression Time Limit: 5000/5000 MS (Java/Others) Memory Limit: 102400/102400 K (Java/Othe ...
- HDU 4705 Y (2013多校10,1010题,简单树形DP)
Y Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submiss ...
- HDU 4704 Sum (2013多校10,1009题)
Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submi ...
- HDU 4699 Editor (2013多校10,1004题)
Editor Time Limit: 3000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Su ...
- HDU 4696 Answers (2013多校10,1001题 )
Answers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total S ...
- HDU 4678 Mine (2013多校8 1003题 博弈)
Mine Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submis ...
- HDU 4666 Hyperspace (2013多校7 1001题 最远曼哈顿距离)
Hyperspace Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
- hdu 4671 Backup Plan(签到题)
错成那样,还以为是卡时间卡精度的变态题,结果就那么ac了= = 悔死我了 题意就不概述了,只要处理前两列即可.其中第一列顺序直接扫一遍,第二列要先处理较少的那几种.我是接着第一列用 head[] 继续 ...
随机推荐
- sql server 2008 r2 产品密钥
数据中心版:PTTFM-X467G-P7RH2-3Q6CG-4DMYBDDT3B-8W62X-P9JD6-8MX7M-HWK38==================================== ...
- sicily 1240. Faulty Odometer
Description You are given a car odometer which displays the miles traveled as an integer. The odomet ...
- python的sorted函数对字典按value进行排序
场景:词频统计时候,我们往往要对频率进行排序 sorted(iterable,key,reverse),sorted一共有iterable,key,reverse这三个参数.其中iterable表示可 ...
- 修改vs17中的cordova模板
因为visual studio 2017创建的默认cordova-ios的版本自动编译带有swift语言的插件会出现异常,cordova-ios升级到4.3.1,并且配置build.json能解决问题 ...
- LNMP结合discuz的配置
一.安装discuz 配置参照LAMP结合discuz的第一部分 不要忘记了 添加hosts~!!!! ===============我是分割线.========================== ...
- POJ 3026 Borg Maze(Prim+bfs求各点间距离)
题目链接:http://poj.org/problem?id=3026 题目大意:在一个y行 x列的迷宫中,有可行走的通路空格’ ‘,不可行走的墙’#’,还有两种英文字母A和S,现在从S出发,要求用 ...
- LightOJ 1414 February 29(闰年统计+容斥原理)
题目链接:https://vjudge.net/contest/28079#problem/R 题目大意:给你分别给你两个日期(第二个日期大于等于第一个日期),闰年的2月29日称为闰日,让你求两个日期 ...
- HDU-2222
Keywords Search Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- [Linux][Ubuntu18.04.1] nginx+php+MySQL环境搭建
说在前面 今天在腾讯云的CVM服务器搭建了一下环境[主机:标准型S2,Unbuntu18.04的LST版本] 采用了nginx服务器(Nginx 静态处理性能比 Apache高3倍以上,不过apach ...
- Jmeter----连接mysql数据库及常见问题处理
jmeter要链接mysql数据库,首先得下载mysql jdbc驱动包,(注:驱动包的版本一定要与你数据库的版本匹配,驱动版本低于mysql版本有可能会导致连接失败报错) 本人的数据为5.7.18, ...