词编码

模拟

【问题描述】

一个发送机可以通过一条隧道发送一些以二进制代码组成的单词。在其尽头的接受机可以使用特殊技术恢复到最初的单词。每个单词最初都由0和1组成。所有的单词最初长度都为n(4<=n<=1000)。当穿过隧道之后单词可能发生以下几种情况之一:

(1)任意(一个)0 被 1 取代;

(2)任意(一个)符号被删除;

(3)一个符号(0 或 1)被插入到任何位置;

(4)不改变。

我们知道最初的单词都具有以下性质:有 1 的位置号的总和是 n+1 的倍数,或者是 0。

【输入】

n 和转换后的单词,每个单词占一行。单词数不大于 2001,不会有其他任何东西,除了空格和空行。

【输出】

你的程序应该打印输出原始序列的词,注意换行。

若有多解,操作 4 有限,不行则按操作 1、2、3 优先。同一操作,按操作位置最先的优先(从左到右数起 1、2、3…n)。对于操作 2,先在被删数列添 0,不行再添 1。

如果没有答案则输出-1。

【输入样例】

4

0000

011

1011

11011

【输出样例】

0000

0110

1001

1111

【解题过程】

按照题目要求的优先顺序依次模拟即可。

但是不能无脑模拟,要加优化。用 a[i] 记录 i...n 中有几个 1,用 b[i] 记录 i...n 中的 1 的位置和。然后模拟的时候就不用进行字符串的操作了。

第一次提交80 分。没有部分和优化超时两个点。

(虽然现在还没 A 掉但是我会尽量在 NOIP 之前把这道水题 A 掉以增加信心的。)

 

笨笨粉刷匠

动态规划

【问题描述】

笨笨太好玩了,农田荒芜了,彩奖用光了,笨笨只好到处找工作,笨笨找到了一份粉刷匠的工作。

笨笨有 n 条木板需要被粉刷。每条木板被分成 m 个格子,每个格子要被刷成红色或蓝色。笨笨每次粉刷,只能选择一条木板上一段连续的格子,然后涂上一种颜色,已知每个格子最多只能被粉刷一次。

如果笨笨只能粉刷 t 次,他最多能正确粉刷多少格子。

一个格子如果未被粉刷或被粉刷成错误颜色,就算粉刷错误。

【输入】

第一行三个数 n,m,t;

接下来 n 行,每行一个长度为 m 的字符"0"表示红色,"1"表示蓝色。

【输出】

一个整数,最多能正确粉刷的格子数。

【输入样例】

3 6 3

111111

000000

001100

【输出样例】

16

【数据规模】

1≤n,m≤50,0≤t≤2500。

【解题过程】

很明显有个背包在里面,把 t 次粉刷分配给 n 块板,要求最大收益。所以我们只要计算出每块板粉刷 k 次所能得到的收益。

在这里纠结了很久,我最初的想法是O(N^6) 的动规(丧心病狂),用 f(a, i, j, k) 表示在木板 a 的区间 [i, j] 上粉刷 k 次能得到的最大收益,然后枚举中间点将其分为两个部分,并枚举左右两边各粉刷的次数。

然后又想了很久才想到比较靠谱的算法(是有多弱?):用 f(a, i, j) 表示在木板 a 的区间 [1, i] 上粉刷 j 次能得到的最大收益,则

f(a, i, j) = max{ f(a, k, j-1)+PAINT(k+1, i) }, 1<=k<i

其中PAINT(k+1, i) 取以下三种操作的最大收益:

  1. 将 [k+1, i] 整个区间涂成同一种颜色(显然应该涂格子数较多的那种颜色)
  2. 涂区间中最长的红色连续区间
  3. 涂区间中最长的蓝色连续区间

然后在预处理 PAINT(a, b) 的时候我又脑洞大开,开始准备写线段树求最长的连续颜色区间,后来想想貌似可以 RMQ?再后来发现直接对于每个区间暴力扫一遍就好了嘛。

初次提交 AC。

 

笨笨的电话网络

二分答案+最短路

【问题描述】

多年以后,笨笨长大了,成为了电话线布置师。由于地震使得某市的电话线全部损坏,笨笨是负责将电话线接到该市的负责人。

该市周围分布着 N(1≤N≤1000)根按 1..N 顺次编号的废弃的电话线杆,任意两根电话线杆间都没有电话线相连。一共 P(1≤P≤10000)对电话线杆间可以拉电话线,其余的由于地震使得无法被连接。第 i 对电话线杆的两个端点分别为 Ai,Bi,它们间的距离为 Li(1≤Li≤1000000)。数据保证每对(Ai,Bi)最多只出现 1 次。编号为 1 的电话线杆已经接入了全国的电话网络,整个市的电话线全都连到了编号为 N 的电话线杆上。也就是说,笨笨的任务仅仅是找一条将 1 号和 N 号电话线杆连起来的路径,其余电话线杆并不一定要连入电话网络。

