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)
可重入锁,也叫做递归锁,是指在一个线程中可以多次获取同一把锁,比如:一个线程在执行一个带锁的方法,该方法中又调用了另一个需要相同锁的方法,则该线程可以直接执行调用的方法[即可重入],而无需重新获得锁: ...
随机推荐
- servlet--response、request
请求响应流程图 response 1 response概述 response是Servlet.service方法的一个参数,类型为javax.servlet.http.HttpServle ...
- Spring学习(六)--渲染Web视图
一.将模型数据渲染为Html 在上一篇文章中,我们所编写的控制器方法都没有直接产生浏览器中渲染所需的HTML.这些方法只是将数据填充到模型中,然后将模型传递给一个用来渲染的视图.这些方法会返回一个St ...
- Linux磁盘分区实例演示
一直觉得Linux的分区操作很高大上,之前在物理机上装的Linux,所以不敢随便乱来,今天重回Windows,下面利用Windows上的Linux虚拟机实际操作一次磁盘分区,要求:1G的硬盘分成2个2 ...
- linux性能分析工具Vmstat
- elk系统生成请求数据测试承载量、宕机瓶颈shell
elk-gen-data.sh: #!/usr/bin/bash#----------------------------------------------------# Comment: to g ...
- linux篇之Nginx web服务器简单部署
一.安装部署nginx 1. 部署前先对nginx介绍下别嫌BB: 如果你听说或使用过Apache软件,那么很快就会熟悉Nginx软件,与Apache软件类似, Nginx(“engine x”)是一 ...
- BZOJ-3143/洛谷3232 游走(HNOI2013)概率DP
题意:给定n个点m条边.每条边的权值还没决定,权值大小为从1到m.从1出发每次等概率选一条出边向下走,直到走到n点停止,路径代价就是边权总和.由你来决定边权来使得上诉路径代价期望值最小. 解法:点这么 ...
- Makefile中几种变量赋值运算符
Makefile中几种变量赋值运算符: = :最简单的赋值 := :一般也是赋值 以上这两个大部分情况下效果是一样的,但是有时候不一样. 用 = 赋值的变量,在被解析时他的值取决于最 ...
- 一个历时五天的 Bug
一个程序员在没有成长成为架构师之前,几乎都要跟 Bug为伴,程序员有很多时间都是花在了查找各种 Bug上. 我印象深刻的一个Bug, 是一个服务器网络框架无锁队列的 Bug .那个 Bug 连续查找了 ...
- jQuery-Ajax请求Json数据并加载在前端页面,附视频教程讲解!
Ajax技术应用广泛,这种异步加载技术,无需刷新网页即可更新网站内容,全局或者局部均可,所以大家应该学会这种技巧,把技术用上来. 创建demo.json文件,用来做数据源: { "t ...