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)
可重入锁,也叫做递归锁,是指在一个线程中可以多次获取同一把锁,比如:一个线程在执行一个带锁的方法,该方法中又调用了另一个需要相同锁的方法,则该线程可以直接执行调用的方法[即可重入],而无需重新获得锁: ...
随机推荐
- 学习使用Delphi for android 调用Java类库
http://blog.csdn.net/laorenshen/article/details/41148253 学习使用Delphi for android 调用Java类库 2014-11-15 ...
- Spring cloud gateway自定义filter以及负载均衡
自定义全局filter package com.example.demo; import java.nio.charset.StandardCharsets; import org.apache.co ...
- idea中配置Resin运行环境
文章目录 背景 下载resin 配置idea 背景 为了能够读Resin的源码,只看源码看不到值,故想在idea中通过断点查看. 下载resin https://caucho.com/products ...
- Vagrant - 打造跨平台的一致开发环境
官网 参考资料 借助 Vagrant ,可以使用 Vagrantfile 文件自动化虚拟机的安装和配置流程,方便快速的打造跨平台的统一开发环境. 1. Vagrant 是啥 Vagrant 用于构建及 ...
- 牛顿法求极值及其Python实现
最初对于牛顿法,我本人是一脸懵的.其基本原理来源于高中知识.在如下图所示的曲线,我们需要求的是f(x)的极值: 对于懵的原因,是忘记了高中所学的点斜式,直接贴一张高中数学讲义: 因为我们一路沿着x轴去 ...
- 牛顿迭代法理论推导及python代码实现
公式不便于在这里编辑,所以在word中编辑好了,截图过来. 用python+牛顿迭代法 求 y =(x-2)**3的解 import numpy as np import matplotlib.p ...
- servlet--context域
ServletContext(重要) 一个项目只有一个ServletContext对象! 我们可以在N多个Servlet中来获取这个唯一的对象,使用它可以给多个Servlet传递数据! 与天地同寿!! ...
- ajax基础--基本概念
1.Ajax的全称: Asynchronous Javascript And XML,就是使用is代码获取服务器数据 局部异步刷新 IP地址:用来标识查找某一台计算机 域名:ip地址太难记了,使用域名 ...
- JavaScript GetAbsoultURl
var img = document.createElement('A'); img.src = "/img/weixin.jpg"; // 设置相对路径给Image, ...
- PHP开发环境搭建及开发工具
PHP服务器组件非常多有WampServer.XAMPP.AppServ.phpStudy.phpnow等. 菜鸟教程推荐: WampServer,这也是目前window平台上使用最广泛的,操作也非常 ...