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

去哪找想做网站的客户海淀高端企业网站建设

去哪找想做网站的客户,海淀高端企业网站建设,投资30元一小时赚600,哪个软件傻瓜式做网站摆渡车#xff08;题目和测试右转 洛谷P5017#xff09; 做法#xff1a;dp各种优化(剪枝) 这道题考场上看了一脸懵逼...第一眼看这 tm 不是个一维dp吗...结果按着这个朦胧的思路#xff0c;删删改改约莫0.5h#xff0c;终于过了小样例#xff0c;然后一测大样例...GG了。…摆渡车题目和测试右转 洛谷P5017 做法dp各种优化(剪枝) 这道题考场上看了一脸懵逼...第一眼看这 tm 不是个一维dp吗...结果按着这个朦胧的思路删删改改约莫0.5h终于过了小样例然后一测大样例...GG了。冥思苦想了1h最终放弃了 感谢这白费的1.5h迫使我T4打了个暴力结果AC了... 言归正传 考试完后参考了各种题解WA了N/A次终于AC了这道毒瘤题艰难的AC历程... 〇引子 首先来阐明一下题意在一条数轴上有n个点然后要求将这条数轴分为若干段左开右闭的区间要求每段的两个端点之间的距离必须 m求分段的最小总费用。 费用定义为若一个点k在区间 ( j , i ] 则这个点的费用为 i - k 可能一个位置上有多个点 总费用定义为所有点的费用和即为总费用   一如何拿分暴力? 讲解完题意接下来我们要研究一个很重要的问题如何拿分? 先看 30% 的数据 n≤20,  m≤2,  0≤ti​≤100 看着 ti 的大小很容易想到用一维数组 f[i] 表示在第 i 分钟发车的最小费用。 然后这TM不是个一维线性dp吗 我们可以枚举一个 j 即枚举前一次是在哪里发车的这样我们便得到了状态转移方程 这样一来时间复杂度就是  30%的数据是可以过的。   二如何拿中分不高也不低的分 看一下50%的数据 n ≤ 500,  m ≤ 100, 0 ≤ ti ≤ 10^4 nt^2的时间复杂完全过不了50%得数据怎么办呢 通过观察一的状态转移方程可以发现枚举一个k实际上是没必要的可以用前缀和优化 将等车人到达的时间用数组存起来peo[ i ]表示在 0 到 i 分钟内等车人的数量cost[ i ]表示在 0 到 i 分钟所有等车人到达时间的累积即将 1 到 i 分钟内到达的等车人的到达时间累加起来 就可以得到状态转移方程 分析一下时间复杂度因为只枚举了 i 和 j 所以时间复杂度降低为 50%的数据在 “少爷机” 上是稳稳的。 程序段   1 for(int i1; itm; i) 2 { 3 f[i] i*peo[i] - cost[i]; 4 for(int j0; ji-m; j) 5 f[i] min(f[i], f[j](peo[i]-peo[j])*i-(cost[i]-cost[j])); 6 }         三如何拿高分不是满分考场上的高分 自然是优化啦。问题来了如何优化。 先看看70%的数据范围 n≤500, m≤10, 0≤ti​≤4×10^6 很明显t^2的时间复杂的是肯定超的。而 i 是这个状态转移方程的状态必须要枚举只能从 j 下手优化这个动态规划了。 j 如何优化呢其实仔细想一想很容易发现j 没有必要从 0 枚举到 i-m换句话说从0到 i-m 的这段区间内有很多状态是无用的即这些状态一定不能构成当前 f[i] 的最优解真正有用的只有区间 ( i-m-m1, i-m ]。如何证明呢 先贴一幅图   观察上图可以发现 当 j 在 ( R, i )中时摆渡车回来的时间一定大于 i 不满足状态 f[i] 的定义舍去。 当 j 在 ( ?, L ]中时一定可以多发一次车使摆渡车回来的时间小于等于 i这样得到的花费一定小于等于只发一次车的情况。因此也可以省去。 最后我们发现j 只能在区间 ( L, R ] 之间才能得到最小花费即 j 只有 m-1 种情况。 于是状态转移方程不变j 的枚举范围改变时间复杂度降为 70%的数据稳稳地过甚至在 “少爷机” 上面的 score 可能 100 ( 最起码分数在70以上 )。 程序段   1 for(int i1; itm; i) 2 { 3 f[i] i*peo[i] - cost[i]; 4 for(int jmax(i-m-m1,0); ji-m; j) 5 f[i] min(f[i], f[j](peo[i]-peo[j])*i-(cost[i]-cost[j])); 6 }     四70太低了如何拿满分 老样子再来看一下数据范围终极boss来了 n≤500, m≤100, 0≤ti​≤4×10^6 m的范围变回 100 了tm的时间复杂度好方肿么办!!! 别着急先来分析一下数据范围 可以发现ti 达到了4*10^6 然鹅 n 却还是500不难想象如果将 ti 看做一条线段上面有 4*10^6个整点然后取其中的500个点标记标记的点一定是非常离散的。  同样的道理在如此之大的 ti 中一定有很多区间是没有等车人的无用的区间但是仍然无用地枚举了m次时间复杂度大大增加。 这时候我们只需要加一个小小的剪枝判断当前枚举的 i 点到 i-m 中是否有人如果没有人的话就没有必要进行多一次的循环了因为再发多一次车对答案没有影响毕竟没人只需要将 f[i] 赋值为 f[i-m]然后continue即可。 经过某神犇的证明经过这次剪枝后实际枚举的点只有 nm 个时间复杂度降为当然还有一个常数 t 被我忽略了 100%的数据跑得飞快…… 程序段   1 for(int i1; itm; i) 2 { 3 if(im and peo[i]-peo[i-m] 0) {f[i] f[i-m]; continue;} 4 f[i] i*peo[i] - cost[i]; 5 for(int j0; ji-m; j) 6 f[i] min(f[i], f[j](peo[i]-peo[j])*i-(cost[i]-cost[j])); 7 }     五答案在哪 终于到最后一步了显而易见answer一定在最大的时间后面废话只需要从 t 枚举到 tm-1 取一个最小值即可。 注意 代码中的 t 和 五中的 t 含义相同都是最后到的那个人的到达时间。   ps终于写完了这个思路是参考了某神犇的Sooke再加上了自己的一些理解希望能有帮助。  转载于:https://www.cnblogs.com/GDOI2018/p/9994768.html
http://wiki.neutronadmin.com/news/295031/

