csp-s模拟测试112 & csp-s模拟测试113
考前两天模拟。
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的更多相关文章
- Gremlins.js – 模拟用户随机操作的 JS 测试库
Gremlins.js 是基于 JavaScript 编写的 Monkey 测试库,支持 Node.js 平台和浏览器中使用.Gremlins.js 随机模拟用户操作:单击窗口中的任意位置,在表格中输 ...
- .net单元测试——常用测试方式(异常模拟、返回值测试、参数测试、数据库访问代码测试)
最近在看.net单元测试艺术,我也喜欢单元测试,今天介绍一下如何测试异常.如何测试返回值.如何测试模拟对象的参数传递.如何测试数据库访问代码.单元测试框架使用的是NUnit,模拟框架使用的是:Rhin ...
- 在线HTTP POST/GET模拟请求api接口http请求测试工具https://post.jsonin.com/
在线HTTP POST/GET模拟请求api接口http请求测试工具 在线POST/GET接口测试工具https://post.jsonin.com/ Json在线解析及格式化校验工具 https:/ ...
- Nodejs开源项目里怎么样写测试、CI和代码测试覆盖率
测试 目前主流的就bdd和tdd,自己查一下差异 推荐 mocha和tape 另外Jasmine也挺有名,angularjs用它,不过挺麻烦的,还有一个选择是qunit,最初是为jquery测试写的, ...
- 专访|HPE测试中心总监徐盛:测试新思维-DevOps,持续测试,更敏捷,更快速
2016年7月22日,「HPE&msup软件技术开放日」将在上海浦东新区,张江高科技园区纳贤路799号科荣大厦小楼2楼举办,msup携手HPE揭秘全球测试中心背后的12条技术实践. 徐盛:HP ...
- APP测试基本流程以及APP测试要点
APP测试流程梳理 APP测试要点梳理 链接:http://pan.baidu.com/s/1gfaEZ1x 密码:07yt 1 APP测试基本流程 1.1流程图 1.2测试周期 测试周期可按项目的开 ...
- Visual Studio进行负载测试,RIG和负载测试术语- Part II
对于一个多用户的应用程序,性能是非常重要的.性能不仅是执行的速度,它包括负载和并发方面.Visual Studio是可以用于性能测试的工具之一.Visual Studio Test版或Visual S ...
- Monkey (压力测试)-移动端手机压力测试工具 monkey以及monkeyrunner
4. Monkey (压力测试) 这个是Android提供的系统工具.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行压力测试.Monkey测试是一种 ...
- 测试者出的APP测试面试题
测试者出的APP测试面试题 一.开场问题:(自由发挥) 1.请自我介绍一下: 2.为什么离开上一个公司呢? 3.做测试多久了?以前做过哪些项目?你们以前测试的流程是怎样的?用过哪些测试工具? 4.你觉 ...
- 渗透测试流程——渗透测试的9个步骤(转)
目录 明确目标 分析风险,获得授权 信息收集 漏洞探测(手动&自动) 漏洞验证 信息分析 利用漏洞,获取数据 信息整理 形成报告 1.明确目标 1)确定范围:测试的范围,如:IP.域名.内外网 ...
随机推荐
- pytorch中使用多显卡训练以及训练时报错:expect more than 1 value per channel when training, got input size..
pytorch在训练中使用多卡: conf.device = torch.device('cuda:0' if torch.cuda.is_available() else "cpu&quo ...
- MyCAT详解【转】
原文链接:MyCAT详解 作者:Rangle 一.MyCAT概述MyCAT是一款由阿里Cobar演变而来的用于支持数据库读写分离.分片的分布式中间件.MyCAT可不但支持Oracle.MSSQL.MY ...
- git的使用(win7 64位)
下载安装 1.官方下载网址:https://git-scm.com/downloads: 2.安装十分简单,按照默认配置,一直点击next,最后点击install,即安装成功: 3.安装成功之后,则自 ...
- 一个基于Scrapy框架的pixiv爬虫
源码 https://github.com/vicety/Pixiv-Crawler,功能什么的都在这里介绍了 说几个重要的部分吧 登录部分 困扰我最久的部分,网上找的其他pixiv爬虫的登录方式大多 ...
- (13)input输入函数
(1)input 等待用户动态输入一个值,注意得到的值是一个字符串类型 提示用户输入用户名和密码: 如果用户名是admin , 并且密码是000 , 提示用户恭喜你,登陆成功 否则提示用户名或密码错误 ...
- C#的反射(一)
1.什么是元数据(MetaData)和反射(reflection) 一般情况下我们的程序都在处理数据的读.写.操作和展示.但是有些程序操作的数据不是数字.文本.图片,而是程序和程序类型本身的信息. ① ...
- 出现 “java”不是内部或外部命令,也不是可运行程序或批处理文件的问题
用cmd运行测试下springboot入门案例,没想到出现了如下图这一幕 我电脑环境配置从来没改动过,网上查了下没搜到错误的结果. 可能的情况就是: 安装其他程序的时候,path变量被修改了,导致ja ...
- Spark2 jar存档
spark.yarn.archive需要手动将spark应用依赖jar上传到hdfs,该属性可以避免每一次运行spark应用时都重复打zip包上传到hdfs. 官网http://spark.apach ...
- 关于tcp send的再次思考
最近在用socket时,再次思考了一下如何确保对方收到消息的问题 下面是一些不错的回答 https://www.zhihu.com/question/25016042/answer/73785738 ...
- 0006SpringBoot中@Configuration与@Bean联合使用
需求:将某个普通类做为组件注册到容器中,可通过如下办法 1.定义HelloService类 package springboot_test.springboot_test.service; publi ...