题意:每个用户对数据库的查询请求都会首先用该数据库的服务器序列的第一个去执行任务,若第一个坏了,就由第二个执行。最多只会坏一个服务器。要求是考虑最多坏一个的情况下,所有服务器中执行用户查询的数目最大值与最小值之差不能超过1。

思路:

对于n>=m的情况,很容易能解决掉,关键是n<m就不好处理了。我的方法应该是最挫的,直接先给确定每个序列的第一个数字为1~~n的循环。第二个就每次放一个数,用贪心判断是否合法,合法就在放下一个序列的第二个数。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
int ans[][],pre[],vi[],num[],n,m;
struct Que{
int val,c;
int operator <(const Que &temp) const
{
return c>temp.c;
}
};
int Ok()
{
int i,j;
int cnt[];
int Max,Min;
for(i=;i<=n;i++)
{
memset(cnt,,sizeof(cnt));
Max=,Min=;
for(j=;j<=m;j++)
if(ans[j][]==i)
cnt[ans[j][]]++;
else
cnt[ans[j][]]++;
for(j=;j<=n;j++)
{
if(j==i) continue;
Max=max(Max,cnt[j]);
Min=min(Min,cnt[j]);
}
if(Max-Min>)
return ;
}
return ;
}
void Out2()
{
int i,j;
int x=;
int Max=;
for(i=;i<=m;i++)
ans[i][]=x%n+,x%=n,x++,num[x]++;
for(i=;i<=m;i++)
{
for(j=;j<=n;j++)
if(ans[i][]!=j)
{
ans[i][]=j;
if(Ok())
break;
ans[i][]=;
}
}
for(i=;i<=m;i++)
{
memset(vi,,sizeof(vi));
x=;
vi[ans[i][]]=vi[ans[i][]]=;
printf("%d %d",ans[i][],ans[i][]);
for(j=;j<=n-;j++)
{
while(vi[x])
x++;
printf(" %d",x);
vi[x]=;
}
printf("\n");
}
}
int main()
{
int i,j;
while(scanf("%d%d",&n,&m)!=EOF)
{
memset(num,,sizeof(num));
memset(ans,,sizeof(ans));
for(i=;i<=n;i++)
pre[i]=i;
int x;
if(n>=m)
{
for(i=;i<m;i++){
printf("%d %d",i,n);
x=;
for(j=;j<=n-;j++){
if(x==i){
printf(" %d",x+);
x+=;
}
else
printf(" %d",x++);
}
printf("\n");
}
if(m==n){
printf("%d",m);
for(i=;i<n;i++)
printf(" %d",i);
printf("\n");
}
else{
printf("%d %d",m,n);
x=;
for(i=;i<=n-;i++){
if(i==m){
printf(" %d",x+);
x+=;
}
else
printf(" %d",x++);
}
printf("\n");
}
}
else{
Out2();
}
}
return ;
}

hdu 4671 瞎搞的更多相关文章

  1. HDU 4923 Room and Moor(瞎搞题)

    瞎搞题啊.找出1 1 0 0这样的序列,然后存起来,这样的情况下最好的选择是1的个数除以这段的总和. 然后从前向后扫一遍.变扫边进行合并.每次合并.合并的是他的前驱.这样到最后从t-1找出的那条链就是 ...

  2. URAL 1203. Scientific Conference(瞎搞)

    题目链接 本来觉得这不是经典的贪心吗..果断水一次,wa了,看了看discuss,发现貌似不好水,土土的DP了一下,复杂度很高了,又T了...然后想想单调队列,二分什么的...不好往上加,直接搞了标记 ...

  3. Codeforces Gym 100610 Problem H. Horrible Truth 瞎搞

    Problem H. Horrible Truth Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/1006 ...

  4. B. Salty Fish Go! -期望题(瞎搞题)

    链接:https://www.nowcoder.com/acm/contest/104/B来源:牛客网 题意:A few days ago, WRD was playing a small game ...

  5. HDU5532 Almost Sorted Array(最长上升子序列 or 瞎搞个做差的数组)

    题目链接:点我 题意:给定一个序列,询问是否能删除一个数让它成为非递减或者非递增的序列. 比如说 删除后的序列是1 3 3 5 或者5 3 3 1 或者1 3 5 或者5 3 1 都可以.只要满足删掉 ...

  6. TOJ3097: 单词后缀 (字典树 or map瞎搞)

    传送门 (<---可以点击的~) 时间限制(普通/Java):1000MS/3000MS     内存限制:65536KByte 描述 有些英语单词后缀都是一样的,现在我们需要从给定的一堆单词里 ...

  7. 8VC Venture Cup 2016 - Elimination Round B. Cards 瞎搞

    B. Cards 题目连接: http://www.codeforces.com/contest/626/problem/B Description Catherine has a deck of n ...

  8. ubuntu--基础环境瞎搞集合

    安装ubuntu系统后有很多东西需要自己瞎搞一下,这里把一些瞎搞的过程记录在这里,方便以后重新装系统后重新配置. 一.安装. 可以在windows下制作启动盘(软碟通),然后开机u盘启动即可安装,预留 ...

  9. Codeforces631C【栈维护+瞎搞】

    题意: 百度. 思路: 如果该查询的R比前面的所有都大,那么前面所有都失效. 那么我先预处理出这些有效的. 那最坏的情况不就是栈里面元素(R)很多 n,n-1,n-2,n-3,n-4而且都是相反排序的 ...

随机推荐

  1. Ubuntu 下安装 Oracle Java

    这只是一篇流水帐,记录如何安装Java. 在Ubuntu 下管理软件很方便,但安装的Java是opensdk.如果在某些条件下,需要安装Sun (Oracle)的Java,则需要自己手工安装. 一般情 ...

  2. Spring EL regular expression example

    Spring EL supports regular expression using a simple keyword "matches", which is really aw ...

  3. hdu 2063 过山车(匈牙利算法模板)

    http://acm.hdu.edu.cn/showproblem.php?pid=2063 过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory ...

  4. BPL插件框架的二种实现

    1)非RTTI方式适用于所有的DELPHI版本 unit untMain; interface uses Windows, Messages, SysUtils, Classes, Graphics, ...

  5. 《数据通信与网络》笔记--SCTP

    SCTP(stream control transmission protocol)是一种新的可靠的,面向报文的传输层控制协议.它兼有UDP和TCP的特性,它是可靠的面向报文的协议,它保存报文的边界, ...

  6. nrpe 在ubuntu上安装遇到的问题

    Nagios Linux客户端需要安装NRPE进行数据收集,如果在Ubuntu系统下安装过程中遇到下面的错误提示:checking for SSL libraries... configure: er ...

  7. 通过注册表查看已安装 .NetFramework 版本

    gci "hklm:\SOFTWARE\Microsoft\NET Framework Setup\NDP" | % {(Get-ItemProperty registry::$_ ...

  8. Gym 100637F F. The Pool for Lucky Ones 暴力

    F. The Pool for Lucky Ones Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/10 ...

  9. leetcode || 53、Maximum Subarray

    problem: Find the contiguous subarray within an array (containing at least one number) which has the ...

  10. HDU 4932 贪心

    Miaomiao's Geometry Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe ...