P2727 Stringsobits】的更多相关文章

01串 Stringsobits 题目背景 考虑排好序的N(N<=31)位二进制数. 题目描述 他们是排列好的,而且包含所有长度为N且这个二进制数中1的位数的个数小于等于L(L<=N)的数. 你的任务是输出第i(1<=i<=长度为N的二进制数的个数)小的(注:题目这里表述不清,实际是,从最小的往大的数,数到第i个符合条件的,这个意思),长度为N,且1的位数的个数小于等于L的那个二进制数. (例:100101中,N=6,含有位数为1的个数为3). 输入输出格式 输入格式: 共一行,用…
P2727 01串 Stringsobits 24通过 55提交 题目提供者该用户不存在 标签USACO 难度普及+/提高 提交  讨论  题解 最新讨论 这题的思路是啥啊!!!跪求- 题目背景 考虑排好序的N(N<=31)位二进制数. 题目描述 他们是排列好的,而且包含所有长度为N且这个二进制数中1的位数的个数小于等于L(L<=N)的数. 你的任务是输出第i(1<=i<=长度为N的二进制数的个数)小的(注:题目这里表述不清,实际是,从最小的往大的数,数到第i个符合条件的,这个意思…
本蒟蒻又双叒叕被爆踩辣! P2727 01串 Stringsobits 其实只要理解了就会觉得这是个傻逼题! 这题给的标签是 dp,搜索,数论 但是可以用二分的思路做! Solution: 从最高位开始枚举, 我们考虑每一位,是不是只可以取0/1 那么我们就先求出当此位置为0时,它可以做到的方案数(等会再告诉你们为什么要求 我们想一想,什么时候此位该为0,什么时候此位该为1??? 我们求出它的方案数,那这个方案数是不是就是但此位为0时可以达到的最大值: 如果i比这个最大值还要大的话,此位为0是不…
看到题解里好像都是用$DP$解决的,本着禁止DP的原则,我来提供一发纯数学其实和DP本质相同的题解,前两天刚反演题,脑子炸了,本来说换换脑子,结果还是数学 首先受进制思想启发,我们不妨按位考虑,考虑这一位选一对排列编号造成的影响——即让整个数的编号向后推移了多少 容易想到,这一位选一,编号增加了之后几位满足条件任选的方案数,即第$i$位选一,$cnt$表示前几位选了几个一 $$id+=\sum_{j=0}^{min(i-1,L-cnt)}calc(i-1,j)$$ $clac(x,y)$表示前面…
StringsobitsKim Schrijvers Consider an ordered set S of strings of N (1 <= N <= 31) bits. Bits, of course, are either 0 or 1. This set of strings is interesting because it is ordered and contains all possible strings of length N that have L (1 <=…
题意:求第k大的最多有l个1的n位二进制. 题解:dp[i][j]表示长度为i最多有j个1的二进制有多少种,则有: 状态转移:dp[i][j]=dp[i-1][j]+dp[i-1][j-1],即第i位放1或者0. 边界条件:dp[0][i]=1,dp[i][0]=1. 长度为n,最多m个1的二进制可以分为: 以0开始的一部分,共有dp[n-1][m]个, 和以1开始的一部分,共有dp[n-1][m-1]个. 如果dp[n-1][m]≥k,说明第k大的就在0开始的那一部分的第k大的, 否则就是1开…
题目背景 考虑排好序的N(N<=31)位二进制数. 题目描述 他们是排列好的,而且包含所有长度为N且这个二进制数中1的位数的个数小于等于L(L<=N)的数. 你的任务是输出第i(1<=i<=长度为N的二进制数的个数)小的(注:题目这里表述不清,实际是,从最小的往大的数,数到第i个符合条件的,这个意思),长度为N,且1的位数的个数小于等于L的那个二进制数. (例:100101中,N=6,含有位数为1的个数为3). 输入输出格式 输入格式: 共一行,用空格分开的三个整数N,L,i. 输…
这题看了网上的答案的.还是很巧妙的 /* ID: yingzho1 LANG: C++ TASK: kimbits */ #include <iostream> #include <fstream> #include <string> #include <map> #include <vector> #include <set> #include <algorithm> #include <stdio.h> #…
描述 Consider an ordered set S of strings of N (1 <= N <= 31) bits. Bits, of course, are either 0 or 1. This set of strings is interesting because it is ordered and contains all possible strings of length N that have L (1 <= L <= N) or fewer bit…
题目链接 Solution 贼有意思的 DP, 也可以用组合数学做. \(f[i][j]\) 代表前 \(i\) 位,有 \(j\) 个 \(1\) 的方案数. 转移方程很简单 : \(f[i][j]=f[i-1][j]+f[i-1][j-1]\) 然后可以按位判断答案上是否为 \(1\) . 如何判断? 如果当前 \(f[i][L]\) 小于 \(I\) ,那么我们所要的方案一定 \(i\) 位上为 \(1\); 同时用 \(I\) 减去 \(f[i][L]\) , \(L\) 同时减掉 \(…
描述 Consider an ordered set S of strings of N (1 <= N <= 31) bits. Bits, of course, are either 0 or 1. This set of strings is interesting because it is ordered and contains all possible strings of length N that have L (1 <= L <= N) or fewer bit…
常见优化 单调队列 形式 dp[i]=min{f(k)} dp[i]=max{f(k)} 要求 f(k)是关于k的函数 k的范围和i有关 转移方法 维护一个单调递增(减)的队列,可以在两头弹出元素,一头压入元素. 队列中维护的是两个值.一个是位置,这和k的范围有关系,另外一个是f(k)的值,这个用来维护单调性,当然如果f(k)的值可以利用dp值在O(1)的时间内计算出来的话队列中可以只维护一个表示位置的变量. 枚举到一个i的时候,首先判断队首元素的位置是否已经不满足k的范围了,如果不满足就将队首…
StringsobitsKim Schrijvers Consider an ordered set S of strings of N (1 <= N <= 31) bits. Bits, of course, are either 0 or 1. This set of strings is interesting because it is ordered and contains all possible strings of length N that have L (1 <=…
基本算法    这些都是非常基本的的算法,希望所有学习的人都能理解!        1.数论算法      求两数的最大公约数      function gcd(a,b:integer):integer;      begin      if b=0 then gcd:=a      else gcd:=gcd (b,a mod b);      end ;           求两数的最小公倍数      function lcm(a,b:integer):integer;      beg…