【jzoj4935】【构造】
来源:互联网 发布:js设置input必填 编辑:程序博客网 时间:2024/06/15 01:01
题目大意
解题思路
我们进行二进制拆分,从低位开始,给当前位置建一个子节点,如果是1则当前点变为新建节点,否则不变,再建一个新节点,当前点不变。可以发现变节点的情况我们把方案数+1,不变的情况我们把方案数*2,这样2^30>1e9,我们可以解决所有问题。
code
#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LL long long#define min(a,b) ((a<b)?a:b)#define max(a,b) ((a>b)?a:b)#define fo(i,j,k) for(int i=j;i<=k;i++)#define fd(i,j,k) for(int i=j;i>=k;i--)using namespace std;int const maxn=60;int k,n,now,u[maxn+10],v[maxn+10];int main(){ freopen("d.in","r",stdin); freopen("d.out","w",stdout); while(scanf("%d",&k)!=EOF){ int n=1;now=1; while(k!=1){ if(k&1){ u[n]=now;v[n]=n+1;n++; now=n; } u[n]=now;v[n]=n+1;n++; k=k>>1; } printf("%d\n",n); fo(i,1,n-1)printf("%d %d\n",u[i],v[i]); } return 0;}
0 0
- 【jzoj4935】【构造】
- 【JZOJ4935】【NOIP2017GDKOI模拟1.12】b
- 【JZOJ4935】【NOIP2017GDKOI模拟1.12】b
- 构造
- 构造
- 构造
- 构造
- 构造
- 构造
- 构造、拷贝构造、析构
- 构造器(构造方法)
- 构造、拷贝构造、赋值
- 构造方法/构造器
- 拷贝构造 赋值构造
- 构造中调用构造
- 构造方法 构造器 构造函数
- 构造解决方案
- 构造函数
- Nova启动虚拟机执行过程
- [FAQ18962][voip call]使用skype、line、微信等apk进行voip通话,出现回音、啸叫、杂音、卡顿等现象
- 限制客户端访问服务器算法
- AFNetworking 使用HTTPS请求 添加证书
- 日常记录20170112----去除字符串前面所以的0
- 【jzoj4935】【构造】
- 欢迎使用CSDN-markdown编辑器
- git 上传项目到服务器
- Android studio导入工程卡以及下载第三方jar慢的问题方案
- .9path图的制作
- Spring4源码下载
- java基础算法之因式分解
- CAN总线在嵌入式Linux下驱动程序的实现
- getResources.getColor弃用与取代