大水题

1、咒语

(curse.pas/c/cpp)

【题目描述】

亮亮梦到自己来到了魔法城堡,但一扇巨大的石门阻拦了他通向城堡内的路。正当他沮丧之际,突然发现门上有一处机关,机关上有一张很长的纸条。

亮亮拿起纸条的一端,只见上面写着打开机关的方法:“打开机关需要念动符咒,咒语是一串长为 L 的由 0 和 1 组成的字符串。在这张长纸条上列了 n 个长为 L 的字符串,正确的咒语即是在纷繁的 2^L 种字符串中,与这些纸条上的字符串相异度之和最小,并且在满足这一条件下, 0 的个数最多的字符串。两个字符串的相异度定义为对应位置不相等的字符对的个数。如‘011’和‘001’的相异度为 1,因为它们有且只有第二个位置上的字符不相等。”

亮亮拉起纸条,只觉得纸条似乎永远也拉不完。这上面有着数以万计的字符串,而每一个字符串的长度也或百或千,以人力看来是无法得到正确的咒语。你能帮帮他,让他得以进入魔法城堡,一窥其中的奥秘吗?

【输入格式】

第一行为一个数字 N 。

接下来的 N 行,每行为一个长为 L 的 01 字符串。数据保证 N 个字符串等长。

【输出格式】

只有一行,是一个长为 L 的字符串 S,即为正确的咒语。

【样例输入】

4
01011
01001
01101
10111

【样例输出】

01001

【数据规模】

对于 20%的数据, N<=5;

对于 60%的数据, N<=100;

对于 100%的数据, 1<=N<=1000, 1<=L<=1000。

【题解】

沙比题

按位贪心

2、神光

(light.pas/c/cpp)

【题目描述】

亮亮成功地念出了咒语,石门缓缓地自动移开,一道道绚丽的神光从城堡内激射而出。亮亮好奇而又兴奋地走入了城堡中,迎面有一座极长的魔法阵。

魔法阵可以看作一条直线,它被均匀地分成了 1 000 000 000 个位置,一个位置可以看成是一个格子。有些位置上筑有法坛,一共 N 座。亮亮只有破了眼前的魔法阵,才能继续前进,而欲破法阵,必须毁掉所有的法坛。

亮亮身前有两根法杖:一根颜色血红,能发红色神光,光芒可以笼罩连续 L个位置,并摧毁这 L 个位置上所有的法坛,最多使用 R 次;另一根颜色碧绿,能发绿色神光,光芒可以笼罩连续 2L 个位置,并摧毁这 2L 个位置上所有的法坛,最多使用 G 次。

法杖的神奇之处在于, L 的值必须由亮亮事先设定好,并且一经设定,便无法更改。亮亮需要在规定的次数下摧毁所有法坛,并且使得 L 最小。

【输入格式】

第一行三个整数 N, R, G。

第 i (2<=i<=n+1) 行一个整数 Ai ,表示第 i 座法坛的位置。

【输出格式】

只有一个整数,表示 L 的最小值。

【样例输入】

3 1 1
22
17

【样例输出】

4

【样例解释】

亮亮将 L 设为 4,并用红色神光笼罩 21-24 位置,用绿色神光笼罩 1-8 位置。

【数据规模】

对于 50%的数据, N <= 100;

对于 100%的数据, 1 <= N <= 2000, 1 <= R, G, Ai <= 1,000,000,000。

【题解】

显然L是有单调性,所以二分L转化为判定性问题

把所有点排序

由于坐标很大但是点的数量不大所以考虑下面的算法:

设n1[i]表示以第i个点为左端点放红光,第一个没有被覆盖到的点

n2[i]是放绿光的

然后可以用单调指针求出这两个数组

f[i][j]表示在序列左端用了i个红光和j个绿光第一个没被覆盖的点的编号

注意到当r和g大于n时候答案一定是1

所以下标开到n即可

f[i][j]=max{n1[f[i-1][j]],n2[f[i][j-1]]}

注意i=0和j=0的情况特殊处理一下即可

3、迷宫

(maze.pas/c/cpp)

【题目描述】

破了魔法阵后,亮亮进入了一座迷宫。这座迷宫叫做“梦境迷宫”,亮亮只有走出这座迷宫,才能从睡梦中醒来。

梦境迷宫可以用无向图来表示。它共有 n 个点和 m 条双向道路,每条道路都有边权,表示通过这条道路所需的时间,且每条道路可以多次经过。亮亮位于一号点,而出口则是 n 号点。原本,亮亮该找到一条最短路,快速冲出迷宫,然而,梦境迷宫的特殊之处在于,如果沿着最短路到达出口,亮亮就会永远陷入梦境。因此,亮亮必须寻找一条次短路。次短路的长度须严格大于最短路(可以有多条)的长度,同时又不大于所有除最短路外的道路的长度。

你的任务,就是编写一个程序,帮助亮亮找到通向出口的次短路。

【输入格式】

第一行有两个整数 n、 m,表示迷宫内共有 n 个点, m 条边。

接下来 m 行,每行三个整数 x、 y、 z,表示结点 x 和 y 之间连有一条边权为z 的无向边。

【输出格式】

一个整数,表示次短路的长度。

【样例输入】

4 4
1 2 2
2 4 4
2 3 3
3 4 4

【样例输出】

9

【样例解释】

最短路: 1 -> 2 -> 4 (长度为 2+4=6)

次短路: 1 -> 2 -> 3 -> 4 (长度为 2+3+4=9)

【数据规模】

对于 100%的数据, 1 <= n <= 5000, 1 <= m <= 100,000。

