博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj1033
阅读量:5953 次
发布时间:2019-06-19

本文共 2040 字,大约阅读时间需要 6 分钟。

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

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

 

转载于:https://www.cnblogs.com/rainydays/p/3265433.html

你可能感兴趣的文章
springboot 常用插件
查看>>
一个基于特征向量的近似网页去重算法——term用SVM人工提取训练,基于term的特征向量,倒排索引查询相似文档,同时利用cos计算相似度...
查看>>
[转]Newtonsoft.Json高级用法
查看>>
35个Java代码性能优化总结
查看>>
Spring+SpringMVC+MyBatis+easyUI整合基础篇(一)项目简述及技术选型介绍
查看>>
剑指offer——35复杂链表的复制
查看>>
DFI、DPI技术
查看>>
hibernate 执行存储过程 方法
查看>>
RapidIOIP核的验证方法研究_王玉欢
查看>>
崩溃日志的实例
查看>>
base64是啥原理
查看>>
字符串中去除连续相同的字符保留一个
查看>>
实战 Windows Server 2012 群集共享卷
查看>>
CSS 元素超出部分滚动, 并隐藏滚动条
查看>>
React中那些纠结你的地方(一)
查看>>
Docker入门安装教程
查看>>
PhoneGap极光推送 cordova消息推送
查看>>
Subarray Sum Equals K
查看>>
preventDefault, stopPropagation, stopImmediatePropagation 三者的区别
查看>>
算法题解:找出包含给定字符的最小窗口(枚举的一般方法)
查看>>