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

被折叠的 条评论
为什么被折叠?



