CodeForces 909F
题意略。
思路:
第一问:
递归地来写,找对称,发现关于(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的更多相关文章
- python爬虫学习(5) —— 扒一下codeforces题面
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
- 【Codeforces 738C】Road to Cinema
http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...
- 【Codeforces 738A】Interview with Oleg
http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...
- CodeForces - 662A Gambling Nim
http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...
- CodeForces - 274B Zero Tree
http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ...
- CodeForces - 261B Maxim and Restaurant
http://codeforces.com/problemset/problem/261/B 题目大意:给定n个数a1-an(n<=50,ai<=50),随机打乱后,记Si=a1+a2+a ...
- CodeForces - 696B Puzzles
http://codeforces.com/problemset/problem/696/B 题目大意: 这是一颗有n个点的树,你从根开始游走,每当你第一次到达一个点时,把这个点的权记为(你已经到过不 ...
- CodeForces - 148D Bag of mice
http://codeforces.com/problemset/problem/148/D 题目大意: 原来袋子里有w只白鼠和b只黑鼠 龙和王妃轮流从袋子里抓老鼠.谁先抓到白色老鼠谁就赢. 王妃每次 ...
随机推荐
- AQS初体验
AQS初体验 AQS是AbstractQueuedSynchronizer的简称.AQS提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架.所谓框架,AQS使用了模板方法的设计模式,为我们 ...
- K-Means(K均值)、GMM(高斯混合模型),通俗易懂,先收藏了!
1. 聚类算法都是无监督学习吗? 什么是聚类算法?聚类是一种机器学习技术,它涉及到数据点的分组.给定一组数据点,我们可以使用聚类算法将每个数据点划分为一个特定的组.理论上,同一组中的数据点应该具有相似 ...
- 小白学python-day05(2)-列表及其操作
今天是day05(2),以下是学习总结 但行努力,莫问前程. --------------------------------------------------------------------- ...
- 一文彻底搞懂Java中的环境变量
一文搞懂Java环境变量 记得刚接触Java,第一件事就是配环境变量,作为一个初学者,只知道环境变量怎样配,在加上各种IDE使我们能方便的开发,而忽略了其本质的东西,只知其然不知其所以然,随着不断的深 ...
- Tips 14:思维导图读书笔记法
Tips 14:思维导图读书笔记法作读书笔记不仅能提高阅读书.文的效率,而且能提高科学研究和写作能力.读书笔记一般分为摘录.提纲.批注.心得几种,这里特别推荐思维导图式的读书笔记. 通过思维导图先大概 ...
- 【Android】未引入包问题
Mac 上配置 Android 开发环境,遇到了下面问题: /Users/***/Documents/SVN/Android/***/1.0.3/res/values/styles.xml:21: e ...
- ubuntu下借助qt creator创建属于自己的共享库
简介: 在 Windows 上,共享库由 .dll 表示:在 Linux 上,由 .so 表示. Shared Library的优势 共享库,又称动态库或so文件,顾名思义,它可以在可执行文件启动时加 ...
- ubuntu清理系统垃圾与备份
虽然linux下不会有windows下的那么多垃圾和磁盘碎片!但还是会留下一些用不着的临时文件或是多次升级后的N个旧的内核! 1,非常有用的清理命令: sudo apt-get autoclean s ...
- spring 的权限控制:security
下面我们将实现关于Spring Security3的一系列教程. 最终的目标是整合Spring Security + Spring3MVC 完成类似于SpringSide3中mini-web的功能. ...
- WPF控件截图
//截图 RenderTargetBitmap RenderVisaulToBitmap(Visual vsual, int width, int height) { ...