Summary

  今天的比赛60+100+100=260分,没有想到第一题正解是搜索,我与AK差一段距离,这段距离,叫倒着搜。总的来说不是很难。

Problem

T1 天平

题目大意

  给你N个排序好的砝码的质量,从第三个砝码开始,它的重量最少是前两个砝码的质量之和。天平容不得超过C质量的质量。问最大的质量可以是多少。

想法

  一般Usaco的题目都不会水到哪里去,但是今天的。。。

  有两种方法。

(1) 爆搜+剪枝

  爆搜应该都会,参数是枚举到第K个,当前砝码是重S

  优化一:如果当前的砝码质量加上没有抉择(没有递归到)的砝码质量还是不能比当前得出的最大值大,则剪枝

  优化二:倒着搜可以减少之后的分支,当然可以降低时间复杂度,是个很了得的东西,有道题靶形数独同样适用这种方法。

(2) 中途相遇法

  这个方法效率很玄,但是总比爆搜稳妥

  可以把1~(n+1)/2和(n+1)/2~n这两段的方案数用dfs求出来,然后枚举。

  可以用二分来找,最好用两个指针。

T2 游历的路线 

题目大意

  在从1城市开开始走到n城市,期间有m天,其中第m天一定要在n城市,两两城市之间来或往的马车费用是周期性的,并且有些时候可能不可以从某个城市去另一个城市,问满足条件的最小费用。

想法

  显然可以用动态规划。

  设f[i,j]表示第i天到第j城市

  显然需要知道i-1天在哪个城市,我们可以枚举,设i-1天在k城市

  f[i,j]=min{f[i-1,k]+s}(其中s代表费用,费用的周期可以用除法原理来算(x-1) mod y+1)

  初始化显然,效率显然,答案显然。

T3 最短路(shortest)

题目大意

  求从(0,0)~(n,m)经过点的和的最小值。

  第(x,y)点的权值为f[x,y],他的计算方法是f[x,y]=f[x-1,y]+f[x,y-1],如果(x=0) or (y=0)那么f[x,y]的值为1

想法

  通过一系列的对拍,我们可以发现,如下图红边的走法,必定最优,但不知道怎么证明。我们设较短边的长为n,较长边的长为m

  

  我们可以总结成一个公式

  

  那么,关键就成了如何求出F[i,m] (i=1~n)。

  我们考虑把他转化成组合数的形式

  根据题目给出的F数组计算方法,可以得出f[x,y]=C(min(x,y),x+y)

  那么显然F[i,m] (i=1~n)就是C(i,i+m) (i=1~n)

  其实每个组合数,可以理解成一个数除另一个数,比如对于C(n,m)

  

  试想一下,如果x<y,求C(x,y)+C(x+1,y+1)+C(x+2,y+2),我们设上面这个式子分子为tot1,分母为tot2

  C(x+1,y+1)相比C(x,y)的tot1和tot2,发现tot1多乘了y+1,tot2多乘了x+1,

  C(x+2,y+2)相比C(x+1,y+1)的tot1和tot2,发现tot1多乘了y+2,tot2多乘了x+2

  说明,我们每次循环,tot1都乘i+m,tot2都乘i,那么,每次的C(i,i+m)就是tot1/tot2

  但是问题来了,tot1和tot2都很大,如果相除是不太可能的,先mod再除答案是错误的,只能使用逆元了。

逆元

  根据费马小定理可以得到如下式子

  

  两边同时除b得到,高斯研究过,发现是等价的

  

   两边同时除b得到,高斯研究过,发现是等价的

  

  两边同时乘一个a,并且交换位置,得到如下式子

  

   发现,我们要求a除b取模p的结果,其实是等价于abp-2取模p的结果的,也就是说,欲想知道a除b取模p的结果,其实就是算出abp-2取模p的结果就行了

  因为a*b mod p,是等价于a mod p*b mod p的,ak mod p是等价于(a mod p)k的,所以我们这里可以取mod来避免高精度。

  当然,F[i,m] (i=1~n)这一部分,可以使用一个组合公式就可以了,具体实现和题解请选手自行考虑。

