hdu 4671 瞎搞
题意:每个用户对数据库的查询请求都会首先用该数据库的服务器序列的第一个去执行任务,若第一个坏了,就由第二个执行。最多只会坏一个服务器。要求是考虑最多坏一个的情况下,所有服务器中执行用户查询的数目最大值与最小值之差不能超过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 瞎搞的更多相关文章
- HDU 4923 Room and Moor(瞎搞题)
瞎搞题啊.找出1 1 0 0这样的序列,然后存起来,这样的情况下最好的选择是1的个数除以这段的总和. 然后从前向后扫一遍.变扫边进行合并.每次合并.合并的是他的前驱.这样到最后从t-1找出的那条链就是 ...
- URAL 1203. Scientific Conference(瞎搞)
题目链接 本来觉得这不是经典的贪心吗..果断水一次,wa了,看了看discuss,发现貌似不好水,土土的DP了一下,复杂度很高了,又T了...然后想想单调队列,二分什么的...不好往上加,直接搞了标记 ...
- Codeforces Gym 100610 Problem H. Horrible Truth 瞎搞
Problem H. Horrible Truth Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/1006 ...
- B. Salty Fish Go! -期望题(瞎搞题)
链接:https://www.nowcoder.com/acm/contest/104/B来源:牛客网 题意:A few days ago, WRD was playing a small game ...
- HDU5532 Almost Sorted Array(最长上升子序列 or 瞎搞个做差的数组)
题目链接:点我 题意:给定一个序列,询问是否能删除一个数让它成为非递减或者非递增的序列. 比如说 删除后的序列是1 3 3 5 或者5 3 3 1 或者1 3 5 或者5 3 1 都可以.只要满足删掉 ...
- TOJ3097: 单词后缀 (字典树 or map瞎搞)
传送门 (<---可以点击的~) 时间限制(普通/Java):1000MS/3000MS 内存限制:65536KByte 描述 有些英语单词后缀都是一样的,现在我们需要从给定的一堆单词里 ...
- 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 ...
- ubuntu--基础环境瞎搞集合
安装ubuntu系统后有很多东西需要自己瞎搞一下,这里把一些瞎搞的过程记录在这里,方便以后重新装系统后重新配置. 一.安装. 可以在windows下制作启动盘(软碟通),然后开机u盘启动即可安装,预留 ...
- Codeforces631C【栈维护+瞎搞】
题意: 百度. 思路: 如果该查询的R比前面的所有都大,那么前面所有都失效. 那么我先预处理出这些有效的. 那最坏的情况不就是栈里面元素(R)很多 n,n-1,n-2,n-3,n-4而且都是相反排序的 ...
随机推荐
- aspose.cell制作excel常见写法
//设置Excel的基本格式信息 Workbook workbook = new Workbook(); Worksheet worksheet = workbook.Worksheets[]; St ...
- Delphi版浏览器(持续更新)
自从加入校组织网络中心后要记住各种密码,本人记性不好,又比较喜欢偷懒,于是乎做个专用浏览器来免除这些麻烦,目前只是第一版,只是个简单成型的浏览器而已,在后续版本中会导入各种账号密码,免除 ...
- 学习微软中间语言(MSIL)的绝佳工具 Dotnet IL Editor 推荐
Dotnet IL Editor是一款.NET平台反编译工具,可以反编译.NET程序集文件为IL代码,并且可以执行,调试反编译后生成的IL代码.它的设计出发点比较直观,新建一个项目,添加程序集文件,设 ...
- wikioi 1214 线段覆盖
题目描述 Description 给定x轴上的N(0<N<100)条线段,每个线段由它的二个端点a_I和b_I确定,I=1,2,--N.这些坐标都是区间(-999,999)的整数.有些线段 ...
- nrpe 在ubuntu上安装遇到的问题
Nagios Linux客户端需要安装NRPE进行数据收集,如果在Ubuntu系统下安装过程中遇到下面的错误提示:checking for SSL libraries... configure: er ...
- Covarience And ContraVariance
using System; using System.Collections.Generic; using System.IO; namespace CovarientAndContraVarient ...
- 几种server模型
TCP測试用客户程序 每次执行客户程序,在命令行參数指定server的ip地址,port,发起连接的子进程数,和一个待发送的字符串数据,客户程序将模拟多个客户依据指定的子进程数创建子进程来并发的连接到 ...
- win7系统激活最简单方法
利用激活工具快速激活WIN7系统! 工具/原料 小马Oem7.未激活的WIN7系统 步骤/方法 1 复制BT种子 http://www.pccppc.com/download/oem7F.rar粘贴到 ...
- dsp与sem的互补以及技术实现
SEM翻译过来叫搜索引擎营销,个人认为是随着搜索引擎竞价排名出现的一个行业,已经有了好多年的历史,做sem的公司这些年里手里应该都积攒着大量的cookie,关键词等与SEM和追踪相关的数据,这些数据现 ...
- Java_maven构建项目(多模块项目)
在eclipse下构建maven项目,该项目由多个子模块组成. 1.创建一个父项目 NEW -->project-->maven-->maven Project,点击下一步,进入ne ...