uva669(暴力)

题意:

给出n个空间,标号1到n;

给出k个文件;

每个文件给出要占几个空间,并且给出占的空间有哪些;

现在要我们按顺序,把这些文件排好;

比如三个文件,分别占空间个数4,3,2;

那么第一个文件就要放到空间1,2,3,4,第二个文件放到5,6,7第三个文件放到8,9;

问怎么移动,要求移动最少;

思路;

暴力;

一.把所有能移动到正确位置的部分全都移动到正确位置(就是这个部分放的位置不对,而且它正确的的那个位目前是空的)

二.已经没有办法移了,然后随便拿一个位置放错的,放到一个空位(这样肯定就可以继续移了),然后继续执行上面的第一步;

知道正确为止;

如果一开始就正确;输出No optimization needed

#include<cstdio>
#include<cstring>

const int N = 10005;

int clus[N], cnt, n, k, make;

void solve() {
	int c = 0;
	while(1) {
		int cc = c;
		for(int i = 1; i <= n;i++) {
			if(clus[i] != i && clus[i] != 0 && clus[clus[i]] == 0) {
				c++;
				printf("%d %d\n",i,clus[i]);
				clus[clus[i]] = clus[i];
				clus[i] = 0;
			}
		}
		if(c == make)
			break;
		if(cc == c) {
			bool f = 0;
			for(int i = 1; i <= n; i++) {
				if(clus[i] != i && clus[i] != 0) {
					for(int j = 1; j <= n ;j++) {
						if(clus[j] == 0) {
							printf("%d %d\n",i,j);
							clus[j] = clus[i];
							clus[i] = 0;
							f = 1;
							break;
						}
					}
				}
				if(f)
					break;
			}
		}
	}
}
int main() {
	int t;
	scanf("%d",&t);
	while(t--) {
		memset(clus, 0, sizeof(clus));
		make = 0;
		scanf("%d%d",&n,&k);
		cnt = 1;
		for(int i = 1; i <= k; i++) {
			int c;
			scanf("%d",&c);
			int tmp;
			for(int i = 0; i < c;i++) {
				scanf("%d",&tmp);
				clus[tmp] = cnt++;
				if(tmp != cnt - 1)
					make++;
			}
		}
		if(make == 0)
			printf("No optimization needed\n");
		solve();
		if(t)
			printf("\n");
	}
}
时间: 2024-11-20 05:09:27

uva669(暴力)的相关文章

二叉树的后序遍历(暴力版) 小白菜oj 1034

给出二叉树的前序遍历和中序遍历,求二叉树的后序遍历-- 作为一个搜索蒟蒻,我真的没有办法很和谐的A掉,但估计过几天就会写有关这个题的和谐的解法--但只是估计-- 下面讲述我的超暴力解法-- 首先,先由前序遍历得到一个父亲节点,然后再由中序遍历得到这个父亲节点的左子树和右子树中的元素(中序遍历中,该点的左边的所有点,都在它的左子树,右边的都在它的右子树,子树中的根节点是在这些节点的前序遍历中排名最靠前的),然后递归建树,之后在递归求后序遍历即可. 但这个方法有两个比较--&¥--&的问题:1

玲珑杯 round18 A 计算几何瞎暴力

题目链接 : http://www.ifrog.cc/acm/problem/1143 当时没看到坐标的数据范围= =看到讨论才意识到,不同的坐标最多只有1k多个,完全可以暴力做法,不过也要一些技巧. 首先注意数很大可能爆int,用LL得话注意强制转换或者全设为LL,假如  int a=50000,b=a;  LL sum=a*b; 则会爆出,除非ab都是LL 或者 sum=(LL)a*(LL)b; 还有就是R最大就是30,我们不妨设ans[i]表示R<=i的组合个数,做一个前缀和方便快速询问.

Vijos P1066 弱弱的战壕【多解,线段树,暴力,树状数组】

弱弱的战壕 描述 永恒和mx正在玩一个即时战略游戏,名字嘛~~~~~~恕本人记性不好,忘了-_-b. mx在他的基地附近建立了n个战壕,每个战壕都是一个独立的作战单位,射程可以达到无限(“mx不赢定了?!?”永恒[email protected][email protected]). 但是,战壕有一个弱点,就是只能攻击它的左下方,说白了就是横纵坐标都不大于它的点(mx:“我的战壕为什么这么菜”ToT).这样,永恒就可以从别的地方进攻摧毁战壕,从而消灭mx的部队. 战壕都有一个保护范围,同它的攻击

A. The Fault in Our Cubes 暴力dfs

http://codeforces.com/gym/101257/problem/A 把它固定在(0,0, 0)到(2, 2, 2)上,每次都暴力dfs检查,不会超时的,因为规定在这个空间上,一不行,就会早早退出. 这样写起来比较好写. #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <algorithm> #include <

HDU 5690 All X 暴力循环节

分析:暴力找循环节就好了 #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <string> #include <stack> #include <vector> #include <map> #include <queue> #inc

Codeforces Round #281 (Div. 2) A. Vasya and Football 暴力

A. Vasya and Football Vasya has started watching football games. He has learned that for some fouls the players receive yellow cards, and for some fouls they receive red cards. A player who receives the second yellow card automatically receives a red

防止ssh暴力破解linux密码

网上看到一篇安全方面的文章,常用的网站收藏无法收藏,于是放这里先.具体功能还未测试,请慎用. 下面是博客原文转载,感谢作者辛苦劳动: 服务器在互联网中,每天都有些没事儿干的人在你的机器端口扫来扫去,让管理员非常烦恼.本文描述一个方法,利用本文介绍的脚本结合iptables服务一并使用,用来防止公网计算机通过ssh进行用户口令暴力破解.目前稳重脚本已经在其他项目的实际运营环境中得到验证. 脚本内容: #!/bin/bash # 防SSH密码暴力破解脚本 # 通过分析secure日志文件使用ipta

HDOJ 4687 Boke and Tsukkomi 一般图最大匹配带花树+暴力

一般图最大匹配带花树+暴力: 先算最大匹配 C1 在枚举每一条边,去掉和这条边两个端点有关的边.....再跑Edmonds得到匹配C2 如果C2+2==C1则这条边再某个最大匹配中 Boke and Tsukkomi Time Limit: 3000/3000 MS (Java/Others)    Memory Limit: 102400/102400 K (Java/Others) Total Submission(s): 649    Accepted Submission(s): 202

HDU 4749 Parade Show(暴力水果)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4749 Problem Description 2013 is the 60 anniversary of Nanjing University of Science and Technology, and today happens to be the anniversary date. On this happy festival, school authority hopes that the