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

浙江手机版建站系统哪个好网站搭建原理

浙江手机版建站系统哪个好,网站搭建原理,dw软件安装包,网络运营是做什么的工作描述 一共有2N2N 个城市需要连通。这些城市位于同一条直线上,所有相邻的两个城市之间的距离都相同,都是 1 个单位长度。其编号自西向东从1 号一直到 2N2N 号。 每个铁道都将被建设在两个城市之间,可以双向连通这两个城市(例如,如…

描述

一共有2N2N 个城市需要连通。这些城市位于同一条直线上,所有相邻的两个城市之间的距离都相同,都是 1 个单位长度。其编号自西向东从1 号一直到 2N2N 号。

每个铁道都将被建设在两个城市之间,可以双向连通这两个城市(例如,如果一个铁道连通了城市A 和城市B ,那么既可以从城市A 坐车到城市B ,也可以从城市B 坐车到城市A ,距离相同,都是这两个城市之间的直线距离)。铁道上的列车只会在连接的这两个城市之间往返,一个城市可以连接多个铁道。因此,经常需要在一个城市下车然后换乘其他铁道上的列车。

如果每两个城市之间都建一个铁道,从一个城市到另一个城市就不需要换乘,但需要建设的铁道就太多了!

如果只在相邻两个城市之间建设铁道,只需要建设2N2N -1 个铁道,但可能会导致非常多次换乘,而大部分人都讨厌换乘!

国家没有钱建设那么多铁道,但他讨厌频繁的换乘!喜欢研究图论和数据结构的你很快想到了一个折中的方案:

一共建设N 种铁道,对于第i 种铁道,会建设 2N2N −− ii 条,长度皆为2i2i −1 个单位长度,其中第 j 条会连通1+ 2 ii ×(j−1) 号城市和 2ii ×j 号城市。

作为规划建设者,是否能记清任意两个城市之间的最短乘车距离。为此,你需要先编写程序,查询Q 组城市之间的最短乘车距离。其中,第i 次查询,需要输出乘坐铁道上的列车从ai 号城市到bi号城市需要的最短乘车距离。

输入

第一行输入两个正整数N ,Q (1≤N≤30,1≤Q≤222 00)。 N 表示建设的铁道种类数,且被用于表示城市的数量和每种铁路的建设数,Q 表示查询次数。 接下来Q 行,其中第i 行对应第i 次查询。

对于每次查询: 输入两个正整数ai 和bi ( 对于任意1≤i≤Q 满足1≤ai ≤bi≤2NN ),表示第i 次询问查询乘坐铁道上的列车从ai 号城市到bi 号城市需要的最短乘车距离。

输出

输出Q 行,其中第i 行对应第i 次查询。

对于每次查询: 输出一个整数,代表乘坐铁道上的列车从ai 号城市到bi 号城市需要的最短乘车距离。

样例

输入
3 2
2 3
3 6
输出
5
15

简洁无注释代码:

#include<bits/stdc++.h>
using namespace std;
long long n,q;
long long f[32];
long long a[32],b[32];
int main()
{scanf("%lld%lld",&n,&q);f[0]=1;for(int i=1;i<=30;i++)f[i]=f[i-1]*2;long long ans,at,bt;long long x,y;while(q--){memset(a,0,sizeof(a)) ;memset(b,0,sizeof(b)) ;ans=at=bt=0;scanf("%lld%lld",&x,&y);x--,y--;if(x==0) a[++at]=0;if(y==0) b[++bt]=0;while(x){a[++at]=x& 1ll;x/=2;}while(y){b[++bt]=y& 1ll;y/=2;}a[at+1] =b[bt+1]=0;int t;t=max(at,bt);while(a[t]==b[t]&& t) t--;while(t) {if(a[t]!=a[t+1]) ans+=f[t]-1;if(b[t]!=b[t+1]) ans+=f[t]-1;t--;			 }cout<<ans<<endl;}return 0;
}

 详细注释款:

/*在最少换乘次数下的最短乘车距离
二进制分解
假设城市x和城市y 转成二进制,找到他们的最长公共前缀
从最高位开始比较,找到第一个不同的二进制位,就是x和y的分叉点最短路计算:
从分叉点开始,向下遍历每一位
如果当前位和前一位不同,a[i]!=a[i+1] or b[i]!=b[i+1]
说明要换乘
*/
#include<bits/stdc++.h>
using namespace std;
long long n,q;
long long f[32];//2^次方的预处理
long long a[32],b[32];
int main()
{scanf("%lld%lld",&n,&q);f[0]=1;for(int i=1;i<=30;i++)f[i]=f[i-1]*2;long long ans,at,bt;long long x,y;//处理每个查询while(q--){//初始化a,b数组,用来存城市a,b的二进制位memset(a,0,sizeof(a)) ;memset(b,0,sizeof(b)) ;ans=at=bt=0;scanf("%lld%lld",&x,&y);x--,y--;//特殊情况处理if(x==0) a[++at]=0;if(y==0) b[++bt]=0;//将x,y转成二进制存在a,b数组里while(x){a[++at]=x& 1ll;x/=2;}while(y){b[++bt]=y& 1ll;y/=2;}//设置a和b数组的结尾标记a[at+1] =b[bt+1]=0;//找a,b二进制最高的不同位int t;t=max(at,bt);while(a[t]==b[t]&& t) t--;//从最高不同位开始向下计算最短乘车距离while(t) {//如果当前位与前一位不同,则加上对应的距离if(a[t]!=a[t+1]) ans+=f[t]-1;if(b[t]!=b[t+1]) ans+=f[t]-1;t--;			 }cout<<ans<<endl;}return 0;
}

http://www.yayakq.cn/news/352061/

相关文章:

  • 给企业做网站如何定价SEO案例网站建设
  • 申请网站就是做网站吗如何做网站登录界面
  • 网站权重降低wordpress如何导入数据
  • 做外贸网站需要注意些什么问题网站建设实力宣传海报
  • 做电影网站有什么好处牡丹江百度推广
  • 可信赖的响应式网站网站建设 app开发 小程序
  • 如何做网站微信支付Linux主机设置网站首页
  • 响应式网站设计开发网站的国际化 怎么做
  • 山西省网站建设番禺网站建设外包
  • 企业网站建设可以分为哪些层次网站设计制作步骤
  • 无刷新网站小学网站模板源码
  • 国外ps教程网站好用的免费网站
  • 天津企业网站制作公司wordpress福利
  • 为什么广告不集中建设广告网站asp.ne做网站
  • ps软件下载网站意识形态网站建设
  • 网站类别页面怎么做ih5做的网站怎么上传
  • 那些公司需要网站开发工程师产品彩页模板
  • 招聘网站开发的要求如何做电商网站
  • 搭建网站服务器多少钱邯郸中材建设有限责任公司网站
  • 网站建设哪家好推荐万维科技做酒类网站
  • asp网站如何建设dedecms网站入侵
  • 关于推进网站集约化建设的讲话.net core 做网站
  • 湖南省建设信息网站中国工业机械加工网
  • 视觉营销网站如何去除wordpress登录页面图标
  • 灰色系网站免费学生网页制作成品
  • 男女做暖暖试看网站wordpress 安装 服务器 系统
  • 网站建设的ppt现在学什么行业和技术前景好
  • 南昌二手网站开发方案天津做网站网页的公司
  • 织梦可以做视频网站么全自动网页制作系统源码
  • 网站建设马鞍山青岛市城乡和住房建设局