二模 (10)day1
第一题:
题目描述:
一个阅览室每天都要接待大批读者。阅览室开门时间是0,关门时间是T。每位读者的到达时间都不一样,并且想要阅读的刊物不超过5本。每位读者心里对自己想看的刊物都有一个排位,到达之后他会先去找自己最想看的刊物,如果找不到则去找其次想看的刊物。如果找不到任何他想看的刊物,他会开始等待,直到有一本以上的他想看的刊物被人放回原处。当然,他会先去拿其中自己最想看的刊物。当他看完某一本刊物后,就把它放回原处,接着去找自己没看过的最想看的刊物。如此下去,直到看完所有他想看的刊物为止。矛盾出现在两个人同时想要拿同一本刊物的时候。阅览室为了避免读者之间出现争执,作了一个规定,读者每次在开始等待时先去服务台做一次登记。如果两个人都同时想要一本刊物,那么先登记的读者将得到这本刊物。如果两个人同时登记,那么先到达阅览室的读者将得到刊物。没得到的人就只能去找其他的刊物看。阅览室关门时,所有读者都将被强迫离开阅览室,不再允许继续阅读。
现在阅览室想做一个统计调查,你被要求写一个程序来模拟这个过程计算出所有刊物被阅读的总次数。当某个读者开始阅读某本刊物时,该刊物的被阅读次数就加1,无论这本刊物最后有没有被读完
解题过程:
1.蛋疼的模拟题,题目不大好理解,而且没有说明两个人同时到达且要同一本该怎么办(数据里没有这种情况)。
2.其实这题认真去写也不是那么恶心.主要是想明白如何处理 ”登记“操作. 我用了一个ok[i]数组,表示编号为i的书空闲下来是在什么时候。根据时间来模拟,如果当前时间有一个读者来了(arrive_time=cur_time),以此检查他能否找到一本可以看的书(ok[i]<=cur_time),把那本书的ok[i]加上一个他看书花掉的时间t,并可以假设那个人把书带回家看了,所以把那个人的到达时间arrive_time加上他看书花掉的时间t(可以想象成他把书带回家看了,看完了瞬间回到阅览室了)。
3.如果一个人找不到可以看得书,那么依次检查找到一本他还没看过的且ok值最小的书(假设编号为k),然后就可以想象成他先回家了,然后到时间ok[k]瞬间回来了,又把那本书带回家看了,所以ok[k]+=t . 这里要注意ans++的条件必须是未更新前的ok[k]<T。这样就完美地解决了冲突和登记的问题。
初始得分100.
第二题:
题目大意:floodfill 求出四联通块的个数和每个联通块的floodfill时间。
解题过程:
1.直接BFS实现floodfill即可。题目没说清楚被坑了一次,题目的本意是从最左边的一列开始,从上到下,从左到右。也就是
(1,1)->(2,1)..理解成(1,1)->(2,1) 了。。
初始得分30.
第三题:
解题过程:
1.一开始想的很复杂,结果到最后还发现我的dp方程有后效性. 于是就只有30分了。。
2.看了题解,最巧妙的地方还是图的转化:
从左到右做dp,F[i][j]表示前i列放了j个且第i列必须放的方案数。那么有:
F[i][j]=sum{ F[k][j-1]*(len[i]-j+1) }。
因为前面放了j-1个,所以有j-1行被控制了,因此第i列只有len[i]-(j-1)=len[i]-j+1 个 地方可以放。
最后统计答案ans=sum {F[i][tot]}。
3.第二题提交有一个点挂了。因为上面的方程是无法处理 tot=0的情况的。。所以要特殊处理。
二模 (10)day1的更多相关文章
- 二模 (16) day1&day2
第一题:题目大意: 数列a[0]=a[1]=1, a[n]=a[n-2]*a[n-1]*n,求a[n]的因子个数 mod 1000000007. n<=1000000 解题过程: 1.递推式还 ...
- 二模 (8) day2
第一题: 题目描述: 有 n 个炸弹,有些炸弹牵了一根单向引线(也就是说引线只有在这一端能被炸弹点燃),只要引爆了这个炸弹,用引线连接的下一个炸弹也会爆炸.每个炸弹还有个得分,当这个炸弹被引爆后就能得 ...
- 银行卡号码校验算法(Luhn算法,又叫模10算法)
有时候在网上办理一些业务时有些需要填写银行卡号码,当胡乱填写时会立即报错,但是并没有发现向后端发送请求,那么这个效果是怎么实现的呢. 对于银行卡号有一个校验算法,叫做Luhn算法. 一.银行卡号码的校 ...
- 二模13day1解题报告
二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复 ...
- LUHN 模10 算法 银行卡校验
信用卡Luhn算法(模10)具体的校验过程如下: 1.从卡号最后一位数字开始,逆向将奇数位(1.3.5等等)相加. 2.从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去 ...
- [技术栈]C#利用Luhn算法(模10算法)对IMEI校验
1.Luhn算法(模10算法) 通过查看ISO/IEC 7812-1:2017文件可以看到对于luhn算法的解释,如下图: 算法主要分为三步: 第一步:从右边第一位(最低位)开始隔位乘2: 第二步:把 ...
- 二模 (12) day1
第一题: 题目大意: 求由N个1,M个0组成的排列的个数,要求在排列的任意一个前缀中,1的个数不少于0的个数.N,M<=5000. 解题过程: 1.看到N,M的范围就明确肯定不会是dp,因为起码 ...
- 二模 (10) day2
第一题: 题目大意:求出区间 [L,R]里约数最多的数. L,R<=10^9 解题过程: 1.一开始我就往恶心的数据去想了,比如 L=R=一个超级大的质数.. 那么 用搜索质因子的方法 是 ...
- 二模 (7) day1
第一题: 题目大意: 给出数轴上N棵树的坐标和高度,如果两棵树之间的距离小于其中一颗树的高度,那么就有树会被挡住.因此要把一些树砍矮一点.求砍树的总高度最小值. N<=100000; 解题过程: ...
随机推荐
- XML 解析器
所有现代浏览器都内建了供读取和操作 XML 的 XML 解析器.解析器把 XML 转换为 XML DOM 对象 - 可通过 JavaScript 操作的对象. 解析 XML 文档为DOM对象 方法一: ...
- C++——输入、输出和文件
一.C++输入和输出概述 1.1.流和缓冲区 C++程序把输入和输出看作字节流.输入时,程序从输入流中抽取字节:输出时,程序将字节插入到输出流中.对于面相文本的程序,每个字节代表一个字符,更通俗地说, ...
- codeblock报__objc_class_name_xxx问题
添加来一个class文件,在其他文件调用时,报下面这个错误: undefined reference to `__objc_class_name_Test' 右击Test这个类的文件弹出Propert ...
- C# Socket编程(2)识别网络主机
通过前面的笔记我们可以知道:一个客户端要想发起一次通信,先决条件就是需要知道运行在服务端程序的主机的IP地址是多少,端口号是多少.然后我们才能够通过这个地址向服务器特定的应用程序发送信息.对于网络上的 ...
- A7600官方ROM_VIBEUI_V2.5_1537联通版使用体验
A7600官方ROM_VIBEUI_V2.5_1537联通版使用体验 A7600我原来的ROM是西关少爷精简的VIBEUI1521,已经root,后来不小心恢复了出厂设置,然后就出现异常了,用twrp ...
- linux gcc 编译动态类库(.so)和静态类库(.a)
linux gcc 编译动态类库(.so)和静态类库(.a) 我的编译环境 ubuntu desktop 16.04 一:测试代码 测试有3个文件:AB.h,AB.c,test.c //AB.h vo ...
- golang作为server向android提供数据服务
中间交换的数据是json ,后台数据库服务器是sqlserver2012 android通过post或者get方式访问 如get方式http://192.168.255.13:7080/tblFile ...
- 【bzoj1052】覆盖问题
[bzoj1052]覆盖问题 分析 考虑二分\(L\)的值,然后判断3个\(L*L\)能否覆盖所有的点. 这时候出现了两种可能的思路. 思路1 首先,3是一个很小的常数. 我们想:假如能探究出1和2的 ...
- angular 模板 小例子
参考网站:https://docs.angularjs.org/tutorial/step_09 先看下目录结构 新建个空文件夹, 输入命令: express --view ejs cnpm inst ...
- jq手风琴---点击时列表的左边距逐渐减小
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...