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[] 继续 ...
随机推荐
- 【bzoj4293】【PA2015】Siano
如题,首先可以考虑相对大小是不变的. 那么先sort,之后每次在线段树上二分即可. #include<bits/stdc++.h> typedef long long ll; using ...
- 调用HTMLTestRunner生产的报告内容为空解决办法
开始代码如下,生成报告内容为空: #coding=utf-8 import unittest,time,reimport requestsimport jsonimport HTMLTestRunne ...
- 初探Nginx架构
参考链接:http://tengine.taobao.org/book/chapter_02.html nginx在启动后,在unix系统中会以daemon的方式在后台运行,后台进程包含一个maste ...
- redis aof文件过大问题
http://www.itnose.net/detail/6682725.html 最近新安装了一台redis,版本为redis-3.2.5 数据盘用的是固态硬盘. 之前用的是普通硬盘,redis日志 ...
- 用js实现图片连播和联级菜单的实现
<!DOCTYPE html> <html> <head> <title>图片轮播</title> <style> div{ b ...
- java基础10 单例模式之饿汉式和懒汉式单例
前言: 软件行业中有23中设计模式 单例模式 模版模式 装饰者模式 观察者模式 工厂模式 ........... 单例模式 1. 单例模式包括 1.1 饿汉式单例 1.2 ...
- netty 基础知识
http://my.oschina.net/bieber/blog/406799 线程模型 http://hongweiyi.com/2014/01/netty-4-x-thread-model/ h ...
- ubuntu下让进程在后台运行
(1)输入命令: nohup 你的shell命令 & (2)回车,使终端回到shell命令行: (3)使用第二第三条,完全屏蔽掉信号 用disown -h jobspec来使某个作业忽略HUP ...
- CodeForces 805E Ice cream coloring
直觉,构造. 画了几个样例,发现可以随便构造......先构造根节点的完全图,每个点置为不同的颜色,然后构造儿子节点的完全图...... #include <cstdio> #includ ...
- Python之路【第三篇】:文件操作
一.文件操作步骤 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 歌名:<大火> 演唱:李佳薇 作词:姚若龙 作曲:马奕强 歌词: 有座巨大的停了的时钟 倾倒在赶 ...