但愿复赛的时候旁边坐的不是学军镇海杭二绍一的众神犇。

 

阅览室

模拟

【问题描述】

一个阅览室每天都要接待大批读者。阅览室开门时间是 0,关门时间是 T。每位读者的到达时间都

不一样,并且想要阅读的刊物不超过 5 本。每位读者心里对自己想看的刊物都有一个排位,到达之后

他会先去找自己最想看的刊物,如果找不到则去找其次想看的刊物。如果找不到任何他想看的刊物,

他会开始等待,直到有一本以上的他想看的刊物被人放回原处。当然,他会先去拿其中自己最想看的

刊物。当他看完某一本刊物后,就把它放回原处,接着去找自己没看过的最想看的刊物。如此下去,

直到看完所有他想看的刊物为止。矛盾出现在两个人同时想要拿同一本刊物的时候。阅览室为了避免

读者之间出现争执,作了一个规定,读者每次在开始等待时先去服务台做一次登记。如果两个人都同

时想要一本刊物,那么先登记的读者将得到这本刊物。如果两个人同时登记,那么先到达阅览室的读

者将得到刊物。没得到的人就只能去找其他的刊物看。阅览室关门时,所有读者都将被强迫离开阅览

室,不再允许继续阅读。

现在阅览室想做一个统计调查,你被要求写一个程序来模拟这个过程计算出所有刊物被阅读的总

次数。当某个读者开始阅读某本刊物时,该刊物的被阅读次数就加 1,无论这本刊物最后有没有被读

完。

【输入】

输入包括了多个测试数据。每个测试数据开头是两个整数 T 和 n(1≤n≤100),分别表示图书馆

关门时间和读者总数。接下来按照读者的到达时间先后依次给出了每位读者的具体描述。每个读者描

述开头是一个整数 t(0≤t<T),表示该读者到达时间。接下来一行开头是一个整数 k(1≤k≤5),

表示该读者想要看的刊物数目。之后跟着 2k 个整数按照读者想要阅读的刊物的顺序依次给出了刊物的

描述。其中第 2i-1 个整数表示刊物的编号 s(0≤s<1000),第 2i 个整数表示该读者读完这本刊物所需的时间。

【输出】

对于每个测试数据,在单独一行里输出所有刊物被阅读的总次数。

【输入样例】

10 4

1

2 1 4 2 5

3

1 2 4

7

3 2 2 1 3 3 2

9

1 4 2

【输出样例】

5

【解题过程】

神一样的模拟题,刚看到的时候很受打击,感觉就是要跪。

题目里面没有给出 T 的范围,但是抱着试一试的心态,还是根据时间来模拟了。更稳妥的做法应该是将时间离散化。

首先我们对于每本书维护一个堆表示登记要看这本书的人,按照登记时间与到达时间排序。

对于某个时刻的某个读者,按顺序找他所有想看的书如果没有人在看那本书,那就看那本书的堆顶是不是自己,如果是,那就将那本书占为己有,否则就继续找下一本书。如果所有想看的书都被占用了,就进行登记(登记前判断下之前是否已经登记过了)。

但是题目里没有说清楚的是,如果一个人没有任何一本想看的书可以看,那么应该对每一本都进行登记还是只对最想看的那一本进行登记?我选择了前一种处理,然后就跪了。

 

影像之结构化特征

FloodFill

【问题描述】

在影像比对中,有一种方法是利用影像中的边缘(edge)资讯,计算每个边缘资讯中具有代表性的

结构化特征,以作为比对两张影像是否相似的判断标准。 Water-filling 方法是从每个边缘图的一

个端点开始,绕着相连的边缘点走并依序编号。若走到某一步时,遇到一个以上不同的连接点,则分

成不同路径同时继续走,直到没有任何连接点为止。如果一个点和另一个点为左右相邻或上下相邻,

就称为连接。

例如,在图一的影像中包含三个边缘图,每个边缘图由一些互相连接的边缘点构成。图中以黑色

的方块代表边缘点,白色的方块代表背景。在 Water-filling 方法中,首先,从第一行(row)开始,

由左至右,由上至下,先找到第一个黑点并编号为 1。接着,找 1 的下一个尚未编号的连接点并编号

为 2。依此方法继续往下一个点前进并依序编号。在编号 6 的点之后有两个尚未编号的连接点,此时,

则分为两条路线,并同时编号为 7 继续往下走。当走到没有任何的相连点时,则结束现有边缘图的编

号,并继续对影像中的其它边缘图编号。走完图一所有边缘图后所得到的编号如图二所示。所以,走

完这三个边缘图所需要的步数分别为 12、7 及 3;因此,12、7 及 3 可以作为代表此张影像的结构化

特征。请注意:位于斜对角上的两点不能算做连接。

请写一个程序计算每个影像中,以 Water-filling 方法走完其中所有的边缘图后,将每个边缘图所需走的步数输出。

【输入】

输入文件包含一个正方形的影像。

第一行是 n(1≤n≤1000),表示正方形的规模。

接下来的 n 行 n 列表示影像内容:0 表示背景的白点,1 表示黑色的边缘点。

【输出】

对于每个输入的影像,以 Water-filling 方法走完所有的边缘图后,先输出此影像中共有几个

