题目:圆桌会议

Problem - 1214 (hdu.edu.cn)


解题思路:

结果的顺序就是原序列的逆序,例如12345就是54321为结果顺序。同时将一个顺序序列(非环)变成逆序需要的次数为。想要的得到最短的交换次数,只需要将环尽量对半分,然后分别对两部分进行顺序序列变逆序次数的计算,再将两部分次数相加即可。(ps:只有尽量对半分,才能使得逆序所需次数最少,3:7之类都是不行的)


AC代码:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;

int slove(int n){
	return n * (n - 1) / 2;
}
int main()
{
	int n;
	while(cin >> n){  // 题目没有输入样例次数
		cout << slove(n/2) + slove(n - n / 2) << '\n';
	}
	return 0;
 } 

知识点:

思维题,数学

相关推荐
Bruce Jue1 小时前
算法刷题--贪心算法
算法·贪心算法
慕容魏2 小时前
入门到入土,Java学习 day16(算法1)
java·学习·算法
认真的小羽❅2 小时前
动态规划详解(二):从暴力递归到动态规划的完整优化之路
java·算法·动态规划
LiDAR点云4 小时前
Matlab中快速查找元素索引号
数据结构·算法·matlab
CYRUS_STUDIO4 小时前
安卓逆向魔改版 Base64 算法还原
android·算法·逆向
CYRUS_STUDIO4 小时前
安卓实现魔改版 Base64 算法
android·算法·逆向
一只_程序媛5 小时前
【leetcode hot 100 142】环形链表Ⅱ
算法·leetcode·链表
Luis Li 的猫猫5 小时前
基于MATLAB的冰块变化仿真
开发语言·图像处理·人工智能·算法·matlab
郭涤生5 小时前
并发操作的同步_第四章_《C++并发编程实战》笔记
开发语言·c++·算法
深思慎考5 小时前
Linux——进程间通信(system V共享内存)
linux·服务器·算法