CSP-J普及组第一轮考试阅读程写结果专项训练(一)

CSP-J普及组第一轮考试阅读程写结果专项训练(一)

程序1
#include 
#define max(a,b) a > b ? a : b
#define min(a,b) a > b ? b : a
#define int long long
using namespace std;

int T, n, ans;
int a[200010];
int maxn, minn;

int` main()
{
	cin >> T;
	while(T--)
	{
		cin >> n;
		maxn = 0;
		minn = INT_MAX;
		for(int i = 1;i <= n;i++) a[i] = 0;
		for(int i = 1;i <= n;++i)
		{
			int x;
			cin >> x;
			if(x == i) continue;
			minn = min(i,x);
			maxn = max(i,x);
			a[minn]++;
			a[maxn + 1]--;
		}
		ans = 0;
		for(int i = 1;i <= n;++i)
		{
			a[i] += a[i - 1];
			if(a[i]) ans++;
		}
		cout << ans << endl;
	}
	return 0;
}

输入:

2
3
1 3 2
4
3 2 1 4

输出:

——

你可能感兴趣的:(CCF,CSP题库训练,c++,算法,数据结构,笔记,动态规划)