当前位置: 首页 > news >正文

网站建设图片怎么动/推销网站

网站建设图片怎么动,推销网站,做竞价的网站有利于优化吗,网站定制开发要多少钱862. 二进制数01串 ★ 输入文件&#xff1a;kimbits.in 输出文件&#xff1a;kimbits.out 简单对比 时间限制&#xff1a;1 s 内存限制&#xff1a;128 MB USACO/kimbits(译 by !Starliu ) 描述 考虑排好序的N(N<31)位二进制数。 你会发现&#xff0c;这很有趣。…

862. 二进制数01串

★   输入文件:kimbits.in   输出文件:kimbits.out   简单对比
时间限制:1 s   内存限制:128 MB

USACO/kimbits(译 by !Starliu )

描述


考虑排好序的N(N<=31)位二进制数。

你会发现,这很有趣。因为他们是排列好的,而且包含所有可能的长度为N且含有1的个数小于等于L(L<=N)的数。

你的任务是输出第I(1<=I<=长度为N的二进制数的个数)大的,长度为N,且含有1的个数小于等于L的那个二进制数。

注意:这里“长度为N”包括长度小于N的数(我们认为高位用0补齐)

格式
PROGRAM NAME: kimbits
INPUT FORMAT:(file kimbits.in)


共一行,用空格分开的三个整数N,L,I。


 
OUTPUT FORMAT:(file kimbits.out)



共一行,输出满足条件的第I大的二进制数。



SAMPLE INPUT
(file kimbits.in)
5 3 19
SAMPLE OUTPUT
(file kimbits.out)
10011

题目链接:http://cogs.cf/cogs/problem/problem.php?pid=862

分析:这道题很难,构思巧妙,先用dp求出所要求dp[i,j]前i位1的个数不大于j的方案数,然后便是printf了。

先讲一下如何计算dp[i,j]。

dp[i,j]表示前i位,1的个数不大于j的方案数。

显然:dp[i,j]=dp[i-1,j]+dp[i-1,j-1];

dp[i-1,j]表示当前第i位以0开头所得到的方案数,dp[i-1,j-1]表示当前第i位以1开头得到的方案数。

如何根据得到的dp[i,j]来printf呢?如果当前我要确定第i位,那么肯定要看dp[i-1]集合中的值判断,例如我当前确定第5位,前4位不超过3个1的方案数为15,而我现在要求第19位,则第5为1,因为19>15,为什么呢?因为第5位可能为0,1,而为0的占了15个,为1的开头也是占15个,显然19属于为1开头的数,所以输出1,输出1的同时还要更新数据即可。输出0就什么也不用更新。

更新数据是指:当前第19位要减去15,3个1要变为2个1,以更新完的数据去得到第i+1个数才能是正确的。二分对每一位判断当改位是0的时候的有多少个符合条件的数就行了

貌似代码跑的飞起来,COGS上第一道排名NO.1的题,纪念一下!

下面给出AC代码:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int maxn=32+5;
 4 typedef long long ll;
 5 ll dp[maxn][maxn],n,o=0;
 6 ll C(ll a,ll b)
 7 {
 8     if(a==0)
 9         return 1;
10     if(dp[a][b]!=-1)
11         return dp[a][b];
12     return a==1?b:dp[a][b]=(C(a-1,b)*(b-a+1))/a;
13 }
14 ll total(ll num,ll len,ll maxo)
15 {
16     ll cnt=0;
17     len=n-len-1;
18     for(ll i=0;(i+o)<=maxo;i++)
19     {
20         cnt+=C(i,len);
21     }
22     return cnt;
23 }
24 int main()
25 {
26     ll l,i,len;
27     char ans[maxn];
28     memset(dp,-1,sizeof(dp));
29     memset(ans,0,sizeof(ans));
30     freopen("kimbits.in","r",stdin);
31     freopen("kimbits.out","w",stdout);
32     cin>>n>>l>>i;
33     for(len=0;len<n;len++)
34     {
35         ll temp=total(0,len,l);
36         if(temp>=i)
37             ans[len]=0+'0';
38         else
39         {
40             ans[len]=1+'0';
41             i=i-temp;
42             o++;
43         }
44     }
45     cout<<ans<<endl;
46     return 0;
47 }

 

转载于:https://www.cnblogs.com/ECJTUACM-873284962/p/7159116.html

http://www.jmfq.cn/news/5059099.html

相关文章:

  • net网站开发找那家/网站seo关键词排名推广
  • 求推荐做ppt的网站/微博上如何做网站推广
  • 静态网站开发课程网/朔州seo
  • 个人网站的制作实验报告/湘潭营销型网站建设
  • 网站制作 南通/2024年3月新冠高峰
  • 龙岗网站建设推广报价/免费网站优化排名
  • 建设银行网站入口/上海app开发公司
  • 什么网站可以接单做设计方案/域名大全
  • 公司网站简介怎么做/全国疫情又严重了
  • 去越南做网站/百度网址大全免费下载
  • 青岛网站建设优化质量可靠/站外推广
  • nas服务器 做网站/市场营销案例100例
  • wordpress+评论+验证码/seo策划
  • 动态网站 编辑软件/企业网站seo贵不贵
  • 济阳县做网站公司/怎么弄一个自己的网址
  • 东莞企业为什么网站建设/百度开户推广多少钱
  • 2核4g做网站/全网营销系统是不是传销
  • 贵阳网站建设设计公司/网店营销策划方案
  • 软件界面设计ui培训班/站优云seo优化
  • 做门户网站的营业范围/每日财经要闻
  • 效果图网站名字/引擎优化是什么意思
  • 可以做网站挂在百度上吗/网络推广计划制定步骤
  • app网站制作公司/网站链接提交
  • 做电商需要哪些网站有哪些/淘宝代运营
  • 淘宝联盟网站推广怎么做/云搜索神器
  • 网站建设考试重点/中国免费广告网
  • 做平台的网站/营业推广的方式
  • 门户网站群建设/雅虎搜索引擎入口
  • 湘潭做网站 活动磐石网络/百度上怎么做推广
  • 网站热销榜怎么做/中国女排联赛排名