#686 div3

本文通过分析Codeforces上的三道编程题目,探讨了全排列、唯一拍卖和序列转换的解决方案。A题要求找到一个特殊的全排列,使得每个元素不等于其下标;B题涉及独特的投标拍卖,寻找最小的唯一出价;C题讨论序列的连续段变换问题,寻找最小改变次数。文章通过C++代码展示了如何解决这些问题,并强调了在算法设计中的关键思考和优化技巧。
摘要由CSDN通过智能技术生成

http://codeforces.com/contest/1454

A. Special Permutation

consisting 组成
distinct 不同的
condition 条件
proven 证明

找到一个1~n的全排列,使每个数不等于它的下标

	int t;
	cin >> t;
	while(t --) {
		int n;
		cin >> n;
		for(int i = 2; i <= n; i ++) {
			cout << i << " ";
		}
		cout << 1 << endl;
	}

B. Unique Bid Auction

Unique 独一无二的
Bid 投标竞价
Auction 拍卖
minimal 最小

    int t;
    cin >> t;
    while(t --) {
    	int n;
    	cin >> n;
    	map<int, int> mp;
    	int a[200005];
    	mp.clear();
    	for(int i = 1; i <= n; i ++) {
    		cin >> a[i];
    		mp[a[i]] ++;
		}
		int ans = 1e9, ii = -1;
		for(int i = 1; i <= n; i ++) {
			if(mp[a[i]] == 1 && a[i] < ans) 
				ans = a[i], ii = i;
		}
		cout << ii << endl;
	}

C. Sequence Transformation *

segment 段
contiguous 相邻的
collapses 崩溃 折叠

学习:INT_MAXINT_MIN直接赋最大最小值

void solve() {
	int n;
	cin >> n;
	int a[n], ans = INT_MAX;
	map<int, int> mp;
	for(int i = 0; i < n; i ++) {
		cin >> a[i];
		if(i == 0) continue;
		else if(a[i] != a[i - 1]) mp[a[i]] ++;
	}
	mp[a[n - 1]] --; //*
	for(int i = 0; i <n; i ++) {
		ans = min(ans, mp[a[i]]);
	}
	cout << ans + 1 << endl;
}

D. Number into Sequence

Sequence 序列
strictly 严格的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值