题意略。

思路:

第一问:

递归地来写,找对称,发现关于(1<<y) - 1和(1<<y)对称的数字做 & 结果为0。

第二问:

6,7特殊考虑。循环左移(1<<y) ~ (1<<(y + 1) - 1),可以保证这个区间内的值与下标做 & 结果不为0。然而如果在这个段内只有1<<y这一个数,那么

我们无法循环左移,此时要特判为NO。

详见代码:

#include<bits/stdc++.h>
#define maxn 50
#define maxn2 100005
using namespace std; int one[maxn],tail;
int ans1[maxn2],ans2[maxn2];
int six[] = {,,,,,};
int seven[] = {,,,,,,}; void init(){
one[] = ;
tail += ;
for(int i = ;(<<i) - <= ;++i){
one[i] = (<<i) - ;
tail += ;
}
}
int cnt1(int x){
int ret = ;
while(x){
x = x & (x - );
++ret;
}
return ret;
}
void construct(int x){
if(x <= ) return;
int pos = lower_bound(one,one + tail,x) - one - ;
int mid = one[pos] + ;
for(int i = mid;i <= x;++i) swap(ans2[i],ans2[mid - (i - mid) - ]);
x = mid - (x - mid) - - ;
construct(x);
} int main(){
init();
int n;
scanf("%d",&n);
if(n & ) printf("NO\n");
else{
printf("YES\n");
for(int i = ;i <= n;++i) ans2[i] = i;
construct(n);
printf("%d",ans2[]);
for(int i = ;i <= n;++i) printf(" %d",ans2[i]);
printf("\n");
} if(n <= || cnt1(n) == ) printf("NO\n");
else if(n == ){
printf("YES\n");
printf("%d",six[]);
for(int i = ;i < ;++i) printf(" %d",six[i]);
printf("\n");
}
else if(n == ){
printf("YES\n");
printf("%d",seven[]);
for(int i = ;i < ;++i) printf(" %d",seven[i]);
printf("\n");
}
else{
printf("YES\n");
for(int i = ;i <= ;++i) ans1[i] = seven[i - ];
int lft = ,rht = min((lft<<) - ,n);
while(lft < n){
for(int i = lft;i <= rht;++i){
if(i < rht) ans1[i] = i + ;
else ans1[i] = lft;
}
lft = lft<<;
rht = min((lft<<) - ,n);
}
printf("%d",ans1[]);
for(int i = ;i <= n;++i) printf(" %d",ans1[i]);
printf("\n");
}
return ;
}

CodeForces 909F的更多相关文章

  1. python爬虫学习(5) —— 扒一下codeforces题面

    上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...

  2. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

  3. 【Codeforces 738C】Road to Cinema

    http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...

  4. 【Codeforces 738A】Interview with Oleg

    http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...

  5. CodeForces - 662A Gambling Nim

    http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...

  6. CodeForces - 274B Zero Tree

    http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ...

  7. CodeForces - 261B Maxim and Restaurant

    http://codeforces.com/problemset/problem/261/B 题目大意:给定n个数a1-an(n<=50,ai<=50),随机打乱后,记Si=a1+a2+a ...

  8. CodeForces - 696B Puzzles

    http://codeforces.com/problemset/problem/696/B 题目大意: 这是一颗有n个点的树,你从根开始游走,每当你第一次到达一个点时,把这个点的权记为(你已经到过不 ...

  9. CodeForces - 148D Bag of mice

    http://codeforces.com/problemset/problem/148/D 题目大意: 原来袋子里有w只白鼠和b只黑鼠 龙和王妃轮流从袋子里抓老鼠.谁先抓到白色老鼠谁就赢. 王妃每次 ...

随机推荐

  1. tar 命令详解(持续更新)

    可以用man tar查看tar命令使用的权威解释 Main operation mode: -c: 建立压缩档案 -r:向压缩归档文件末尾追加文件 -t:查看内容 -u:更新原压缩包中的文件 -x:解 ...

  2. JavaScript Boolean(逻辑)对象

    Boolean(逻辑)对象用于将非逻辑值转换为逻辑值(true 或者 false). 实例 检查逻辑值 检查逻辑对象是 true 还是 false. 完整的 Boolean 对象参考手册 我们提供 J ...

  3. spring读取xml配置文件(二)

    一.当spring解析完配置文件名的占位符后,就开始refresh容器 @Override public void refresh() throws BeansException, IllegalSt ...

  4. Angular JS 中的内置方法之filter

    通过过滤器可以实现很多数据格式化的功能 常用方法形如{{ data | uppercase}} 或者是{{ 123.456 | number:2 }} 也可以通过在控制器中注入$filter来实现功能 ...

  5. 【MySQL】java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\xB3' for column

    问题原因: 输入内容包含特殊字符,MySQL 中的列不支持. 解决方法 多数是修改 MySQL 的数据库和表结构,CHARSET 改为 utf8mb4,但本人测试还是不能传入 emoji. 后来在代码 ...

  6. vue3.0中的双向数据绑定方法

    熟悉vue的人都知道在vue2.x之前都是使用object.defineProperty来实现双向数据绑定的 而在vue3.0中这个方法被取代了 1. 为什么要替换Object.definePrope ...

  7. JDBC连接池-C3P0连接

    JDBC连接池-C3P0连接 c3p0连接池的学习英语好的看英文原版      c3p0 - JDBC3 Connection and Statement Pooling 使用c3p0连接池  三种方 ...

  8. c#将字符串转化为合理的文件名

    string name = System.Text.RegularExpressions.Regex.Replace(url, "[<>/\\|:\"?*]" ...

  9. 6.源码分析---和dubbo相比SOFARPC是如何实现负载均衡的?

    官方目前建议使用的负载均衡包括以下几种: random(随机算法) localPref(本地优先算法) roundRobin(轮询算法) consistentHash(一致性hash算法) 所以我们接 ...

  10. python异常处理-异常捕获-抛出异常-断言-自定义异常-UDP通信-socketserver模块应用-3

    异常捕获 异常:程序在运行过程中出现了不可预知的错误,并且该错误没有对应的处理机制,那么就会以异常的形式表现出来 影响:整个程序无法再正常运行 异常的结构 异常的类型 NameError 异常的信息 ...