ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)B Binary Encoding
2024-10-07 05:41:17
B:
现在有一种新的2进制表示法,要你求出0~m-1的每个数的表示。
规则如下:n 是满足 m<=2n 最小数。
而0~m-1的数只能够用n-1个位和n个位来表示。
对于n个位表示的数来说不能有n-1个位表示的数前缀。(如果3表示101那么就不能有10去表示前面的数。
要求要全部数的位数加起来最小, 数从小到大排。
题解:我们先要求出n。
如果是m == 2n 来说。我们不会有n-1位来表示数。
证明:我们有 m/2 个 n-1位数,每一个n-1位数在尾部加上0或者1就可以变成n位的数,
1个n-1位数可以变成2个,所以m/2个变成m个n位数。所以就没有n-1位的数。
如果m < 2n 。同样的我们还是有 2n-1 个n-1位的数,因为一个n-1位的数可以变成2个n位的数,我们从后往前把一个n-1位的数变成2个(从后往前满足从小到大),直到凑齐m个数。
最新文章
- node实现watcher的困境
- 用Tensorflow让神经网络自动创造音乐
- HDU1434(终于用优先队列a了一题。。。了解度+1)
- 把DataTable转换为泛型List<;T>;或是JSON
- 最简单的Web服务器
- 用for循环打印菱形
- HDU 1024 Max Sum Plus Plus --- dp+滚动数组
- 从idea到ipo
- JavaPersistenceWithHibernate第二版笔记-第五章-Mapping value types-002使用@Embeddable
- Python面向对象1
- DirectoryExists
- 【转】ubuntu打包压缩命令总结
- 开机启动tomcat
- linux之普通用户与root用户之间切换
- 实现winfrom进度条及进度信息提示,winfrom程序假死处理
- vs2010打开设计器出现错误
- POI读取公式的值
- php运行
- python int异常 python isdigit
- 将 Intent 序列化,像 Uri 一样传递 Intent!!!