EVERYTHING HAPPENS FOR THE BE|

wnsyou

园龄:2年4个月粉丝:19关注:16

2023-05-31 16:13阅读: 38评论: 0推荐: 0

abc274_d Robot Arms 2 题解

Robot Arms 2

题意

有一个长度为 n 的整数序列 a 和两个整数 xy,你要在平面直角坐标系上放置 n+1 个点(p1,p2,pn+1),要求:

  • p1=(0,0),p2=(a1,0),pn+1=(x,y)
  • 对于 1inpipi+1 的距离为 ai
  • 对于 1in,线段 pipi+1 与线段 pi+1pi+2 构成一个直角。

问:是否存在一种放点的方案满足要求,如果存在,输出 Yes;否则输出 No

数据范围

  • 1n103
  • 1ai10(1in)
  • 104x,y104

思路

一眼 dp,如果把坐标 xy 放一起考虑,MLE 和 TLE 等着你。

线段构成直角?可以发现对于所有下标为奇数的边必然与 x 轴平行,而下标为偶数的边与 y 轴平行。

所以可以把 xy 分开考虑,然后就是简单的可行性 dp 了。

注意坐标可能为负数,需要将坐标偏移。

复杂度

以下 V 表示 xy 的范围的大小,即 2×104

  • 时间:O(n×V)
  • 空间:O(n+V)

Code

点击查看代码
#include <bits/stdc++.h>
using namespace std;
const int N = 2e4 + 10, P = 1e4, M = 510; // 注意空间
int t, n, m, x, y, z, a[M], b[M];
bool dp[N][3][3];
int main () {
ios::sync_with_stdio(0), cin.tie(0);
cin >> t >> x >> y >> z; // 第一条边需要特殊处理
x += P, y += P, dp[P + z][0][0] = dp[P][0][1] = 1;
for (int i = 2; i <= t; i++) {
cin >> z;
if (i % 2) {
a[++n] = z; // 存储奇数边
} else {
b[++m] = z; // 存储偶数边
}
}
for (int i = 1; i <= m; i++) { // 很显然 m >= n
for (int j = 0; j <= P * 2; j++) {
if (i <= n) {
dp[j][1][0] = 0; // 滚动数组秀操作
if (j >= a[i]) {
dp[j][1][0] = dp[j - a[i]][0][0];
}
if (j + a[i] <= 2 * P) {
dp[j][1][0] |= dp[j + a[i]][0][0];
}
}
if (i <= m) {
dp[j][1][1] = 0;
if (j >= b[i]) {
dp[j][1][1] = dp[j - b[i]][0][1];
}
if (j + b[i] <= 2 * P) {
dp[j][1][1] |= dp[j + b[i]][0][1];
}
}
}
for (int j = 0; j <= P * 2; j++) {
if (i <= n) {
swap(dp[j][1][0], dp[j][0][0]);
}
if (i <= m) {
swap(dp[j][1][1], dp[j][0][1]);
}
}
}
cout << (dp[x][0][0] && dp[y][0][1] ? "Yes" : "No"); // x 和 y 都需要满足
return 0;
}

本文作者:wnsyou の blog

本文链接:https://www.cnblogs.com/wnsyou-blog/p/17434966.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   wnsyou  阅读(38)  评论(0编辑  收藏  举报
  1. 1 勝利への道 安藤浩和
  2. 2 Minecraft’s End Eric Fullerton
  3. 3 月光曲完整版 贝多芬 云熙音乐
  4. 4 平凡之路 (Live版) 朴树
  5. 5 Minecraft C418
  6. 6 Paradise NiziU
  7. 7 叫我,灰原哀 龙大人不喷火
  8. 8 心机之蛙,一直摸你肚子 ——《名侦探柯南》原创同人曲 炊饭,叶辞樱,温海,寒砧,南柯柯,小茜玛姬,盛姝,阿崔Ac,贝壳初,千湛,兮茶子DaYu,乔慕,黎鹿北,起千温卿,遮阳伞,曲悠
  9. 9 战 歌 此去经年
战 歌 - 此去经年
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 此去经年

作曲 : 此去经年

编曲 : 此去经年

啊啊啊啊啊

啊啊啊啊

啊啊啊

啊啊

加载中…

{{tag.name}}

{{tran.text}}{{tran.sub}}
无对应文字
有可能是
{{input}}
尚未录入,我来提交对应文字
评论
收藏
关注
推荐
深色
回顶
收起
点击右上角即可分享
微信分享提示