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而且都是相反排序的 ...
随机推荐
- JDBC学习笔记(2)——Statement和ResultSet
Statement执行更新操作 Statement:Statement 是 Java 执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.Statement ...
- FIREDAC直连ORACLE数据库
UniDac对Oracle的Direct连接,不需要套Oracle客户端dll,deploy时真的时 方便又快捷.FireDac连接Oracle,在没有Oracle Client的情况下,是可以连接上 ...
- PictureEdit中拖放图片
public partial class Form2 : Form { string fileName = string.Empty; public Form2() { InitializeCompo ...
- Host key verification failed解决
SSH 登录失败:Host key verification failed 由于公钥不一样了,所以无法登录,提示信息是 KEY 验证失败. 解决方法是: 在 /root/.ssh/known_host ...
- cocos2d-x 手电筒效果
转自:http://blog.csdn.net/xujiezhige/article/details/8448524# 常见的手电筒效果,可以通过CCRenderTexture来实现.主要是通过修改渲 ...
- 【转】python中的lambda函数
http://www.cnblogs.com/coderzh/archive/2010/04/30/python-cookbook-lambda.html lambda函数也叫匿名函数,即,函数没有具 ...
- LCD_ILI9320横竖屏方向的问题。
发现仅仅设置R03H是不能设置方向的,还需要设置R32H,R33H的坐标位置. 比如我现在是 R03H=0x1000H,R20H=239-x,R21H=319-y:竖直正向 R03H=0x1030H, ...
- Codeforces Round #274 (Div. 1) C. Riding in a Lift 前缀和优化dp
C. Riding in a Lift Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/480/pr ...
- alternatives命令使用方法
alternatives命令使用方法 alternatives是Linux下的一个功能强大的命令.仅仅能在root权限下运行.如系统中有几个命令功能十分相似,却又不能任意删除,那么能够用 altern ...
- 安装 Nginx 并配置负载均衡
1,在节点 192.168.1.40 上执行安装 nginx,操作如下: 01 02 03 sudo apt-add-repository ppa:nginx/development sudo apt ...