CF1032C Playing Piano
CF1032C Playing Piano - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)。
题目大意是:能否构造一个长度为
给定的大小关系可能是大于、小于、不等于。
CF 官方给的 dp 做法是假的。实际上只需要一个橙色难度的简单构造。而且这个做法时空复杂度和
把序列拆分为连续大于段,连续小于段和连续不等段。
贪心地,连续大于段从
连续不等段直接在
然后考虑一下段和段的边界。
先小于后大于
先大于后小于同理,跟后面。
先不等后小于
先不等后大于同理,跟后面。
先小于后不等
先大于后不等同理,跟前面。
但是这样会有一个问题:
不难发现,此时
注意
复杂度
/*
* @Author: crab-in-the-northeast
* @Date: 2023-01-07 01:36:54
* @Last Modified by: crab-in-the-northeast
* @Last Modified time: 2023-01-07 02:23:00
*/
#include <bits/stdc++.h>
inline int read() {
int x = 0;
bool f = true;
char ch = getchar();
for (; !isdigit(ch); ch = getchar())
if (ch == '-')
f = false;
for (; isdigit(ch); ch = getchar())
x = (x << 1) + (x << 3) + ch - '0';
return f ? x : (~(x - 1));
}
const int maxn = (int)1e5 + 5;
int a[maxn];
char b[maxn]; // b[i] 表示 b[i] 和 b[i + 1] 的大小关系
int main() {
int n = read();
if (n == 1) {
puts("1");
return 0;
}
for (int i = 1; i <= n; ++i)
a[i] = read();
for (int i = 1; i < n; ++i) {
if (a[i] < a[i + 1])
b[i] = '<';
else if (a[i] > a[i + 1])
b[i] = '>';
else
b[i] = '!';
}
int lst = 1;
if (b[1] == '>')
lst = 5;
else if (b[1] == '!')
lst = 2;
std :: vector <int> ans = {lst};
for (int i = 2; i < n; ++i) {
int now;
char p = b[i - 1], q = b[i];
if (p == '<') {
if (lst == 5)
break;
now = lst + 1;
if (q == '>')
now = 5;
} else if (p == '>') {
if (lst == 1)
break;
now = lst - 1;
if (q == '<')
now = 1;
} else if (p == '!') {
if (q == '!') {
now = 3;
if (lst == 3)
now = 2;
} else if (q == '<') {
now = 1;
if (lst == 1)
now = 2;
} else if (q == '>') {
now = 5;
if (lst == 5)
now = 4;
}
}
ans.push_back(lst = now);
}
if (b[n - 1] == '<')
ans.push_back(5);
else if (b[n - 1] == '>')
ans.push_back(1);
else
ans.push_back(lst == 5 ? 4 : 5);
if ((int)ans.size() == n)
for (int x : ans)
printf("%d ", x);
else
printf("-1");
puts("");
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】