对于 100%的数据, 1 <= z <= 5000, z 表示无向边的边长。

【题解】

可以先dij一下求从1到所有点的最短路d

然后一个点的次短路可以通过其它点的最短路更新来,也可以通过其它点的次短路更新来

然而它更新了之后还可能取更新其它点

所以用类似spfa,先把所有点扔到一个队列,然后取出点更新其它点的次短路即可。

10.18 NOIP2018提高组模拟题(二)的更多相关文章

  1. NOIP2018提高组模拟题(二)

    咒语(curse) Description 亮亮梦到自己来到了魔法城堡,但一扇巨大的石门阻拦了他通向城堡内的路. 正当他沮丧之际,突然发现门上有一处机关,机关上有一张很长的纸条. 亮亮拿起纸条的一端, ...

  2. 2019.6.21 NOIP2018提高组模拟题(二)

    1.咒语 (curse.pas/c/cpp) [题目描述] 亮亮梦到自己来到了魔法城堡,但一扇巨大的石门阻拦了他通向城堡内的路.正当他沮丧之际,突然发现门上有一处机关,机关上有一张很长的纸条.亮亮拿起 ...

  3. NOIP2018提高组模拟题(四)

    能量(energy) Description ​ 有一块能量田,它的形状是 n*m的矩形,每一个格子上都有一个能量值 a[x][y] (可正可负).一块矩形田的能量定义为它的每个格子的能量值之和. ​ ...

  4. NOIP2018提高组模拟题(六)

    购物(shop) Description 小林来到商店中进行购物.商店里一共有 n 件物品,第 i 件物品的价格为 a[i] 元.小林总共需要购买 m 件物品,他希望他所花费的钱最少,请你计算出最小 ...

  5. NOIP2018提高组模拟题(五)

    字符串(string) Description 小林与亮亮正在做一个游戏.小林随意地写出一个字符串,字符串只由大写 字母组成,然后指定一个非负整数 m,亮亮可以进行至多 m 次操作,每次操作 为交换相 ...

  6. 2018.10.05 TOPOI提高组模拟赛 解题报告

    得分: \(100+5+100=205\)(真的是出乎意料) \(T1\):抵制克苏恩(点此看题面) 原题: [BZOJ4832][Lydsy1704月赛] 抵制克苏恩 应该还是一个比较简单的\(DP ...

  7. 11.5NOIP2018提高组模拟题

    书信(letter) Description 有 n 个小朋友, 编号为 1 到 n, 他们每人写了一封信, 放到了一个信箱里, 接下来每个人从中抽取一封书信. 显然, 这样一共有 n!种拿到书信的情 ...

  8. HGOI 20190822 OCWA提高组模拟赛二

    Problem A 快递 根节点为$1$ , 含有$n$个节点的树,每一条边都有一段开放的时间$[s_i,e_i]$,和经过需要的时间. 有$q$组询问,每一次在时刻$t_i$出发从根节点出发走到第$ ...

  9. [JZOJ 5852] [NOIP2018提高组模拟9.6] 相交 解题报告 (倍增+LCA)

    题目链接: http://172.16.0.132/senior/#main/show/5852 题目: 题目大意: 多组询问,每次询问树上两条链是否相交 题解: 两条链相交并且仅当某一条链的两个端点 ...

随机推荐

  1. Compare and Swap(CAS)

    CAS(Compare and Swap)是个原子操作.拿到一个新值后,CAS将其与内存中的值进行比较,若内存中的值和这个值不一样,则将这个值写入内存,否则,不做操作.在Java的 java.util ...

  2. jackson 进行json与java对象转换 之一

    代码无真相,为了最简单的说明,我直接上代码. public class User { private String name; private Gender gender; private List& ...

  3. LAMP 3.4 mysql常用操作-2

    给用户授权 > grant all on discuz.* to 'user1'@'192.168.1.%' identified by 'wangshaojun'; 指定库,用户名user1 ...

  4. touch: cannot touch `/home/tomcat7/logs/catalina.out': Permission denied

    今天打开虚拟机启动tomcat,Y的包这个错,普通用户登录的,一直报这个错误,竟然没有想起来是为什么,真是感到惭愧,其实原因很简单,就是logs文件夹没有读写的权限,一条 chmod -R 777 l ...

  5. oracle --(三)数据段(segment)

    基本关系:数据库---表空间---数据段---分区---数据块 数据段(segment)段(segment)由一系列的extent组成.通常一张表是一个segment. Oracle中的段可以分成4种 ...

  6. 提示crontab command not found的解决方法

    操作步骤   1. 确认crontab是否安装:   执行 crontab 命令如果报 command not found,就表明没有安装   2. 安装 crontab   执行 yum insta ...

  7. Zbar算法流程介绍

    博客转载自:https://blog.csdn.net/sunflower_boy/article/details/50783179 zbar算法是现在网上开源的条形码,二维码检测算法,算法可识别大部 ...

  8. vray学习笔记(1)vray介绍

    vray是个什么东西? 它是个渲染器. 渲染器是个什么东西? 渲染器就是3d软件里面把模型画成一张图片的东西,渲染的过程就是把3D物体变成2D画面的过程. 模型是个什么东西? 模型就是模型,它由两部分 ...

  9. p2197 nim游戏

    传送门 分析 我们知道最后取完的情况就是所有的a[i]异或和为0 所以只要开始的异或和不为0则先手一定可以将它转化为0 否则不行 所以如果异或和非0则先手胜 代码 #include<bits/s ...

  10. python3-深浅复制

    # Auther: Aaron Fan names = ["aaron", "alex", "james", "meihengfa ...