电信公司决定支援灾区免费为该市连接 K(0≤K≤N)对由笨笨指定的电话线杆。对于此外的那些电话线,需要为它们付费,总费用等于其中最长的电话线的长度(每根电话线仅连接一对电话线杆)。

如果需要连接的电话线杆不超过 K 对,那么总支出为 0。

笨笨需要计算一下,将电话线引到震中市最少需要在电话线上花多少钱?

【输入】

输入文件的第一行包含三个用空格隔开的整数:N,P 和 K。

第二行到第 P+1 行:每行分别都为三个用空格隔开的整数:Ai,Bi 和 Li。

【输出】

输出文件中仅包含一个整数,表示在这项工程上的最小支出。如果任务不可能完成,则输出-1。

【输入样例】

5 7 1

1 2 5

3 1 4

2 4 8

3 2 3

5 2 9

3 4 7

4 5 6

【输出样例】

4

【解题过程】

首先很明显免费的 K 条肯定是路径中最大的 K 条,所以要二分枚举最终选择的路径中按边权从大到小排序后的第 K+1 条边的权值是多少,这个权值就是最后的费用。二分出来之后,我一开始用了 DFS 判断解的正确性,O(N!) 不靠谱。然后又想了一会儿,想到可以用最短路验证,具体来说就是二分枚举出一个边权 mid 后,把图中权值大于 mid 的边设为 1,权值小于 mid 的边设为 1,然后从 1 到 N 做最短路,求出的最短路如果 <= K,那么这个解就可行,继续二分。

初次提交 10 分左右,原因是一开始是枚举权值,后面改成了在边集数组中枚举,但是忘了改相应的函数参数等等。

09day1的更多相关文章

  1. 二模09day1解题报告

    T1.词编码(word) 给出一些原长为n的01串经过变化后的串求原串.原串的特点是:各个1的位置号和%(n+1)==0 变法(只取其一): 改一个0为1 删一个 加一个 不变. 其中2优先考虑位置靠 ...

随机推荐

  1. uva 10564

    Problem FPaths through the HourglassInput: Standard Input Output: Standard Output Time Limit: 2 Seco ...

  2. Python异步IO --- 轻松管理10k+并发连接

    前言   异步操作在计算机软硬件体系中是一个普遍概念,根源在于参与协作的各实体处理速度上有明显差异.软件开发中遇到的多数情况是CPU与IO的速度不匹配,所以异步IO存在于各种编程框架中,客户端比如浏览 ...

  3. http协议本身能获取客户端Mac地址问题

    http 位于网络应用程 应用层 会话层 表示层 传输层 网络层 数据链路层 物理层 数据在最高层开始传输 没经历下面一层加一层的头,然后传入目的电脑再进行一层层的解刨,所以http本来没有mac而接 ...

  4. POJ 3710 Christmas Game

    知识储备: 解决办法(奇偶去环):   (1) 对于长度为奇数的环,去掉其中任意一个边之后,剩下的 两个链长度同奇偶,抑或之后的 SG 值不可能为奇数,所 以它的 SG 值为 1: (2) 对于长度为 ...

  5. Android核心分析之十八Android电话系统之RIL-Java

    Android RIL-Java 123.jpg (2.09 KB, 下载次数: 1) 下载附件  保存到相册 2012-3-21 10:47 上传   RIL-Java在本质上就是一个RIL代理,起 ...

  6. gcc: error trying to exec 'cc1plus': execvp: 没有那个文件或目录

    问题: 解决办法: 1.没安装G++ 可使用 sudo apt-get install g++ 进行安装 2.gcc版本和g++版本不相符 可利用gcc -v和g++ -v 查看版本

  7. 利用反射完成初级万能DAO

    一.目标 利用反射完成初级万能DAO 二.注意 1.Field[] fi = clazz.getDeclaredFields(); for(Field ff : fi){ ff.setAccessib ...

  8. Centos环境下部署游戏服务器-权限

    部署Web服务器的时候,在"DocumentRoot"指向的根目录新建一个文件夹,然后将网页和资源放在这个文件夹里,通过地址http://192.168.0.100/Res/ind ...

  9. Python3导入自定义模块的3种方式

    前话 最近跟着廖雪峰的教程学到 模块 这一节.关于如何自定义一个模块,如果大家不懂的话还请先看下面这篇博文 ↓ http://www.liaoxuefeng.com/wiki/001431608955 ...

  10. Spring笔记——Spring+JDBC组合开发

      使用Spring+JDBC集成步骤如下:   1. 配置数据源 2. 配置事务.配置事务时,需要在xml配置文件中引入用于声明事务的tx命名空间,事务的配置方式有两种:注解方式和基于XML配置方式 ...