相关文章:

  • 查答案的网站制作模板html5国内网站
  • 大良营销网站建设方案成都建设高端网站
  • 网站地图做计划任务校园公共设施设计ppt
  • wordpress迁移站点网络推广竞价是什么
  • 郴州网站制作公司招聘seo人员工作内容
  • 网站发布与推广方案大网站建设
  • 达人室内设计网站深圳微信分销网站公司
  • 重庆建网站培训机构企业官方网站模板下载
  • 塘厦镇网站建设公司图案设计
  • 图片站手机网站怎么做免费建站平台哪个好
  • 简单做网站阿里logo设计网站
  • 学做蛋糕网站wordpress 分页列表
  • 地产金融网站开发wordpress 智能合约
  • php网站建设考试新加坡设计公司排行
  • 孝南区建设局网站腾讯云低代码开发平台
  • 做免费外贸网站册域名谷歌不收录网站
  • 济南做网站哪里好诚信网站建设
  • 个人购买域名做企业网站北京seo优化多少钱
  • 德阳市建设厅官方网站apache做网站
  • 淄博阿雷网站建设wordpress 高并发
  • 外贸 国外推广网站中国平面设计网官网
  • 自己做网站需要的技术基于个性化推荐的电商网站设计与实现
  • 商务电子是学什么的关键词优化排名软件
  • 企业网站icp是什么access 网站内容管理系统 哪个好 下载
  • 万江区做网站市场调研报告ppt模板
  • html5网站编写软件开发模型包括
  • 网站建设费账务处理推广策略是什么意思
  • 汕头网站建设培训公司衣服货源怎么找厂家拿
  • 软件定制开发公司排名seo诊断优化方案
  • 做那个网站的图客比较好电商网站的银行支付接入该怎么做