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

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

黑书上的经典题了。我说说解这个题的巧妙的地方吧。

首先,竟然和置换联系起来了。因为其实一个交换即至少可以使其中一个元素到达指定位置了。和循环置换联合起来,使得一个循环内的数可以一步到达指定位置,很巧妙啊。这样,用循环内的最小的数和其它数交换,需要K-1次的交换即可。另外,也可以把整个数列的最小数 i 和循环内的最小数交换,用 i 来和循环内的其他数交换的权值。 两者权值取最小的即可。

 

实在巧妙。

#include 
#include
#include
#include
#define LL __int64#define N 10000#define inf (1<<30)using namespace std;int num[N+1];bool vis[N+1];struct Value{ int val,pos;}cow[N+1];bool cmp(Value a,Value b){ if(a.val

  

转载于:https://www.cnblogs.com/jie-dcai/p/4028915.html

你可能感兴趣的文章
隐马尔科夫模型(HMM) 举例讲解
查看>>
JedisUtils工具类模板
查看>>
NOIP2011题解
查看>>
[Python] 文科生零基础学编程系列二——数据类型、变量、常量的基础概念
查看>>
[唐胡璐]QTP技巧 - ALT+G快捷键
查看>>
P2746 [USACO5.3]校园网Network of Schools
查看>>
java中使用队列:java.util.Queue
查看>>
随笔记录(2019.7.16)
查看>>
clang代替gcc
查看>>
【Shell】基础正则表示法及grep用法
查看>>
Demo整合
查看>>
Android基础——JSON数据的全方位解析
查看>>
Derek解读Bytom源码-持久化存储LevelDB
查看>>
规范化-数据库设计原则
查看>>
BASIC-24_蓝桥杯_龟兔赛跑预测
查看>>
C# 中使用Linq和Lambda表达式对List<T>进行排序
查看>>
offsetHeight, clientHeight与scrollHeight的区别
查看>>
002-python基础-hello-world
查看>>
WPF复杂形状按钮
查看>>
谈一谈循环的性能提升
查看>>