2017.08.06【NOIP提高组】模拟赛B组的更多相关文章

  1. 2017.1.16【初中部 】普及组模拟赛C组总结

    2017.1.16[初中部 ]普及组模拟赛C组 这次总结我赶时间,不写这么详细了. 话说这次比赛,我虽然翻了个大车,但一天之内AK,我感到很高兴 比赛 0+15+0+100=115 改题 AK 一.c ...

  2. 2018.12.30【NOIP提高组】模拟赛C组总结

    2018.12.30[NOIP提高组]模拟赛C组总结 今天成功回归开始做比赛 感觉十分良(zhōng)好(chà). 统计数字(count.pas/c/cpp) 字符串的展开(expand.pas/c ...

  3. 2018.12.08【NOIP提高组】模拟B组总结(未完成)

    2018.12.08[NOIP提高组]模拟B组总结 diyiti 保留道路 进化序列 B diyiti Description 给定n 根直的木棍,要从中选出6 根木棍,满足:能用这6 根木棍拼出一个 ...

  4. ZROI提高组模拟赛05总结

    ZROI提高组模拟赛05总结 感觉是目前为止最简单的模拟赛了吧 但是依旧不尽人意... T1 有一半的人在30min前就A掉了 而我花了1h11min 就是一个简单的背包,我硬是转化了模型想了好久,生 ...

  5. NOIP2017提高组 模拟赛15(总结)

    NOIP2017提高组 模拟赛15(总结) 第一题 讨厌整除的小明 [题目描述] 小明作为一个数学迷,总会出于数字的一些性质喜欢上某个数字,然而当他喜欢数字k的时候,却十分讨厌那些能够整除k而比k小的 ...

  6. NOIP2017提高组 模拟赛13(总结)

    NOIP2017提高组 模拟赛13(总结) 第一题 函数 [题目描述] [输入格式] 三个整数. 1≤t<10^9+7,2≤l≤r≤5*10^6 [输出格式] 一个整数. [输出样例] 2 2 ...

  7. NOIP2017提高组模拟赛 10 (总结)

    NOIP2017提高组模拟赛 10 (总结) 第一题 机密信息 FJ有个很奇怪的习惯,他把他所有的机密信息都存放在一个叫机密盘的磁盘分区里,然而这个机密盘中却没有一个文件,那他是怎么存放信息呢?聪明的 ...

  8. NOIP2017提高组模拟赛 8(总结)

    NOIP2017提高组模拟赛 8(总结) 第一题 路径 在二维坐标平面里有N个整数点,Bessie要访问这N个点.刚开始Bessie在点(0,0)处. 每一步,Bessie可以走到上.下.左.右四个点 ...

  9. NOIP2017提高组模拟赛 9 (总结)

    NOIP2017提高组模拟赛 9 (总结) 第一题 星星 天空中有N(1≤N≤400)颗星,每颗星有一个唯一的坐标(x,y),(1≤x,y ≤N).请计算可以覆盖至少K(1≤K≤N)颗星的矩形的最小面 ...

  10. NOIP2017提高组模拟赛 7(总结)

    NOIP2017提高组模拟赛 7(总结) 第一题 斯诺克 考虑这样一个斯诺克球台,它只有四个袋口,分别在四个角上(如下图所示).我们把所有桌子边界上的整数点作为击球点(除了4个袋口),在每个击球点我们 ...

随机推荐

  1. 蓝桥杯  历届试题 幸运数  dfs

    历届试题 幸运数 时间限制:1.0s   内存限制:256.0MB 问题描述 幸运数是波兰数学家乌拉姆命名的.它采用与生成素数类似的"筛法"生成 . 首先从1开始写出自然数1,2, ...

  2. 封装cuda/cudnn写卷积网络前向计算程序

    目录 基本编译配置 一些常识 BN层的坑 cuda基础 向cuda核函数传入结构体指针? 参考:http://galoisplusplus.coding.me/blog/2018/05/22/cuda ...

  3. [转] createObjectURL方法 实现本地图片预览

    ie6 可以直接显示本本地路径的图片 如: <img src="file://c:/3.jpg" />  ~~~网上都说ie7就不支持这种文件系统路径的url,但测试 ...

  4. Java第三阶段学习(七、线程池、多线程)

    一.线程池 1.概念: 线程池,其实就是一个容纳多个线程的容器,其中的线程可以重复使用,省去了频繁创建线程对象的过程,无需反复创建线程而消耗过多资源,是JDK1.5以后出现的. 2.使用线程池的方式- ...

  5. reconnecting-websocket.js

    websocket是HTML5下一个不错的网络协议解决方案,有一个场景很多猿猿都会遇到,手机锁屏后大约60秒,IOS会自动断开websocket连接,连接丢失了,那我们的数据也就断了.websocke ...

  6. python全栈开发day59-Django基础

    一.今日内容总结 1.HTTP协议: 请求:浏览器发给服务端的消息 格式: 请求方法 URL 协议版本\r\n k1: v1\r\n k2: v2\r\n \r\n 请求体(请求数据) 响应:服务端返 ...

  7. redis在Windows10下的安装

    以前在linux学习了redis,考虑到电脑负荷,这次学习一下如何在本地Windows下安装redis,进行学习. 下面的一些安装的步骤: 1.下载 网址:https://github.com/Mic ...

  8. ActiveMQ挂了,重启一直无法将所有实例启起来的问题

    背景 2017年3月29日  下午2-3点时分,工单模块无法访问.跟踪日志发现,ActiveMQ连接不上导致整个工单模块瘫痪: 首先判断可能是系统需要然后尝试重启工单模块,重新启动工单模块,结果:重启 ...

  9. Linux 文件目录结构

    /           文件系统的入口,最高一级目录 /bin           存放系统所需的基本命令 /boot     包含Linux内核及系统引导程序所需要的文件 ( 如连接文件,镜像文件等 ...

  10. java分页实现

    虽然现在有很多好用的框架,对分页进行支持,很简单的就把分页的效果做出来,但是如果自己手写是一个怎样的流程的?今天就来说说它,手动实现分页效果. 一.分页的思路 首先我们得知道写分页代码时的思路,保持思 ...