考前两天模拟。

Day1直接炸飞,T1浪费的时间太长,对拍+调试了一个多小时但复杂度还不能过,最后5分钟想出来了解决方案但是已经打不出来了。T2读入出了事故RE0。T3打了假贪心。

Day2心态几乎也是爆炸。T1做了一个小时,也没法对拍。T2调试了一个小时后发现算法伪了,瞬间崩溃。犹豫了一会去打T3,一看T3不好打,暴力也难,又回过头考虑T2,试图基环树dp。终于最后发现在环上贪心就行了不用dp,然后T2过了对拍就只剩不到20分钟了。T3 dfs难打,想骗分,最后也没骗到。

D1T1:

  首先一个贪心思路:每次给三种颜色的气球排序,从最多的气球出$2$个,次多的出$1$个装饰一张桌子,最终特判$(1,1,1)$。暴力来是$O(N)$的。考虑优化(其实随便构造的)。先取三种气球数量$min$值,即用$(1,1,1)$装饰,把剩下两色气球充分利用(具体需要大力讨论,比较麻烦),最后使得只剩为$(1,1,0)$或$(x,0,0)$的情况(前者无贡献),用最后的$x$与$min$个$(1,1,1)$再凑$(1,2,0)$的情况,这样构造了最优解。复杂度$O(1)$。

D1T2:

  有向图判环。实际考点:换行符linux下'\n',windows下'\r\n'。其实读入时判getchar()!=' '就可以了。

D1T3:

  考虑每一个分部的贡献。设一个任务由$cnt$个分部接管,对于每个分部,从自己到总部共$cnt-1$次,从其他部到自己共$cnt-1$次,所以一个任务的总贡献为$(cnt-1)*\sum (dis[0][i]+dis[1][i])$,那么问题转化为:集合权值为总和$\times$大小,划分集合,使得集合权值和最小。对$dis[0][i]+dis[1][i]$从小到大排序,那么选一段连续区间一定最优。就有$dp:f[i][j]$表示第i个集合划分到了$j$处的最小费用。转移:$f[i][j]=f[i-1][k]+(j-k-1)*sum(k+1,j),k<j$。是$O(N^3)$的。但是考虑每一个集合前有一个系数,这个系数越大,后面的值应小一些才优。所以最终的集合划分一定是:$(dis[0]+dis[1])$越小的一段越长。我们已经排序,所以越靠前的集合越长。所以从上一层转移,上界$k$*段数应小于$j$,这样转移一层是$\sum \limits_{i=1}^N \frac{N}{i}$的,是$N \ln N$,总复杂度$O(N^2 \ln N)$。

D2T1:

  面积一定,越圆的东西一定周长越小(应该是个事实吧)。正六边形是面积一定时最优的。任意一种方案都可以调整为六边形。先找到能围住$N$的最小正六边形,二分边长检验$3N*(N+1)+1>=N$,当然手解不等式应该可以$O(1)$。然后缩小正六边形,墙缩小一,容积缩小$len+1$(第一次缩),$len$(再缩),然后卡住$N$就行。$O(\log N)$。

D2T2:

  对每一个商品向它的$f[i]$连边,边权为$d[f[i]]-c[i]$,如果为负就不连(稳亏不赚)。变成几个联通块,是基环树或树。对于树上的点,他自己的数量一定是全部被最大边的一头购买最优(它的贡献只能通过被弹出来实现)。而且对于树上的点,一定可以按拓扑序,所以不用考虑顺序。对于环上的点,由于购买一件物品时先检验本品是否为空所以我们先不买断,都留一个。最后考虑一下,如果没有树边,环上的点最终一定剩下一个不被弹出,但有树边的话还可以弹出。那么在环上枚举最后(将)被弹出的点,每一种方案的贡献为换上点贡献之和-这个点的贡献+(如果这个点连了树边)这个点被树上点弹出的最大贡献。枚举复杂度是边数$O(N)$的。

D2T3:

  暴力做法:枚举子串$p$,$dfs$不断消去子串,直到最后为空。这样用$string$比$char[]$方便,但我并不太会$string$。趁此机会学了一下。

  正解是$dp$。同样枚举$p$串,然后区间$dp$判断。$f[i][j]$表示$s$串$[i,j]$区间能否匹配p,匹配定义为:能消完,或者消到最后剩下$p$的前缀。转移分为两种:添一个字符,添一整$p$串。仅第一种是不全的,因为无法处理$p$串插入在中间的情况,所以还要整串转移一下。总复杂度$O(N^4)$?(我并没有记忆化所以较慢,但其实很难到上界)。

  此外调试时注意到了三目运算符$:$的两边必须是严格相同类型的,左$void()$,右边也必须是,有时候不一样了编译不报错但会RE非常难受。

