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

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

负载是否平衡只与前两列有关,剩下的只要与前两列不重复就随便放。

第一列我们按1-n这样循环放,第二列每次找个数最少的那个服务器放。

#include 
#include
#include
using namespace std;const int MAXN = 110;int N, M;int mat[MAXN][MAXN];int cnt[MAXN];int ori[MAXN];bool vis[MAXN];void show(){ for ( int i = 1; i <= M; ++i ) { for ( int j = 1; j <= N; ++j ) { if ( j != 1 ) putchar(' '); printf( "%d", mat[i][j] ); } puts(""); } //puts("========="); return;}void FangHang( int *a ){ memset( vis, false, sizeof(vis) ); vis[ a[1] ] = true; vis[ a[2] ] = true; for ( int i = 3; i <= N; ++i ) { for ( int j = 1; j <= N; ++j ) if ( !vis[j] ) { a[i] = j; vis[j] = true; break; } } return;}int GetMin( int now ){ int minn = 1 << 30; int ansi; for ( int i = 1; i <= N; ++i ) { if ( i == now ) continue; if ( cnt[i] < minn ) { minn = cnt[i]; ansi = i; } } return ansi;}void solved(){ memset( cnt, 0, sizeof(cnt) ); for ( int i = 1; i <= M; ++i ) ++cnt[ mat[i][1] ]; int fang = 0; int cur = 1; for ( int i = 1; i <= N; ++i ) ori[i] = cnt[i]; while ( fang < M ) { int minn; int j = 1; while ( j <= M ) { minn = GetMin(cur); for ( ; j <= M; ++j ) { if ( mat[j][1] == cur && mat[j][2] == -1 ) { mat[j][2] = minn; ++cnt[ minn ]; ++fang; break; } } } for ( int i = 1; i <= N; ++i ) cnt[i] = ori[i]; ++cur; } for ( int i = 1; i <= M; ++i ) { FangHang( mat[i] ); } return;}int main(){ while ( scanf( "%d%d", &N, &M ) == 2 ) { memset( mat, -1, sizeof(mat) ); int i = 1, j = 1; while ( i <= M ) { mat[i][1] = j; ++i, ++j; if ( j > N ) j = 1; } solved(); show(); } return 0;}

 

转载于:https://www.cnblogs.com/GBRgbr/p/3260924.html

你可能感兴趣的文章
驱动的本质
查看>>
Swift的高级分享 - Swift中的逻辑控制器
查看>>
https通讯流程
查看>>
Swagger简单介绍
查看>>
C# 连接SQLServer数据库自动生成model类代码
查看>>
关于数据库分布式架构的一些想法。
查看>>
大白话讲解 BitSet
查看>>
sql语句中where与having的区别
查看>>
Python数据分析入门案例
查看>>
0x7fffffff的意思
查看>>
Java的值传递和引用传递
查看>>
HTML5的服务器EventSource(server-sent event)发送事件
查看>>
vue-devtools 获取到 vuex store 和 Vue 实例的?
查看>>
Linux 中【./】和【/】和【.】之间有什么区别?
查看>>
Ubuntu sudo 出现 is not in the sudoers file解决方案
查看>>
内存地址对齐
查看>>
看门狗 (监控芯片)
查看>>
#ifndef #define #endif
查看>>
css背景样式
查看>>
JavaScript介绍
查看>>