P2328 [SCOI2005]超级格雷码】的更多相关文章

P2328 [SCOI2005]超级格雷码 暴力出奇迹喵! 这是一道模拟题 你会发现和 P5657 格雷码[民间数据]有异曲同工之妙,这道题直接按照上边链接题目的操作步骤 暴力模拟 就可以啊 我们观察 n=2n=2n=2 时候格雷码是这样操作的 在线引用链接题面描述: 带大家模拟一下: 比如 n=4 先生成1位: 也就是 0,1,2,3 然后生成两位: 也就是先把上一层的复制下来,顺序排好,然后再逆序排一遍,然后再顺序排一遍,再逆序排一遍...然后一小层作为一个分界,每一层的最左端都依次加上相应…
2021.12.15 P2328 [SCOI2005]超级格雷码(找规律填空) https://www.luogu.com.cn/problem/P2328 题意: 输出n位B进制的格雷码. 分析: 好吧,咱先写出来一部分格雷码试试. 当 \(n=2,B=2\) 时(这个表咱竖着看) 00 10 01 11 似乎没有什么规律,咱继续,当\(n=3,B=3\) 时(这个表咱竖着看) 000 122 200 001 121 201 002 120 202 012 110 212 011 111 21…
1081: [SCOI2005]超级格雷码 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 301  Solved: 159[Submit][Status][Discuss] Description 著名的格雷码是指2n个不同n位二进制数(即0~2n-1,不足n位在前补零)的一个排列,这个排列满足相邻的两个二进制数的n位数字中最多只有一个数字不同(例如003和001就有一个数位不同,而003和030有两个数位不同,不符合条件).例如n=2时,(00…
[BZOJ1081][SCOI2005]超级格雷码(搜索) 题面 BZOJ 洛谷 题解 找个规律吧,自己随便手玩一下,就按照正常的顺序枚举一下,发现分奇偶位考虑正序还是逆序就好了. #include<iostream> #include<cstdio> using namespace std; int a[20],tot,n,B; void dfs(int x,int p) { if(x==n+1) { for(int i=n;i;--i)a[i]<10?printf(&qu…
1081: [SCOI2005]超级格雷码 题目:传送门 题解: 又是一道水题... 因为之前做过所以知道规律: 如n=2 B=3: 00 10 20    21 11 01    02 12 22 不难看出,偶数结尾的从前面从小到大,奇数的话就是大到小 代码: #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> usin…
Description 著名的格雷码是指2n个不同n位二进制数(即0~2n-1,不足n位在前补零)的一个排列,这个排列满足相邻的两个二进制数的n位数字中最多只有一个数字不同(例如003和001就有一个数位不同,而003和030有两个数位不同,不符合条件).例如n=2时,(00,01,11,10)就是一个满足条件的格雷码. 所谓超级格雷码就是指Bn个不同的n位B进制数的排列满足上面的条件. 任务:给出n和B(2≤B≤36, 1≤Bn≤65535),求一个满足条件的格雷码.对于大于9的数位用A~Z表…
题目链接:BZOJ - 1081 备注:此题BZOJ上貌似没有 spj ,要把一般顺序的每个格雷码倒着输出...比如 0102 输出为 2010 题目分析 就是按照 Gray 码的生成方法写前几个出来找找规律就好了. 生成方法:以 3 位 3 进制为例 0 0 0 0 0 1 0 0 2 0 1 2 //中位写 1 ,后面镜像复制 0 1 1 0 1 0 0 2 0 //中位写 2,后面镜像复制 0 2 1 0 2 2 1 2 2 //高位写 1 ,后面镜像复制 1 2 1 ........ 代…
题目 BZOJ 洛谷 做法 爆搜真有意思 满足不重复且异或后仅一位为\(1\) 利用奇偶性交叉搜索(仅改变一位) My complete code #include<bits/stdc++.h> using namespace std; typedef int LL; LL n,B; LL a[31]; void Dfs(LL now,LL op){ if(now==n+1){ for(LL i=1;i<=n;i++) if(a[i]>9) cout<<(char)(a…
手动模拟一组样例,可以理解大致应该如何操作具体实现中,记录每一位当前应该+1还是-1,然后操作最低的位并将后面的+1和-1全部取反即可 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n,b,a[105],flag[105]; 4 void write(){ 5 for(int i=1;i<=n;i++) 6 if (a[i]<10)printf("%d",a[i]); 7 else printf(&…
The gray code is a binary numeral system where two successive values differ in only one bit. Given a non-negative integer n representing the total number of bits in the code, print the sequence of gray code. A gray code sequence must begin with 0. Fo…