Solution -「ARC 104C」Fair Elevator
2024-10-19 22:23:22
\(\mathcal{Description}\)
Link.
数轴从 \(1\sim 2n\) 的整点上有 \(n\) 个闭区间。你只知道每个区间的部分信息(可能不知道左或右端点,或者都不知道),问是否存在满足已知信息的 \(n\) 个区间,满足:
- 每个整点是恰好一个区间的端点。
- 所有包含同一个整点的区间长度相等。
输入信息可能不合法。
\(n\le100\)。
\(\mathcal{Solution}\)
老细节题了。(
考虑数轴上连续的一段区间 \([l,r]\),记 \(L=r-l+1\),若该区间内能够满足条件,则显然有:
- \(2|L\)。
- \([i,i+\frac{L}2]\) 可以存在于区间集合中。
记 \(f(i)\) 表示 \(1\sim i\) 能否合法,\(\mathcal O(n^3)\) 暴力转移即可。
但这个不是难点,if-else 才是难点 qwq。
- 输入可能多点重合,判否。
- 若有区间 \([l,?]\) 和 \([?,r]\),注意不能让 \(l\) 和 \(r\) 组成 \([l,r]\)。
对于第二点,一组 CF 上的 hack 数据为:
2
1 -1
-1 3
answer: No
多堆几个 if-else 就 A 啦!(
\(\mathcal{Code}\)
/* Clearink */
#include <cstdio>
#include <cstdlib>
#include <assert.h>
const int MAXN = 200;
int n, match[MAXN + 5];
bool f[MAXN + 5], vis[MAXN + 5];
inline bool check ( const int l, const int r ) {
int stp = r - l + 1 >> 1; // i -> i + stp.
for ( int i = l, j; ( j = i + stp ) <= r; ++ i ) {
bool acci = 1 <= match[i] && match[i] <= n << 1;
bool accj = 1 <= match[j] && match[j] <= n << 1;
if ( match[i] == -1 || ( acci && match[i] ^ j )
|| match[j] == ( n << 1 | 1 ) || ( accj && match[j] ^ i )
|| ( !acci && !accj && match[i] && match[j] ) ) {
return false;
}
}
return true;
}
int main () {
scanf ( "%d", &n );
for ( int i = 1, a, b; i <= n; ++ i ) {
scanf ( "%d %d", &a, &b );
if ( ~a && ~b && a >= b ) return puts ( "No" ), 0;
if ( ~a && ~b ) match[a] = b, match[b] = a;
else if ( ~a ) match[a] = n << 1 | 1;
else if ( ~b ) match[b] = -1;
if ( ~a ) {
if ( vis[a] ) return puts ( "No" ), 0;
vis[a] = true;
}
if ( ~b ) {
if ( vis[b] ) return puts ( "No" ), 0;
vis[b] = true;
}
}
f[0] = true;
for ( int i = 2; i <= n << 1; i += 2 ) {
for ( int j = 0; j < i && !f[i]; j += 2 ) {
f[i] = f[j] && check ( j + 1, i );
}
}
puts ( f[n << 1] ? "Yes" : "No" );
return 0;
}
最新文章
- (一)Netty源码学习笔记之概念解读
- WebStorm按Tab建快速生成代码模块
- CGCDSSQ
- HDU 5919 Sequence II 主席树
- 基于python的堡垒机
- CSS3选择器(二)--表单
- 【nginx】常见的陷阱和错误
- JS 之性能优化(1)
- 硬盘缓存的最佳方案,DiskLruCache完全解析
- Stacked injection--堆叠注入--堆查询注入
- Spring (二) OOP V.S AOP
- [置顶] iOS学习笔记47——图片异步加载之EGOImageLoading
- 对bootstrap不同版本的总结
- Windows PE入门基础知识:Windows PE的作用、命名规则、启动方式、启动原理
- 如何从零开始系统化学习视觉SLAM?
- ST&;倍增LCA
- Django REST framework 第二章 Request and Response
- hbase0.94.11版本和hbase1.4.9版本的benchamark区别
- Python3模块-random、hashlib和base64
- coredns 代理consul 运行noamd 部署的应用
热门文章
- Vue系列教程(一)之初识Vue
- 微服务架构 | 3.2 Alibaba Nacos 注册中心
- 《剑指offer》面试题58 - I. 翻转单词顺序
- Xbatis:SpringBoot 数据管理框架
- 短视频正当时,如何让你的App快速构建视频创作能力?
- gin框架使用Air实时加载
- linux正则转换csv文件
- [JavaWeb]Log4j的前因后果
- Codeforces Round #742 (Div. 2)
- Sublime Text 官方网站 http://www.sublimetext.com