模拟题,注意不需要移动的情况要特殊输出

#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std; #define MAX_CLUSTER_NUM 10005 int cluster_num, file_num;
int link[MAX_CLUSTER_NUM];
bool is_free[MAX_CLUSTER_NUM];
int total_length;
bool optimized; void input()
{
memset(link, -, sizeof(link));
scanf("%d%d", &cluster_num, &file_num);
for (int i = ; i < cluster_num; i++)
is_free[i] = true;
int target_pos = ;
total_length = ;
for (int i = ; i < file_num; i++)
{
int file_part_num;
scanf("%d", &file_part_num);
total_length += file_part_num;
for (int j = ; j < file_part_num; j++)
{
int original_pos;
scanf("%d", &original_pos);
original_pos--;
link[target_pos] = original_pos;
target_pos++;
is_free[original_pos] = false;
}
}
} int drag(int start_point, int end_pos)
{
optimized = true;
int next_point;
while (link[start_point] != end_pos)
{
next_point = link[start_point];
printf("%d %d\n", next_point + , start_point + );
link[start_point] = -;
is_free[start_point] = false;
is_free[next_point] = true;
start_point = next_point;
}
return start_point;
} void work()
{
optimized = false;
for (int i = ; i < total_length; i++)
if (is_free[i])
drag(i, -);
for (int i = ; i < total_length; i++)
{
if (link[i] != - && link[i] != i)
{
printf("%d %d\n", i + , total_length + );
is_free[i] = true;
is_free[total_length - ] = false;
int last_pos = drag(i, i);
link[last_pos] = -;
printf("%d %d\n", total_length + , last_pos + );
is_free[last_pos] = false;
is_free[total_length - ] = true;
}
}
if (!optimized)
printf("No optimization needed\n");
} int main()
{
input();
work();
return ;
}

poj1033的更多相关文章

  1. POJ1033 Defragment

    题目来源:http://poj.org/problem?id=1033 题目大意: 某操作系统的文件系统中,所有的磁盘空间被分为N个大小相等的cluster,编号1至N.每个文件占用一个或多个clus ...

  2. ACM学习大纲

    1 推荐题库 •http://ace.delos.com/usaco/ 美国的OI 题库,如果是刚入门的新手,可以尝试先把它刷通,能够学到几乎全部的基础算法极其优化,全部的题解及标程还有题目翻译可以b ...

  3. ACM训练大纲

    1. 算法总结及推荐题目 1.1 C++ STL • STL容器: set, map, vector, priority_queue, queue, stack, deque, bitset• STL ...

  4. ACM学习大纲(转)

    1 推荐题库 •http://ace.delos.com/usaco/ 美国的OI 题库,如果是刚入门的新手,可以尝试先把它刷通,能够学到几乎全部的基础算法极其优化,全部的题解及标程还有题目翻译可以b ...

随机推荐

  1. node之文件的静态资源的托管

    /** * 文件的静态资源托管 */ let express = require('express'); let path =require('path'); let app = express(); ...

  2. SqlServer测试SQL语句执行效率

    方法一: SET STATISTICS io ON SET STATISTICS time ON go ---需要测试的sql语句 go SET STATISTICS profile OFF SET ...

  3. css文本垂直居中

    1,一般flexca 2,行高 3,行高加边框或者透明边框

  4. 5Java异常处理

    五.异常 异常概念总结:   练习一:异常的体系    问题:    1. 请描述异常的继承体系    2. 请描述你对错误(Error)的理解    3. 请描述你对异常(Expection的理解) ...

  5. Two Bases CodeForces - 602A (BigInteger c++long long也可以)

    哇咔咔 卡函数的 标记一下 c++和java的进制转换函数都是1-36进制的 c++ long long暴力就过了... 自己写一个就好了 import java.math.BigInteger; i ...

  6. Github Desktop 克隆仓库一直出现“Authentication failed”

    如图所示: 解决方法: 使用ssh链接下载而不是https

  7. bzoj4458 GTY的OJ (优先队列+倍增)

    把超级钢琴放到了树上. 这次不用主席树了..本来以为会好写一点没想到细节更多(其实是树上细节多) 为了方便,对每个点把他的那个L,R区间转化成两个深度a,b,表示从[a,b)选一个最小的前缀和(到根的 ...

  8. 【bzoj2754】 SCOI2012—喵星球上的点名

    http://www.lydsy.com/JudgeOnline/problem.php?id=2754 (题目链接) 题意 给出$n$个名字串,$m$个点名串,问对于每一个姓名串,它包含多少个点名串 ...

  9. 前端学习 -- Css -- 默认样式

    浏览器为了在页面中没有样式时,也可以有一个比较好的显示效果, 所以为很多的元素都设置了一些默认的margin和padding,而它的这些默认样式,正常情况下我们是不需要使用的. 所以我们往往在编写样式 ...

  10. NB-IoT 的“前世今生”

    作者:个推B2D研发工程师 海晏 根据<爱立信2018移动报告>(Ericsson Mobility Report,June 2018)的预测,蜂窝物联网设备连接数将在2023年达到35亿 ...