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

#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. 11th 回顾5个问题

    当初提出的5个问题: 1.书中说很多非常成功的软件都是赢在用户体验,后面的第12章也专门提到了用户体验,说软件开发时可以使用5W1H的方法来判断用户的体验,而需求分析需要获取用户需求,进行用户调研,那 ...

  2. 用prop还是attr

    jquery中attr和prop的区别   在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了. 关于它们两个的区别,网上的答 ...

  3. vue.js 添加 fastclick的支持 处理移动端click事件300毫秒延迟

    fastclick:处理移动端click事件300毫秒延迟. 1,先执行安装fastclick的命令 npm install fastclick 2,在main.js中引入,并绑定到body. imp ...

  4. JVM学习笔记(三):类文件结构

    代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步. 实现语言无关性的基础是虚拟机和字节码存储格式.Java虚拟机不和包括Java在内的任何语言绑定,只与&quo ...

  5. suse11/12关闭防火墙

    suse11关闭操作为:service SuSEfirewall2_setup stopservice SuSEfirewall2_init  stop 取消开机启动防火墙:chkconfig SuS ...

  6. MySQL 主从复制详解

    读写分离的意思是,写入的时候向 a 服务器写入,而读出的时候从 b c d 甚至更多的服务器读出:这样的架构适合于读多写少的应用,最典型的就是火车购票系统,一般我们买票的时候要先查询好多次,包括车次啊 ...

  7. 学习Spring Boot:(十)使用hibernate validation完成数据后端校验

    前言 后台数据的校验也是开发中比较注重的一点,用来校验数据的正确性,以免一些非法的数据破坏系统,或者进入数据库,造成数据污染,由于数据检验可能应用到很多层面,所以系统对数据校验要求比较严格且追求可变性 ...

  8. 论如何优雅的用bitset来求四维偏序

    四维偏序.. 就是给你一个四维集合.再给你一些询问,请你求出a[i].x1<=ask.x1&&a[i].x2<=ask.x2&&a[i].x3<=as ...

  9. 解题:NOI 2014 随机数生成器

    题面 为什么NOI2014有模拟题=.=??? 按题意把序列生成出来之后,对每一行维护一个能取到的最左侧和能取到的最右侧.从小到大$O(n^2)$枚举数字看看能否填入,能填入则暴力$O(n)$更新信息 ...

  10. 【洛谷P1462】通往奥格瑞玛的道路

    题目大意:给定一个 N 个点,M 条边的无向图,求从 1 号节点到 N 号节点的路径中,满足路径长度不大于 B 的情况下,经过顶点的点权的最大值最小是多少. 题解:最大值最小问题一般采用二分答案.这道 ...