题目:

蒜头国有 n 座城市,编号分别为 0,1,2,3,…,n−1。编号为 x 和 y的两座城市之间如果要修高速公路,必须花费 x∣y 个金币,其中|表示二进制按位或。

吝啬的国王想要花最少的价格修建高速公路,使得所有城市可以通过若干条高速公路互相达到。现在请你求出 n=2019时,一共有多少不同的方案,能让所有城市连通并且造价最低。方案数可能很大,你只需输出对 10^9+7取模的结果。

分析:

若 x<y,则 x|y>=y,即两座城市之间修路的话,最少的花费就是城市编号最高的编号数。

每座城市最少花费可以连接的城市数目是 2^(二进制中的1的个数)-1个。比如:编号二进制位 1001,它所能连接的最少花费的城市是1000,0001,0000。

并且可以知道不会重复连接,因为每座城市最少花费连接的城市是其编号二进制的子集(即比起编号小)的城市。

所以总共的方案数就是每座城市可能连接的最少花费的城市数相乘。

代码:

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;

typedef long long ll;
const int mmod=1e9+7;

ll powmod(ll x,ll n,ll m){
    ll res=1;
    while(n){
        if(n&1){
            res= (x*res)%m;
        }
        x = (x*x)%m;
        n>>=1;
    }
    return res;
}

int num1(int n){//求n的二进制中1的个数
    int cnt=0;
    while(n){
        n=n&(n-1);
        cnt++;
    }
    return cnt;
}

int main(){
    int n=2019;
    ll num[2050];
    num[0]=2018;
    ll res=1;
    for(int i=1;i<2019;i++){
        //num[i] = powmod(2,num1(i),mmod)-1;
        num[i]=(1<<(num1(i)))-1;
        res = (res*num[i])%mmod;
    }
    printf("%d\n",res);
    return 0;
}

2019 蓝桥杯省赛 A 组模拟赛(一) D. 结果填空:修建公路 (二进制)相关推荐

  1. 2019 蓝桥杯省赛 B 组模拟赛(一)蒜厂年会

    2019 蓝桥杯省赛 B 组模拟赛(一)蒜厂年会 这题有两种情况 1.最大的和是在0~n-1 2.最大的和越过了首尾 这时候只要用n个数的和 - 0~n-1 的连续的最小和 这是求连续子集最大.最小 ...

  2. 2019 蓝桥杯省赛 B 组模拟赛(一)——计蒜客(未完待续)

    比赛链接: 2019 蓝桥杯省赛 B 组模拟赛(一) 友情提示: 蓝桥杯的头文件,如果不是都记得,可以直接万能头文件 #include <bits/stdc++.h>, 不过有的时候,这样 ...

  3. 2018 蓝桥杯省赛 B 组模拟赛(一)--封印之门

    题目链接:https://nanti.jisuanke.com/t/A1594 蒜头君被暗黑军团包围在一座岛上,所有通往近卫军团的路都有暗黑军团把手.幸运的是,小岛上有一扇上古之神打造的封印之门,可以 ...

  4. 52-2018 蓝桥杯省赛 B 组模拟赛(一)java

    最近蒜头君喜欢上了U型数字,所谓U型数字,就是这个数字的每一位先严格单调递减,后严格单调递增.比如 212212 就是一个U型数字,但是 333333, 9898, 567567, 313133131 ...

  5. 2020年 第11届 蓝桥杯 C/C++ B组 省赛真题详解及小结【第1场省赛2020.7.5】【Java版】

    蓝桥杯 Java B组 省赛真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 注意:部分代码及程序 源自 蓝桥杯 官网视频(历年真题解析) 郑未老师. 2013年 第04届 蓝桥杯 ...

  6. 第一届『Citric杯』NOIP提高组模拟赛 题解

    [官方题解]第一届『Citric杯』NOIP提高组模拟赛 题解 第一题 柠檬超市 这题是本次模拟赛的送分题.做法显然. 但是注意此题有一个陷阱: 注意W和C的规模都是10^9,所以如果直接用doubl ...

  7. python解答蓝桥杯真题3 省模拟赛 计算机存储中有多少字节

    python解答蓝桥杯真题3 省模拟赛 计算机存储中有多少字节 题目 问题描述 在计算机存储中,12.5MB是多少字节? 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整 ...

  8. 2015年第六届蓝桥杯C/C++B组省赛题目解析

    1.奖券数目 有些人很迷信数字,比如带"4"的数字,认为和"死"谐音,就觉得不吉利. 虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是 ...

  9. 计蒜客2019蓝桥杯省赛B组模拟赛(一)题目及解析

    蓝桥杯历年真题题目及题解目录汇总   A. 结果填空:钟表 题库链接 分值: 5 一天蒜头君 22:28:45 开始睡觉,06:24:26 醒来之后,蒜头君在想,今天我睡了多久? 请你告诉蒜头君睡了& ...

  10. 【模拟赛】2019 蓝桥杯省赛 A 组模拟赛(一)

    A(填) 阶乘位数 蒜头君对阶乘产生了兴趣,他列出了前 10 个正整数的阶乘以及对应位数的表: 对于蒜头君来说,再往后就很难计算了.他试图寻找阶乘位数的规律,但是失败了.现在请你帮他计算出第一个正整数 ...

最新文章

  1. 为什么我在gpu上训练模型但是gpu利用率为0且运行速度还是很慢?
  2. KindEditor ASP.NET 上传/浏览服务器 附源码
  3. CodeBlocks: 生成的exe文件自定义一个图标
  4. WatchOS系统开发大全(6)-WKInterfaceLabel
  5. git 忽略文件 .gitignore 以及规则
  6. ajax请求flask以后得到的响应查看
  7. 用 SAP ABAP 编写的俄罗斯游戏
  8. 数据可视化【十】绘制地图
  9. 利用new Object创建对象
  10. Day4 单用户模式、救援模式、克隆虚拟机、linux机器相互登录
  11. 搭建samba映射网络驱动器
  12. 《layui宇宙版教程》:分页组件laypage
  13. halcon 缺陷检测 表面凸点检测
  14. 关于XAMPP Apache 启动失败的问题
  15. docker部署mysql出错:mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 13 - Permission denied)
  16. Windows批处理学习(一)——MS-DOS命令
  17. 互联网公司那些价值观-阿里巴巴
  18. HarmonyOS使用ArkUI绘制圣诞树
  19. html怎么把图片做成抖动效果,css简单实现图片logo抖动摇晃效果
  20. 每个程序员都该知道的五大定律

热门文章

  1. AD 20联合KeyShot实现渲染
  2. YOLOv5改进系列(1)——添加SE注意力机制
  3. vc++6.0和visual studio 2005
  4. Hive中的几种排序方式
  5. 华北电大学计算机考研资料汇总
  6. Linux下查看CPU信息和GPU显卡信息
  7. DeviceIoControl接口
  8. RSD 遥感数据处理——对象分析
  9. C练题笔记之:Leetcode-200. 岛屿数量
  10. 【附源码】计算机毕业设计java智慧校园防疫管理平台设计与实现