题意略。

思路:

第一问:

递归地来写,找对称,发现关于(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. 小白学python-day01-电脑结构知识

    作为一个”0“基础的经济学学士来说,专业分类选择了经统,多多少少和计算机有点关系,从今天开始学习python. 但行努力,莫问前程. day01学习电脑结构等知识. 因为这些知识是 有规则的,客观的文 ...

  2. linux初学者-CIFS网络文件系统篇

    linux初学者-CIFS网络文件系统篇 CIFS是一种通用网络文件系统,主要用于网络设备之间的文件共享.CIFS可以在linux系统和windows系统之间共享文件,因此这种文件系统主要用于客户端是 ...

  3. 算法与数据结构基础 - 广度优先搜索(BFS)

    BFS基础 广度优先搜索(Breadth First Search)用于按离始节点距离.由近到远渐次访问图的节点,可视化BFS 通常使用队列(queue)结构模拟BFS过程,关于queue见:算法与数 ...

  4. web设计_9_CSS常用布局,响应式

    一个完整的页面和其中的组件该如何具备灵活性. 怎么样利用CSS来实现无论屏幕.窗口以及字体的大小如何变化,都可以自由扩展和收缩的分栏式页面. 要决定使用流动布局.弹性布局还是固定宽度的布局,得由项目的 ...

  5. 10w数组去重,排序,找最多出现次数

    配置在博客底部 主函数 package ooDay11.zy13; import ooDay11.zy13.hanshu.GetKeyList;import ooDay11.zy13.hanshu.G ...

  6. 洛谷 P3811 题解

    题面 利用暴力快速幂O(nlogn)会TLE掉: 所以对于求1~n的所有逆元要用递推公式: #include <bits/stdc++.h> using namespace std; ]; ...

  7. ubuntu .deb .tar.gz .tar.bz2 .rmp 和命令方式安装软件的方法

    今天在Ubuntu11.10中安装Google chrome浏览器是遇到了问题,下载好的".deb"格式的安装文件google-chrome-stable.deb双击后或者右键快捷 ...

  8. JDK的可视化工具系列 (四) JConsole、VisualVM

    JConsole: Java监视与管理控制台 代码清单1: import java.util.*; public class JConsoleDemo { static class OOMObject ...

  9. 100天搞定机器学习|Day15 朴素贝叶斯

    Day15,开始学习朴素贝叶斯,先了解一下贝爷,以示敬意. 托马斯·贝叶斯 (Thomas Bayes),英国神学家.数学家.数理统计学家和哲学家,1702年出生于英国伦敦,做过神甫:1742年成为英 ...

  10. 优雅的对象转换解决方案-MapStruct及其入门(一)

    第一次看到 MapStruct 的时候, 我个人非常的开心. 因为其跟我内心里面的想法不谋而合. 1 MapStruct 是什么? 1.1 JavaBean 的困扰 对于代码中 JavaBean之间的 ...