边缘图。然后按升序方式输出每个边缘图所需走的步数。

【输入样例 1】

10

0000000000

0011110000

0000010000

0011111000

0010110100

0010010110

0011110010

0100010010

0100000110

0100000000

【输出样例 1】

3

3

7

12

9

【输入样例 2】

000000011

111111101

100000101

111111101

100010101

100010101

111111101

000000001

000000011

【输出样例 2】

2

11

12

【解题过程】

直接用 BFS FloodFill。

听说由于题目是台湾人出的,而台湾人的行和列和大陆这边刚好是反的,然后就跪了。

 

诸侯安置

动态规划

【问题描述】

很久以前,有一个强大的帝国,它的国土成正方形状,如图所示。

这个国家有若干诸侯。由于这些诸侯都曾立下赫赫战功,国王准备给他们每人一块封地(正方形中

的一格)。但是,这些诸侯又非常好战,当两个诸侯位于同一行或同一列时,他们就会开战。如下图为

n=3 时的国土,阴影部分表示诸侯所处的位置。前两幅图中的诸侯可以互相攻击,第三幅则不可以。

国王自然不愿意看到他的诸侯们互相开战,致使国家动荡不安。因此,他希望通过合理的安排诸

侯所处的位置,使他们两两之间都不能攻击。

现在,给出正方形的边长 n,以及需要封地的诸侯数量 k,要求你求出所有可能的安置方案数。

(n≤100,k≤2n2-2n+1)

由于方案数可能很多,你只需要输出方案数除以 504 的余数即可。

【输入】

仅一行,两个整数 n 和 k,中间用一空格隔开。

【输出】

一个整数,表示方案数除以 504 的余数。

【输入样例】

2 2

【输出样例】

4

【Hint】

四种安置方案如图 2-4 所示。注意:镜面和旋转的情况属于不同的方案。

【解题过程】

首先,无解的情况是很好判断的。

很明显是动态规划,但是很可惜我想到的 DP 是错的,然后跪了。

先看这样一幅图:

显然,这样的一幅图与原图是等价的,但比原图更方便处理。

我们可以用 f(i, j) 表示以第 i 列为最后一列,放置 j 个棋子的方案数,则

f(i, j) = sum{ f(k, j-1)*(i-j+1) }, j-1<=k<i

 

(唉,果然 too young too simple,sometimes naive)

(连跪三题不想多说)

10day1的更多相关文章

  1. 二模10day1解题报告

    T1.阅览室(reading) 有一个0~T时间内开放的阅览室,n个读者来读书每人k本,编号和看完所需时间在输入中.其中喜欢度降序排列(不考虑数值),每个人先看喜欢的,如果没有(被人拿走了)就继续找第 ...

随机推荐

  1. Docker容器可以使用容器平台管理自动重启实现自修复吗?

    容器的自修复功能是经常被吹嘘的.因为容器是衣服,人躺下了,衣服也躺下了,容器平台能够马上发现人躺下了,于是可以迅速将人重新唤醒工作. 而虚拟机是房子,人躺下了,房子还站着.因而虚拟机管理平台不知道里面 ...

  2. contos LINUX搭建LAMP笔记

    LINUX搭建LAMP笔记 .YUM:Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于R ...

  3. webservice使用注解修改WSDL内容

    首先看我们没有修改前的WSDL内容 此时服务端的类 修改后的 注解如下 package com.xiaostudy; import javax.jws.WebMethod; import javax. ...

  4. Anaconda 环境中使用pip安装时候出现的一些问题

    author:pprp date:18/8/12 --- 1. AttributeError: Module Pip has no attribute 'main' solution:降低pip的版本 ...

  5. poj 2255 Tree Recovery 分治

    Tree Recovery Description Little Valentine liked playing with binary trees very much. Her favorite g ...

  6. node.js 之 http 架设

    Node.js 安装配置 下载node.js安装mis 打开:cmd cd到node.js安装目录下 输入nodejs --version 显示版本号,证明安装成功 在其根目录下建server.js ...

  7. 前端解析cookie出现多余的双引号的问题

    登录界面,用户提交后,后台获取到用户名密码,然后会设置cookie,以便于前端使用,今天在修改项目记住密码的功能的时候,读取cookie,如果存在loginInfo字段说明用户在上一次点击了记住密码的 ...

  8. jsplumb 的初次使用

    最近的项目要能创建流程, 流程配置什么的就找了 jsplumb 来做流程的显示配置.经过两天的研究成果已经很明显了 参考了以下一些大神们的博客: jsplumb 中文教程 连线绘图工具库介绍 附简单在 ...

  9. ubuntu下python安装pandas和numpy等依赖库版本不兼容的问题RuntimeWarning: numpy.dtype size changed

    习惯了linux下用pip install numpy及pip install pandas命令了.折腾了好久了. 上来先在python3中pip3 install numpy装了numpy,然后再p ...

  10. 新东方雅思词汇---9.1、sist

    新东方雅思词汇---9.1.sist 一.总结 一句话总结: 站 resist 英 [rɪ'zɪst]  美 [rɪ'zɪst]  vi. 抵抗,抗拒:忍耐 vt. 抵抗:忍耐,忍住 n. [助剂] ...