HDU 4671 Backup Plan 构造
负载是否平衡只与前两列有关,剩下的只要与前两列不重复就随便放。
第一列我们按1-n这样循环放,第二列每次找个数最少的那个服务器放。
#include <cstdio>
#include <cstring>
#include <cstdlib> using namespace std; const int MAXN = ; int N, M;
int mat[MAXN][MAXN];
int cnt[MAXN];
int ori[MAXN];
bool vis[MAXN]; void show()
{
for ( int i = ; i <= M; ++i )
{
for ( int j = ; j <= N; ++j )
{
if ( j != ) putchar(' ');
printf( "%d", mat[i][j] );
}
puts("");
}
//puts("=========");
return;
} void FangHang( int *a )
{
memset( vis, false, sizeof(vis) );
vis[ a[] ] = true;
vis[ a[] ] = true; for ( int i = ; i <= N; ++i )
{
for ( int j = ; j <= N; ++j )
if ( !vis[j] )
{
a[i] = j;
vis[j] = true;
break;
}
} return;
} int GetMin( int now )
{
int minn = << ;
int ansi;
for ( int i = ; i <= N; ++i )
{
if ( i == now ) continue;
if ( cnt[i] < minn )
{
minn = cnt[i];
ansi = i;
}
}
return ansi;
} void solved()
{
memset( cnt, , sizeof(cnt) );
for ( int i = ; i <= M; ++i )
++cnt[ mat[i][] ]; int fang = ;
int cur = ;
for ( int i = ; i <= N; ++i ) ori[i] = cnt[i];
while ( fang < M )
{
int minn;
int j = ;
while ( j <= M )
{
minn = GetMin(cur);
for ( ; j <= M; ++j )
{
if ( mat[j][] == cur && mat[j][] == - )
{
mat[j][] = minn;
++cnt[ minn ];
++fang;
break;
}
}
}
for ( int i = ; i <= N; ++i ) cnt[i] = ori[i];
++cur;
} for ( int i = ; i <= M; ++i )
{
FangHang( mat[i] );
} return;
} int main()
{
while ( scanf( "%d%d", &N, &M ) == )
{
memset( mat, -, sizeof(mat) );
int i = , j = ;
while ( i <= M )
{
mat[i][] = j;
++i, ++j;
if ( j > N ) j = ;
}
solved();
show();
}
return ;
}
HDU 4671 Backup Plan 构造的更多相关文章
- HDU 4671 Backup Plan (2013多校7 1006题 构造)
Backup Plan Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total ...
- hdu 4671 Backup Plan(签到题)
错成那样,还以为是卡时间卡精度的变态题,结果就那么ac了= = 悔死我了 题意就不概述了,只要处理前两列即可.其中第一列顺序直接扫一遍,第二列要先处理较少的那几种.我是接着第一列用 head[] 继续 ...
- hdu4671 Backup Plan ——构造题
link:http://acm.hdu.edu.cn/showproblem.php?pid=4671 其实是不难的那种构造题,先排第一列,第二列从后往前选. #include <iostrea ...
- HDU-4671 Backup Plan 构造解
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4671 假设是3 m,首先按照第一列按照1 2 3 1 2 3 1...排下去,然后个数就是一个 (m/ ...
- Create maintenance backup plan in SQL Server 2008 R2 using the wizard
You will need to identify how you want your maintenance plan to be setup. In this example the mainte ...
- HDU 5573 Binary Tree 构造
Binary Tree 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5573 Description The Old Frog King lives ...
- hdu 5015 233 Matrix(构造矩阵)
http://acm.hdu.edu.cn/showproblem.php?pid=5015 由于是个二维的递推式,当时没有想到能够这样构造矩阵.从列上看,当前这一列都是由前一列递推得到.依据这一点来 ...
- HDU 5813 Elegant Construction 构造
Elegant Construction 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5813 Description Being an ACMer ...
- HDU 3080 The plan of city rebuild(prim和kruskal)
The plan of city rebuild Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java ...
随机推荐
- Java 字符串转码工具类
StringConvertUtils.java package javax.utils; /** * 字符串转码工具类 * * @author Logan * @createDate 2019-04- ...
- Spring转换编码utf-8方式
方式一:修改Spring配置文件(建议使用) <mvc:annotation-driven> <mvc:message-converters register-defaults=&q ...
- Media所有参数汇总
Media所有参数汇总 我们最常需要用到的媒体查询器的三个特性,大于,等于,小于的写法.媒体查询器的全部功能肯定不止这三个功能,下面是我总结的它的一些参数用法解释: width:浏览器可视宽度. he ...
- System.IO 二
接着上篇的来 System.IO FileSystemWatcher 指向这个签名的方法 可以监听目录发生了什么事件 例如: static void Main(string[] args) ...
- ASP.NET中刷新分页
1,第一次全部把数据加载到内存中,然后再做分页,性能差,不推荐. 2,GridView自带分页 3,AspNetPager分页控件 这个是第三分控件需要下载,很好用 4,自己写分页 前三种就不介绍如 ...
- 8、SpringBoot+Mybatis整合------参数取值方式
前言: 我们知道,在mybatis中,参数取值方式有两种: #{ } 和 ${ } 下面,我们来探讨下#{ }与${ }不同. 一.#{ } 例: select * from student wher ...
- 使用Hbuild打包APP
前端开发APP,从HBuilder开始~ 内容简介 介绍目前前端人员开发app的几种方法,具体介绍hbuilder开发app,一扇赞新的大门~ 无所不能的js 最开始js仅仅局限于网页上一些效果, ...
- C++使用GDI+实现图片格式转换
主要是我在设置壁纸时遇到的个小问题,因为设置壁纸只能是bmp格式的图片,不可能我喜欢的壁纸就都是bmp格式的,就想怎么转换一下图片的格式,于是就在百度搜怎么弄,搜到了可行方法,却没有实现代码,有些看起 ...
- LeetCode207 课程表
问题:课程表 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] 给定 ...
- SpringCloud微服务基础 Eureka、Feign、Ribbon、Zuul、Hystrix、配置中心的基础使用
1.单点系统架构 传统项目架构 传统项目分为三层架构,将业务逻辑层.数据库访问层.控制层放入在一个项目中. 优点:适合于个人或者小团队开发,不适合大团队开发. 分布式项目架构 根据业务需求进行拆分成N ...