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而且都是相反排序的 ...
随机推荐
- Windows 下整理内存工具推荐——cleanmem
---恢复内容开始--- cleanmem 是个不错的内存整理工具,www.xdown.com 下载有便携版提供下载. 软件有pro版和free版,一般情况下,free版够用了,没必要用pro版. p ...
- OpenCDN2.0安装
部署说明 为网站加速,建立私有的CDN节点群,每部署一个CDN节点只需5分钟,无节点数量上限!参考 http://ocdn.me/ 安装需求 OpenCDN的Beta版目前在CentOS5.x - C ...
- wikioi 1154 能量项链
题目描述 Description 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子 ...
- cocos2d-x 图形绘制
转自:http://blog.csdn.net/zhy_cheng/article/details/8480048 图形绘制的话,在cocos2d-x自带的TestCpp里有,包括绘制点,直线,多边形 ...
- Java Nio 多线程网络下载
--> 默认最多50个线程 同一文件下载失败延迟超过30秒就结束下载 --> 下载5分钟超时时间,假设5分钟内未下载完就结束下载 --> 依赖 commons-httpclient ...
- [MODx] 2. Install some useful packages into ur MODx
1. The package we might need: 2. Install the package: Select Installer Download Extras Install the p ...
- MySQL 列子查询及 IN、ANY、SOME 和 ALL 操作符的使用(转)
MySQL 列子查询 列子查询是指子查询返回的结果集是 N 行一列,该结果通常来自对表的某个字段查询返回. 一个列子查询的例子如下: SELECT * FROM article WHERE uid I ...
- C++函数的传入参数是指针的指针(**)的详解
要修改变量的值,需要使用变量类型的指针作为参数或者变量的引用.如果变量是一般类型的变量,例如int,则需要使用int 类型的指针类型int *作为参数或者int的引用类型int&.但是如果变量 ...
- 一个坐标点围绕任意中心点旋转--C#实现
假设对图片上任意点(x,y),绕一个坐标点(rx0,ry0)逆时针旋转RotaryAngle角度后的新的坐标设为(x', y'),有公式: x'= (x - rx0)*cos(RotaryAngle) ...
- Windows下用Git下载android源码 转载
http://my.oschina.net/jiadebin/blog/52631 1.首先你的电脑要安装好git,这个请参考git官网. 2.打开git命令窗口输入git clone http:// ...