2022年xtu程序设计实践3

本文详述了各类程序设计题目,涵盖逆序数、最短路径、翻转棋、线性DP、消星星、周年纪念等挑战,通过实例解析了如何运用归并排序、最短路算法、二进制压缩等技术解决问题,并分享了代码实现和解题心得。

2022年xtu程序设计实践3

前言:

发现光做题没有用,还是要写题解不断的回顾做题过程,做好总结。

oj动不动就T,是真的拉

最新更新:

2022-5-7 更新第 1 , 8 , 18 , 19 , 20 1,8,18,19,20 1,8,18,19,20 题。

2022-5-9 更新第 14 , 15 , 16 , 17 14,15,16,17 14,15,16,17 题。

2022-5-11 更新第 10 10 10 题。

2022-5-19 更新第 2 2 2 题。

1-逆序数(大数据)(套路题)

老套路了。逆序对 【总结】

  1. 归并排序,合并的时候处理贡献
  2. 树状数组 死活T掉了
  3. 线段树
  4. 排序二叉树 建议是平衡树。。。。

贴一份归并的逆序对,很早之前写的,不怕被查重(狗头保命)

#include <cstdio>

using namespace std;
const int lim = 10003;
int n;
int a[lim],k[lim];
int ans;

int read()
{
   
   
	int res = 0;
	char c = getchar();
	while(c > '9' || c < '0') c = getchar();
	while(c >= '0' && c <= '9')
	{
   
   
		res = res * 10 + c - 48;
		c = getchar();
	}
	return res;
}

void sort_gb(int l,int r)
{
   
   
	if (l == r) return;
	int mid = (l + r) >> 1;
	sort_gb(l,mid); sort_gb(mid+1,r);
	int i = l, j = mid + 1, p = l;
	while(i <= mid || j <= r)
	{
   
   
		if (i > mid) k[p++] = a[j++];
		else if (j > r) k[p++] = a[i++], ans += r - mid;
		else
		{
   
   
			if (a[i] <= a[j]) k[p++] = a[i++], ans += j - mid - 1;
			else k[p++] = a[j++];
		}
	}
	for (p = l; p <= r; ++p)
		a[p] = k[p];
}

int main()
{
   
   
	while(scanf("%d", &n) == 1)
	{
   
   
		if (n == 0) break;
		for (int i = 1; i <= n; ++i)
			a[i] = read();
		ans = 0;
		sort_gb(1,n);
		printf("%d\n",ans);
	}
	return 0;
}
2-Shortest Path (一点难)

考虑按顺序经过 { 1 , a 1 , a 2 , a 3 . . a k , n } \{1, a_{1}, a_{2}, a_{3}..a_{k},n \} { 1,a1,a2,a3..ak,n} 个点,并且这 k + 2 k + 2 k+

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值