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

安徽省公共资源交易中心网站做外单的网站

安徽省公共资源交易中心网站,做外单的网站,网站建设技术支持有什么,wordpress开启vip会员查看原题描述: 题目精炼: 给定N个建筑物的位置和一个距离D,选取3个建筑物作为埋伏点,找出所有可能的建筑物组合,使得每组中的建筑物之间的最大距离不超过D。最后,输出不同埋伏方案的数量并对99997867取模。 识…

原题描述: 

题目精炼

   给定N个建筑物的位置和一个距离D,选取3个建筑物作为埋伏点,找出所有可能的建筑物组合,使得每组中的建筑物之间的最大距离不超过D。最后,输出不同埋伏方案的数量并对99997867取模。

识别问题

   由于此题的建筑物是一个单调递增的数组(单调性),并且使用“同向双指针”来维护一段区间,保证(判断条件):

        1)right - left +1 >= 3
        2)buildings[right] - buildings[left] <= D
        3)right < buildings.length 或者 left < buildings.lengrh - 2

   因此,我们可以使用“滑动窗口”来求解。

滑动窗口解题思路:

1)左右指针初始化

int left = 0;
int right = 2;

2)满足条件进窗口

注意,要先判断right是否小于数组长度,否则会越界

while(right < buildings.length && buildings[right] - buildings[left] <= D){right++;
}

3)更新结果

此处涉及到求解组合数量问题,为了防止一段区间内,子集重复的问题,每次以buildings[left]为基准,在剩余的buildings中选取两个进行组合,公式为

C(n, 2) = \binom{n}{2} = \frac{n!}{2!(n-2)!} = \frac{n(n-1)}{2}

但是,此处涉及到两个很大的整数相乘,会出现溢出的问题,因此我们可以使用更大的整数类型,将n*(n-1)转换为long类型,并对每次累加后的结果%99997867 防止溢出。

int n = right - left - 1;
long p =((long)n *(n-1))>>1;
count =(count + p)%99997867;

当因为right>=buildings.length而跳出循环时,说明此时没有更大的值了,收集完结果后要对right--,使得right始终停留在最右边界,从而可以继续判断,等待left缩小窗口

if(right >= buildings.length){right--;
}

4)出窗口

left++;

其中,进窗口,更新结果,出窗口是一个不断循环的过程,因此,最终代码为:

import java.util.Scanner;
public class ByteDance_BuildingCombinations {public static void main(String[] args) {Scanner in = new Scanner(System.in);int N = in.nextInt();int D = in.nextInt();int[] buildings = new int[N];for (int i = 0; i < N; i++) {buildings[i] = in.nextInt();}long count = slide(buildings,D);System.out.println(count);}public static long slide(int[] buildings, int D){long count = 0;int left = 0;int right = 2;while(left < buildings.length - 2){while(right < buildings.length && buildings[right] - buildings[left] <= D){right++;}int n = right - left - 1;long p =((long)n *(n-1))>>1;count =(count + p)%99997867;if(right >= buildings.length){right--;}left++;}return count;}
}


文章转载自:

http://r3hn93PV.bhgnj.cn
http://1KoHspBm.bhgnj.cn
http://HKYUaVBm.bhgnj.cn
http://rKJcZPLC.bhgnj.cn
http://OrQ42ixg.bhgnj.cn
http://rurbvH61.bhgnj.cn
http://avs0tIUI.bhgnj.cn
http://0xhMIRqG.bhgnj.cn
http://WnHrWOri.bhgnj.cn
http://xpoTPdLI.bhgnj.cn
http://O7Aog1am.bhgnj.cn
http://0ltanEG3.bhgnj.cn
http://gA31j3y5.bhgnj.cn
http://T3clElaJ.bhgnj.cn
http://mKCMnbl6.bhgnj.cn
http://CFcP5uh4.bhgnj.cn
http://idnfjt31.bhgnj.cn
http://4YfKMOy2.bhgnj.cn
http://IkCXMrPS.bhgnj.cn
http://bAiSugYU.bhgnj.cn
http://PSIzw4yM.bhgnj.cn
http://o2cal7vm.bhgnj.cn
http://JzKnIo8g.bhgnj.cn
http://zexOiAgR.bhgnj.cn
http://BxcbOSOA.bhgnj.cn
http://oakUA7nJ.bhgnj.cn
http://7ygtTmDg.bhgnj.cn
http://bNZwwCUD.bhgnj.cn
http://laS9rUGB.bhgnj.cn
http://ZwKxdhB4.bhgnj.cn
http://www.dtcms.com/wzjs/767210.html

相关文章:

  • 赣州做网站优化网络营销内容定位
  • 湖北建设部网站官网成都网站排名优化开发
  • paypal网站集成网页设计与制作微课教程第4版李敏
  • 网站建设属于无形资产电子贺卡app
  • 在阿里巴巴上做网站需要什么条件私密浏览器在线观看
  • 注册网站怎么做网站黄页88推广多少钱
  • 免费建设网站教程做网页的代码
  • 网站开发需求文档模板带er图你是网站设计有限公司的项目经理
  • 地方志网站建设汕头网站建设运营团队
  • 网站建设500错误代码优化课程体系
  • 网站在哪做seo网站推广免费
  • 沈阳市城乡建设网站网站域名骗子
  • 有没有网站做悬赏的制作宣传片视频
  • 金华企业做网站附近最近的广告公司
  • 网站建设任务清单虚拟主机多个网站
  • 免费做网站软件视频字体图标网站
  • 做网站要学多久云系统wordpress
  • 支付功能网站建设wordpress 本机模拟
  • 申请网站建设经费求网站懂的说下开车
  • wordpress构建企业网站四川建设厅官网查询官网
  • 网站建设制作 南京公司网站转移
  • 建设网站公司怎么分工展示型网站可以优化吗
  • 佛山网站建设正规公司开源网站有哪些
  • 沈阳酒店企业网站制作电子商务网站网络安全设计方案
  • 广州网站建设技术方案网站开发与维护工资
  • w3c标准网站深圳公司官网制作
  • 网站如何进行备案济南网站设计建设公司
  • 郧阳网站建设河南建设厅证件查询平台
  • 网站建设验收单模板四合一小说网站搭建教程
  • 上饶网站seo百度搜索seo怎么做