社区讨论
Wa2 但是和答案除顺序外无差别
CF1242E Planar Perimeter参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lo9chkod
- 此快照首次捕获于
- 2023/10/28 09:09 2 年前
- 此快照最后确认于
- 2023/10/28 09:09 2 年前
这题貌似也没有对顺序输出要求啊。/kk
我暂且懵在谷里。
CPP我暂且懵在谷里。
#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 10;
int n , m;
struct node {
int x , pos;
}a[N];
int p[N << 1] , l , r;
vector<int> ans[N];
inline bool cmp(node x , node y) {
return x.x > y.x;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0) , cout.tie(0);
cin >> n;
for(int i = 1;i <= n;i++) cin >> a[i].x , a[i].pos = i;
sort(a + 1 , a + n + 1 , cmp);
int cnt = 0 , l = 1;
for(int i = 1;i <= a[1].x;i++) ans[a[1].pos].push_back(++cnt) , p[++r] = cnt;
for(int i = 1;i < n;i++) {
int rec = a[i + 1].x; a[n + 2].x = max(a[n + 2].x , 3);
if(a[i].x - a[i + 1].x + 2 >= a[n + 2].x) a[i + 1].x = a[i].x - a[i + 1].x + 2;
else a[i + 1].x = ((a[i].x - a[i + 1].x) % 2 == a[n + 2].x ? a[n + 2].x : a[n + 2].x + 1);
int tem = (rec + a[i].x - a[i + 1].x) / 2 , v = rec - tem;
for(int j = r - tem + 1;j <= r;j++) ans[a[i + 1].pos].push_back(p[j]);
r = r - tem + 2;
for(int j = 1;j < v;j++) ans[a[i + 1].pos].push_back(++cnt) , p[++r] = cnt;
ans[a[i + 1].pos].push_back(p[l]);
p[++r] = p[l++];
}
cout << cnt << '\n';
for(int i = n;i >= 1;i--) {
for(int j = 0;j < ans[i].size();j++) {
cout << ans[i][j] << ' ';
}
cout << '\n';
}
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...