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)
可重入锁,也叫做递归锁,是指在一个线程中可以多次获取同一把锁,比如:一个线程在执行一个带锁的方法,该方法中又调用了另一个需要相同锁的方法,则该线程可以直接执行调用的方法[即可重入],而无需重新获得锁: ...
随机推荐
- UCenter 与 DIscuz 通信失败的解决方法
问题状况:Discuz 用户无法成功修改头像且帖子中上传的图片无法保存.进入 Discuz 后台检查,一切正常:进入 UCenter 检查后发现在"应用管理"中与 Discuz 论 ...
- Win7 64位注册32位DLL
记忆力越来越差,备忘. 参考地址 https://support.microsoft.com/en-us/help/249873/how-to-use-the-regsvr32-tool-and-tr ...
- C#清空StringBuilder的三种方法
1.Remove例: StringBuilder val = new StringBuilder(); val.Append("...."); val.Remove(0,val.L ...
- python支持的进程与线程
一.multiprocessing模块介绍 python中的多线程无法利用CPU资源,在python中大部分情况使用多进程.python中提供了非常好的多进程包multiprocessing. mul ...
- [BZOJ2138]stone(Hall定理,线段树)
Description 话说Nan在海边等人,预计还要等上M分钟.为了打发时间,他玩起了石子.Nan搬来了N堆石子,编号为1到N,每堆 包含Ai颗石子.每1分钟,Nan会在编号在\([L_i,R_i] ...
- kmp(前中后最长相同长度)
http://acm.hdu.edu.cn/showproblem.php?pid=4763 Theme Section Time Limit: 2000/1000 MS (Java/Others) ...
- Codeforces - 1194D - 1-2-K Game - dp
https://codeforc.es/contest/1194/problem/D 打个n=30的表好像看出了规律. 其实假设k==3,那么 sg[0]=0, sg[1]=mex{sg[0]}=1, ...
- Laya2.0的转变
之前一直用Laya1.x+TypeScript了,最近项目开始使用Laya2.0+AS3了 总结一下需要注意的一些事项,算是2种开发模式的区别与过渡吧 1.AS类的访问标识 必须是public,不写会 ...
- SQL 一次插入多次数据
数据插入 INSERT INTO 表名称 VALUES (值1, 值2,....) 指定所要插入数据的列 INSERT INTO table_name (列1, 列2,...) VALUES (值1, ...
- MVC路由学习:自定义路由参数(用户看不到参数名),重新定义路由规则
MVC路由:由于路由global中注册了,在程序第一次运行时,在MVC会自动生成路由,类似于字典的格式缓存下来,但路由生成的规则又是怎样的呢? 路由生成规则是: 1>更具你定义的的顺序查找路由规 ...