2021 ICPC上海 K.Circle of Life(构造)
Posted lwz_159
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021 ICPC上海 K.Circle of Life(构造)相关的知识,希望对你有一定的参考价值。
题目描述
题目分析
构 造 题 难 就 难 在 能 不 能 想 到 一 种 符 合 题 目 要 求 的 构 造 方 法 , 想 到 a c , 想 不 到 白 给 。 构造题难就难在能不能想到一种符合题目要求的构造方法,想到ac,想不到白给。 构造题难就难在能不能想到一种符合题目要求的构造方法,想到ac,想不到白给。
本 题 的 构 造 字 符 串 为 0110011001 ( 01 后 面 接 10 , 10 后 面 接 01 即 可 ) 本题的构造字符串为0110011001(01后面接10,10后面接01即可) 本题的构造字符串为0110011001(01后面接10,10后面接01即可)
这
样
字
符
串
只
要
2
秒
即
可
恢
复
原
位
这样字符串只要2秒即可恢复原位
这样字符串只要2秒即可恢复原位
如
:
0110011001
−
>
1001100110
−
>
0110011001
如:0110011001 -> 1001100110 -> 0110011001
如:0110011001−>1001100110−>0110011001
用
这
种
方
法
即
可
解
决
所
有
n
为
偶
数
的
情
况
。
下
面
我
们
再
来
考
虑
n
为
奇
数
的
情
况
。
用这种方法即可解决所有n为偶数的情况。下面我们再来考虑n为奇数的情况。
用这种方法即可解决所有n为偶数的情况。下面我们再来考虑n为奇数的情况。
为
了
解
决
n
为
奇
数
的
情
况
,
我
们
可
以
将
字
符
串
拆
分
为
为
一
奇
一
偶
两
部
分
,
偶
数
长
度
部
分
直
接
用
上
述
方
法
进
行
构
造
。
为了解决n为奇数的情况,我们可以将字符串拆分为为一奇一偶两部分,偶数长度部分直接用上述方法进行构造。
为了解决n为奇数的情况,我们可以将字符串拆分为为一奇一偶两部分,偶数长度部分直接用上述方法进行构造。
而
对
于
奇
数
长
度
部
分
,
我
们
则
需
要
再
构
造
一
个
字
符
串
,
使
其
也
能
在
2
秒
内
复
原
。
而对于奇数长度部分,我们则需要再构造一个字符串,使其也能在2秒内复原。
而对于奇数长度部分,我们则需要再构造一个字符串,使其也能在2秒内复原。
这 里 我 用 的 方 法 是 : 010 + 偶 数 部 分 ( 偶 数 部 分 一 定 要 用 10 开 头 ) 这里我用的方法是:010+偶数部分(偶数部分一定要用10开头) 这里我用的方法是:010+偶数部分(偶数部分一定要用10开头)
这
样
在
第
一
秒
时
,
字
符
串
会
变
为
:
100
(
第
3
位
会
与
偶
数
部
分
开
头
的
1
相
撞
,
因
此
还
是
为
0
)
+
偶
数
部
分
这样在第一秒时,字符串会变为:100 (第3位会与偶数部分开头的1相撞,因此还是为0)+偶数部分
这样在第一秒时,字符串会变为:100(第3位会与偶数部分开头的1相撞,因此还是为0)+偶数部分
第
二
秒
:
010
+
偶
数
部
分
(
第
二
秒
即
可
成
功
复
原
)
第二秒:010+偶数部分(第二秒即可成功复原)
第二秒:010+偶数部分(第二秒即可成功复原)
代码如下
#include <iostream>
#include <cstdio>
#include <cmath>
#include <string>
#include <cstring>
#include <set>
#include <map>
#include <queue>
#include <vector>
#include <algorithm>
#include <iomanip>
#define LL long long
#define ULL unsigned long long
#define PII pair<int,int>
#define PLL pair<LL,LL>
#define PDD pair<double,double>
#define x first
#define y second
using namespace std;
const int N=1e5+5,mod=998244353;
int main()
int n;
scanf("%d",&n);
if(n==1||n==3) puts("Unlucky");
else
if(n&1) //先将n转换为偶数
printf("010"); //构造的奇数部分
n-=3;
n>>=1;
for(int i=0;i<n;i++) //构造偶数部分
if(i&1) printf("01");
else printf("10");
return 0;
以上是关于2021 ICPC上海 K.Circle of Life(构造)的主要内容,如果未能解决你的问题,请参考以下文章
2021 ICPC上海 K.Circle of Life(构造)
2021 ICPC上海 K.Circle of Life(构造)
线段树-维护区间最小值和区间和2021 ICPC网络赛第一场 D: Edge of Taixuan
线段树-维护区间最小值和区间和2021 ICPC网络赛第一场 D: Edge of Taixuan