csp-s模拟测试112 & csp-s模拟测试113的更多相关文章

  1. Gremlins.js – 模拟用户随机操作的 JS 测试库

    Gremlins.js 是基于 JavaScript 编写的 Monkey 测试库,支持 Node.js 平台和浏览器中使用.Gremlins.js 随机模拟用户操作:单击窗口中的任意位置,在表格中输 ...

  2. .net单元测试——常用测试方式(异常模拟、返回值测试、参数测试、数据库访问代码测试)

    最近在看.net单元测试艺术,我也喜欢单元测试,今天介绍一下如何测试异常.如何测试返回值.如何测试模拟对象的参数传递.如何测试数据库访问代码.单元测试框架使用的是NUnit,模拟框架使用的是:Rhin ...

  3. 在线HTTP POST/GET模拟请求api接口http请求测试工具https://post.jsonin.com/

    在线HTTP POST/GET模拟请求api接口http请求测试工具 在线POST/GET接口测试工具https://post.jsonin.com/ Json在线解析及格式化校验工具 https:/ ...

  4. Nodejs开源项目里怎么样写测试、CI和代码测试覆盖率

    测试 目前主流的就bdd和tdd,自己查一下差异 推荐 mocha和tape 另外Jasmine也挺有名,angularjs用它,不过挺麻烦的,还有一个选择是qunit,最初是为jquery测试写的, ...

  5. 专访|HPE测试中心总监徐盛:测试新思维-DevOps,持续测试,更敏捷,更快速

    2016年7月22日,「HPE&msup软件技术开放日」将在上海浦东新区,张江高科技园区纳贤路799号科荣大厦小楼2楼举办,msup携手HPE揭秘全球测试中心背后的12条技术实践. 徐盛:HP ...

  6. APP测试基本流程以及APP测试要点

    APP测试流程梳理 APP测试要点梳理 链接:http://pan.baidu.com/s/1gfaEZ1x 密码:07yt 1 APP测试基本流程 1.1流程图 1.2测试周期 测试周期可按项目的开 ...

  7. Visual Studio进行负载测试,RIG和负载测试术语- Part II

    对于一个多用户的应用程序,性能是非常重要的.性能不仅是执行的速度,它包括负载和并发方面.Visual Studio是可以用于性能测试的工具之一.Visual Studio Test版或Visual S ...

  8. Monkey (压力测试)-移动端手机压力测试工具 monkey以及monkeyrunner

    4. Monkey (压力测试) 这个是Android提供的系统工具.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行压力测试.Monkey测试是一种 ...

  9. 测试者出的APP测试面试题

    测试者出的APP测试面试题 一.开场问题:(自由发挥) 1.请自我介绍一下: 2.为什么离开上一个公司呢? 3.做测试多久了?以前做过哪些项目?你们以前测试的流程是怎样的?用过哪些测试工具? 4.你觉 ...

  10. 渗透测试流程&mdash;&mdash;渗透测试的9个步骤(转)

    目录 明确目标 分析风险,获得授权 信息收集 漏洞探测(手动&自动) 漏洞验证 信息分析 利用漏洞,获取数据 信息整理 形成报告 1.明确目标 1)确定范围:测试的范围,如:IP.域名.内外网 ...

随机推荐

  1. jQuery入门简述

    jQuery 是一套快速的,简洁的 javaScript 脚本库,jQuery 由美国人 John Resig 创建,至今已吸引了来自世界各地的众多 javaScript 高手加入其组织,使用户能更方 ...

  2. VBA if...elseif...else语句

    一个If语句,后面可以跟一个或多个由布尔表达式组成的elseif语句,然后是一个默认的else语句,当所有条件变为false时执行else语句块. 语法 以下是VBScript中If...Elseif ...

  3. S2-032

    前言 S2-032漏洞的影响范围是Struts 2.3.20 - Struts Struts 2.3.28,当开启了动态方法调用时可RCE.这次的漏洞分析以及后面的漏洞分析都是使用的Struts 2. ...

  4. 程哥带你学python-[第一章-初识Python]

    Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年. 像Perl语言一样, Pyt ...

  5. windows使用msi包安装mysql8.0.12

    1.前言 利用windows提供的二进制分发包(msi)安装是非常简单的,只要根据提示安装就可以了,和安装普通软件没有什么区别.但是如果想在安装的时候就把规划的配置好,是需要看懂每个步骤到底做什么用, ...

  6. AcWing 246. 区间最大公约数

    246. 区间最大公约数 思路: 首先根据更相减损术,我们得到一个结论: \(gcd(a_l, a_{l+1}, ...,a_r) = gcd(a_l, a_{l+1}-a_l, a_{l+2}-a_ ...

  7. TODO 疑问:java中的工厂类,在实际项目中如何运用

    正在读core of java,工厂类一直没搞懂.感觉和静态方法相类似,但是不知道是怎么运用在实际中. 20190711: 读了设计模式,里面给出的解读是这样的 Define an interface ...

  8. 2.session 简介

    2.session 简介 hibernate的执行流程, 创建一个配置对象Configuration,这个配置对象的作用就是用来读取配置文档Hibernate.cfg.xml 获得配置对象的目的是可以 ...

  9. Spring Bean装配(上)

    Bean:在spring的IOC里面,把配置到IOC容器里面的实体或者是对象都称为Bean Bean配置项 Bean的作用域 Bean的生命周期 Bean的自动装配 Resources&Res ...

  10. VSCode 的PHP常用插件及安装

    一.在程序中打断点调试:PHP Debug 二.高级自动完成和重构支持(代码智能提示):PHP IntelliSense 配置: "php.suggest.basic": fals ...