Codeforces Round #674 (Div. 3)
A
除一下就完了。
时间复杂度 \(O\left(t\right)\)。
B
分在对称线上的矩阵和不在对称线上的矩阵讨论。
时间复杂度 \(O\left(tn^2\right)\)。
C
肯定是先增加值再复制。根据小学就学过的结论,元素的值都等于元素个数时最优,或者在此基础上让值或个数增加 \(1\)。
时间复杂度 \(O\left(t\right)\)。
D
因为可以插入任意整数,而值域是有限的,所以插入一个数相当于将序列分成互不影响的两部分。
考虑从前往后插,插入相同次,显然最后插入位置越靠后越优。用个 map 记录一下即可。
时间复杂度 \(O\left(n\log n\right)\)。
E
第二问显然能赢就赢。
第一问的结论证明先鸽着。
时间复杂度 \(O\left(1\right)\)。
F
倒着扫,我们用 \(c_i,bc_i,abc_i,now_i\) 分别表示 \(i+1\sim n\) 位存在子序列 \(\texttt{c,bc,abc}\) 的个数和到第 \(i\) 位 \(\texttt?\) 的数量。
当 \(s_i\not=\texttt?\) 时:
\(\begin{cases}s_i=\texttt c\qquad c_i=c_{i-1}+3^{now_i}\\s_i=\texttt b\qquad bc_i=bc_{i-1}+c_{i-1}\\s_i=\texttt a\qquad abc_i=abc_{i-1}+bc_{i-1}\end{cases}\)
对于一个新的 \(\texttt c\),后面的每一个 \(\texttt?\) 都可以随便填。
对于一个新的 \(\texttt b\),后面必须存在 \(\texttt c\) 才能构成子序列 \(\texttt{bc}\)。
对于一个新的 \(\texttt a\),后面必须存在 \(\texttt{bc}\) 这个子序列才能构成子序列 \(\texttt{abc}\)。
当 \(s_i=\texttt?\) 时:
\(\begin{cases}c_i=c_{i-1}\times 3+3^{now_{i-1}}\\bc_i=bc_{i-1}\times 3+c_{i-1}\\abc_i=abc_{i-1}\times 3+bc_{i-1}\end{cases}\)
当前这一位随便填计算先前的 \(\texttt c\) 和当前这一位填 \(\texttt c\) 构成新的 \(\texttt c\) 这两种情况。
当前这一位随便填计算先前的 \(\texttt{bc}\) 和当前这一位填 \(\texttt b\) 构成新的 \(\texttt{bc}\) 这两种情况。
当前这一位随便填计算先前的 \(\texttt{abc}\) 和当前这一位填 \(\texttt a\) 构成新的 \(\texttt{abc}\) 这两种情况。
然后这道题就被你秒掉了,时间复杂度 \(O\left(n\right)\)。
Codeforces Round #674 (Div. 3)的更多相关文章
- Codeforces Round #674 (Div. 3) C、D 题解
C.Increase and Copy #枚举 题目链接 题意 最初你有仅包含一个数字\(1\)的数组\(a\),一次操作中可对该数组进行两类操作: 从数组中选择一个元素,将该元素\(+1\): 从数 ...
- Codeforces Round #674 (Div. 3) F. Number of Subsequences 题解(dp)
题目链接 题目大意 给你一个长为d只包含字符'a','b','c','?' 的字符串,?可以变成a,b,c字符,假如有x个?字符,那么有\(3^x\)个字符串,求所有字符串种子序列包含多少个abc子序 ...
- Codeforces Round #366 (Div. 2) ABC
Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...
- Codeforces Round #354 (Div. 2) ABCD
Codeforces Round #354 (Div. 2) Problems # Name A Nicholas and Permutation standard input/out ...
- Codeforces Round #368 (Div. 2)
直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...
- cf之路,1,Codeforces Round #345 (Div. 2)
cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅..... ...
- Codeforces Round #279 (Div. 2) ABCDE
Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems # Name A Team Olympiad standard input/outpu ...
- Codeforces Round #262 (Div. 2) 1003
Codeforces Round #262 (Div. 2) 1003 C. Present time limit per test 2 seconds memory limit per test 2 ...
- Codeforces Round #262 (Div. 2) 1004
Codeforces Round #262 (Div. 2) 1004 D. Little Victor and Set time limit per test 1 second memory lim ...
随机推荐
- uart接口介绍和认识
接口/总线/驱动 UART (Universal Asynchronous Receiver/Transmitter) 通用异步收发器. UART是用于控制计算机与串行设备的芯片.有一点要注意的是,它 ...
- 专攻知识小点——回顾JavaWeb中的servlet(三)
HttpSession基本概述 ** ** 1.HttpSession:是服务器端的技术.和Cookie一样也是服务器和客户端的会话.获得该对象是通过HTTPServletRequest的方法getS ...
- SpringBoot整合JPA遇到的问题
在学习SpringBoot中使用Repository时出现这种错误 或者使用findOne也会报错,只需要改为 应该是SpringBoot版本的原因,fingOne()方法好像已经不用了.
- Redis常用命令(4)——List
BLPOP 格式:BLPOP key [key ...] timeout 作用:从列表左侧弹出元素,超时时间为timeout,单位为秒.如果timeout为0则一直阻塞直到列表中有元素.如果同时操作多 ...
- java中常见的六种线程池详解
之前我们介绍了线程池的四种拒绝策略,了解了线程池参数的含义,那么今天我们来聊聊Java 中常见的几种线程池,以及在jdk7 加入的 ForkJoin 新型线程池 首先我们列出Java 中的六种线程池如 ...
- 常用-DNS
1.1.1.1 cloudflare 1.0.0.1 119.29.29.29 腾讯 114.114.114.114 114.114.115.115 114.114.114.119财务 114.114 ...
- How to refresh datasource args caller[X++]
To refresh datasource args caller, you must add override method close on form like source code belo ...
- AQS源码深入分析之条件队列-你知道Java中的阻塞队列是如何实现的吗?
本文基于JDK-8u261源码分析 1 简介 因为CLH队列中的线程,什么线程获取到锁,什么线程进入队列排队,什么线程释放锁,这些都是不受我们控制的.所以条件队列的出现为我们提供了主动式地.只有满足指 ...
- 有奖体验 CODING 产品,iPad Pro、HHKB 键盘等超级礼包等你来!
DevOps 研发效能升级.高效率研发工具已成为软件研发行业的热门话题,也是每个企业研发团队需要不断探索的命题.CODING 一站式软件研发管理工具平台旨在让开发团队低门槛使用 DevOps 工具,帮 ...
- 对于STM32F103的USART的通讯调试
USART:(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/异步串行接收/发送器USART是一个全双工通用同步/异步串行收发 ...