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[] 继续 ...
随机推荐
- Linux运维常用的几个命令介绍【转】
Linux运维常用的几个命令介绍 1. 查看系统内核版本 [root@funsion geekxa]# cat /etc/issue CentOS release 6.5 (Final) Kerne ...
- CentOS中搭建Redis伪分布式集群【转】
解压redis 先到官网https://redis.io/下载redis安装包,然后在CentOS操作系统中解压该安装包: tar -zxvf redis-3.2.9.tar.gz 编译redis c ...
- Ubuntu下安装Sublime Text3
1. 下载软件 Ctrl+Alt+T 调出命令窗口执行下面命令下载安装包: sudo add-apt-repository ppa:webupd8team/sublime-text-3 2. 更新软件 ...
- 统计学习方法三:K近邻
一.什么是K近邻? K近邻是一种基本的分类和回归方法. 在分类时,对新的实例,根据其K个最近邻的训练实例的类别,通过多数表决权等方式预测其类别. 通俗的讲,找K个和其关系最近的邻居,哪个类别的邻居多, ...
- c++鼠标点点,获取坐标值,放入到txt文件中
// oj3.cpp : Defines the entry point for the console application.// #include "stdafx.h"#in ...
- nexus 安装配置
一.下载Nexus http://nexus.sonatype.org/downloads 我是用的版本是 nexus-2.11.4-01-bundle.tar.gz 每个版本的配置有些许差别. 二. ...
- SNMP AGENT函数介绍
http://wenku.baidu.com/view/6a7903a9d1f34693daef3e9f.html 一. SNMP AGENT在SNMP框架中的位置 1.1 SNMP是被广泛接受并投 ...
- sad 关于一些html5新属性还需要用https才能支持
像我昨天在搞一个录音的小东西 在本地正常录音正常播放 但是放到线上环境http环境上就出现了如上的错误 功能都不能正常使用 然后就改成https线上环境 然后就正常了 如上 大家有什么赐教的欢迎留言 ...
- centos7 开放端口号
firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --reload
- 记一次前端问题解决历程(Cannot read Property 'call' of undefined)
场景 echosong 回长沙两个多月了, 新公司的创业项目 App , 小程序, 公众号. 目前差app 没有 做完. 公众号在前端小美女同事 的主导下采用前端比较火的Vue 技术框架. 一直一来主 ...