20 October in ss
Contest
A: sum
快速读。
B: 鬼谷子的钱袋(coin)
贪心。
按照类似二进制的方式准备钱袋:1, 2, 4, 8, ... 以此装入的钱袋数目记为 \(N\)。
如果最后剩余不足以凑齐下一个二进制位钱袋,记剩余金币价值为 \(k\)。
当 \(k\notin \{x|x=2^n, n\in\mathbf{N}^*\}\) 时,价值为 \(k\) 的金币另外装一个钱袋;
当 \(k\in \{x|x=2^n, n\in\mathbf{N}^*\}\) 时,不能同时有两个钱袋装有相同的大于 1 的金币数,此时显然将最大二进制位钱袋金币数 - 1,剩余金币另外装一个钱袋,金币数为 \(k+1\)。
综上所述,总钱袋数为 \(\begin{cases}N, & N=\log_2{(m+1)},N\in\mathbf{N}^*, \\ N+1,& \text{otherwise.} \end{cases}\)
C: master
求最长连续公共字串,\(m\) 次修改机会。
可暴力 AC。
DP 解法:
定义 \(f(i,j,k)\) 为匹配到 A 串的 \(i\) 位置,B 串的 \(j\) 位置时,已经使用了 \(k\) 次修改机会的最长连续公共字串长度。
当 A 串的 \(i\) 位置与 B 串的 \(j\) 位置匹配时,可以匹配,即 \(f(i,j,k)=f(i-1,j-1,k)+1\);
当 A 串的 \(i\) 位置与 B 串的 \(j\) 位置不匹配时,若 \(k>0\),此时可以消耗一次修改机会匹配,即 \(f(i,j,k)= f(i-1,j-1,k-1)+1\);
对于其他情况,无法匹配,即 \(f(i,j,k)=0\)。对于以上取最大值记为 \(f(i,j,k)\)。
统计答案为 \(\max\{f(i,j,k)\}\)。
D: 粉刷匠(paint)
Windy 有 \(N\) 条木板需要被粉刷。 每条木板被分为 \(M\) 个格子。 每个格子要被刷成红色或蓝色。 Windy 每次粉刷,只能选择一条木板上一段连续的格子,然后涂上一种颜色。 每个格子最多只能被粉刷一次。 如果 Windy 只能粉刷 \(T\) 次,他最多能正确粉刷多少格子? 一个格子如果未被粉刷或者被粉刷错颜色,就算错误粉刷。
DP。
对于每一条木板,定义 \(f(i,j)\) 为前 \(i\) 个格子粉刷 \(j\) 次的最大正确粉刷数目(即价值)。
易得 \(f(i,j)=\max\left\{f(i-1,j), \max\limits_{k=1,2,\ldots,i}\Big\{f(i-k,j-1)+sum(i,i-k), k-sum(i,i-k)\Big\}\right\}\)。
其中 \(sum(i,j)\) 定义为在第 \(i\) 至第 \(j\) 个格子中颜色为蓝色的数目。用前缀和实现。
对于所有木板,定义 \(g(i,j)\) 为前 \(i\) 条木板粉刷 \(j\) 次的最大正确粉刷数目。
同理可得 \(g(i,j)=\max\left\{g(i-1,j), \max\limits_{k=1,2,\ldots,j}\Big\{g(i-1,j-k)+f(m,k)\Big\}\right\}\)。
答案为 \(\max\limits_{i=1,2,\ldots,T}\left\{g(n,i)\right\}\)。
20 October in ss的更多相关文章
- 27 October in ss
Contest A. chrono 计算某年的干支纪年法年份. Too easy. 然而我忘记 C++ 取模运算是向0取整.然而数据太水,还是有 90 分. B. clock 计算某时刻时针和分针的夹 ...
- linux(centos8):prometheus使用alertmanager发送报警邮件(prometheus 2.18.1/alertmanager 0.20.0)
一,alertmanager的用途 1,Alertmanager的作用: Alertmanager是一个独立的报警模块, 它接收Prometheus等客户端发来的警报,并通过分组.删除重复等处理, 通 ...
- [ 转载 ] kernel32.BaseThreadInitThunk
Edited by wap2k, 20 October 2014 - 07:52 PM. This function is called to start a Win32 thread. Its pu ...
- c语言二叉树
Department of Computing and Information SystemsCOMP10002 Foundations of AlgorithmsSemester 2, 2014As ...
- Regionals 2012 :: Asia - Dhaka
水 B Wedding of Sultan 题意:求每个点的度数 分析:可以在,每个字母的的两个端点里求出的的出度,那么除了起点外其他点还有一个入度,再+1 /******************** ...
- C# websocket Server 加密 76号协议
服务器端源码: 76号协议增加了加密字段 sec-websocket-key1 sec-websocket-key2 以及最后8个字节 服务器必须在握手信息之后发送回解密信息才能握手成功. 解密方式 ...
- go语言入门
Go语言最主要的特性: 自动垃圾回收 更丰富的内置类型 函数多返回值 错误处理 匿名函数和闭包 类型和接口 并发编程 反射 语言交互性 1.2.4 错误处理Go语言引入了3个关键字用 ...
- HTML系列(二):头部meta元素
有关name: 一.页面关键字 网站关键字:用户通过搜索引擎能搜到该网站的词汇.最好控制在10个以内. 基本语法: <meta name="keywords" content ...
- 可重入锁(good)
可重入锁,也叫做递归锁,是指在一个线程中可以多次获取同一把锁,比如:一个线程在执行一个带锁的方法,该方法中又调用了另一个需要相同锁的方法,则该线程可以直接执行调用的方法[即可重入],而无需重新获得锁: ...
随机推荐
- springboot jpa 级联操作及测试问题 (@Transactional与@Test)
前言:测试springboot版本 :springBootVersion = '2.0.5.RELEASE' 一 :搬运@Transactional B. 如果加了事务,必须做好开发环境测试( ...
- Robotframework使用DatabaseLibrary连接mysql数据库
Robotframework使用DatabaseLibrary连接mysql数据库 进行数据库操作,需要安装相应的操作库.DatabaseLibrary是常用的库之一,它能兼容MySQL.Oracle ...
- [Linux] 013 其他文件搜索命令
1. 文件搜索命令:locate 命令名称:locate 命令所在路径:/bin/locate 执行权限:所有用户 语法:locate 文件名 功能描述:在文件资料库中查找文件 范例: $ locat ...
- Linux-第二篇常用命令
1.常用目录文件操作命令 cd:切换目录 格式:cd 目录 ls:显示文件和目录列表.可选参数: -l 列出文件的详细信息 -a 列出当前目录所有文件,包含隐藏文件 ll:查看目录接口,相当于是ls ...
- C++中的布尔类型和引用
1,C++ 中的布尔类型: 1,C++ 在 C 语言的基础类型系统之上增加了 bool: 1,C 语言中,没有 bool 类型存在,往往都是用整型代替 bool 类型,常用 0 表示假,用 1 表示真 ...
- 基于各种基础数据结构的SPFA和各种优化
一.基于各种数据结构的SPFA 以下各个数据均为不卡SPFA的最短路模板:P3371 [模板]单源最短路径(弱化版)的测试时间 1.STL队列:用时: 1106ms / 内存: 8496KB #inc ...
- hive Hsql
show databases; use flume; show tables; desc flume; alter table table_name add columns(dt string); a ...
- falcon的api
一.判断session是否有效 # -*- coding: UTF- -*- #!/usr/bin/env python # Created by Administrator on // import ...
- C Primer Plus 学习 第三章
这里只记录我自己以前不懂得地方,明白的地方就略过了 位 字节 字 位 0,1 字节 8位 也就有8位0,1的组合 2的8次方的组合 字 设计计算机时给定的自然存储单元.8位 ...
- python爬虫:抓取下载视频文件,合并ts文件为完整视频
1.获取m3u8文件 2.代码 """@author :Eric-chen@contact :sygcrjgx@163.com@time :2019/6/16 15:32 ...