牛客NOIP暑期七天营-普及组1 解题报告
A
对于\(100\%\),直接开个桶统计即可。入门题目。
代码:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=41153707&scrollToDetail=1
B
对于\(100\%\),直接按题目模拟就好。每次两个指针扫一下就是\(O(n)\)的了。整个加起来是\(O(\max(n,len)\times m)\)的复杂度。可以结合代码理解。
代码:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=41153710
C
对于\(10\%\)直接copy代码然后完善一下头文件什么的就行了。
考虑这个\(dp\)是在干什么,其实就是求对于每个位置往前的前\(k\)大的数的和。
那么对于\(40\%\),直接删掉第三重循环(考虑如果不选这个数,可以直接直接从\(f[i-1][j]\)转移,所以第三重循环完全多余)
对于\(100\%\),用一个数据结构动态维护前\(k\)大即可。(这里用\(set\)或者小根堆,都行)
复杂度\(O(n\log n)\)
代码:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=41153712
D
对于\(10\%\),很明显是个\(O(n^6 )\)的算法..那么直接暴力枚举两个端点,然后暴力统计和取\(\max\)即可。
对于\(30\%\),注意到这个矩阵的生成方式有点特别,把它写出来,就会发现一个矩阵的和是一段\(a_i\)乘上一段\(b_j\),那么便可以省去统计两重循环,复杂度\(O(n^4)\)
对于\(50\%\),考虑优化\(30\)分的做法,30分的统计就是一个前缀和相乘的形式,那么要让它最大无非3种情况,正数最大\(\times\)正数最大,负数最小\(\times\)负数最小,正数最小\(\times\)负数最大,第三种又可以分为正数最小在\(A\)中,正数最小在\(B\)中两种情况,于是维护前缀\(\max\)和前缀\(\min\),分类讨论一下,就可以\(O(n^2)\)解决了。
对于\(100\%\),既然是一段\(a_i\)乘上一段\(b_j\),那么分别统计最大子段和和最小子段和即可。
最后根据\(50\%\)的做法分四类情况讨论一下就好。这部分其实就是把\(30\)和\(50\)分做法综合起来而已。
复杂度$O(n) $
至于怎么算最小子段和?全部取反求最大子段和再重新重新乘\(-1\)即可。
代码:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=41153727
牛客NOIP暑期七天营-普及组1 解题报告的更多相关文章
- 牛客NOIP暑期七天营-提高组1 解题报告
https://ac.nowcoder.com/acm/contest/920#question A 构造+双指针 发现m的限制是1e5,而点数是5e4,所以不能构造太多的边,思考一下最短路树的定义. ...
- 牛客NOIP暑期七天营-普及组2D
链接:https://ac.nowcoder.com/acm/contest/926/D来源:牛客网 在一维坐标系中,给定 n条有颜色的线段,第 i条线段的左右端点分别为 li和 ri,此外它的颜 ...
- 牛客NOIP暑期七天营-提高组1
牛客NOIP暑期七天营-提高组1 链接 A 边权可为0就排序建一条链子. 但是边权不为0 除了第一个有0的不行. x连向上一个比他小的数. 期间判断有无解. #include <bits/std ...
- 牛客NOIP暑期七天营-提高组5+普及组5
————提高组———— 第一题:deco的abs 题目链接:https://ac.nowcoder.com/acm/contest/934/A 因为每个数都可以加任意次 d ,所以可以推出 0 < ...
- 牛客NOIP暑期七天营-提高组6
目录 A-积木大赛 题目描述 link 题解 代码 B-破碎的序列 题目描述 link 题解 C-分班问题 题目描述 link 题解 比赛链接 官方题解 A-积木大赛 题目描述 link 题解 标签: ...
- 牛客NOIP暑期七天营-提高组3
第一题:破碎的矩阵 题目链接:https://ac.nowcoder.com/acm/contest/932/A 刚看到这题的时候感觉特别熟悉...诶,这不就是codeforces某场比赛的某某 ...
- 牛客NOIP暑期七天营-提高组2
第一题:ACGT 题目链接:https://ac.nowcoder.com/acm/contest/931/A trie树.hash.map遍历 ①.trie树上的节点多记一个rest值表示还有多少 ...
- 牛客NOIP暑期七天营-提高组6C:分班问题 (组合数)
题意:A班有N个人,B班有M个人,现在要组成一个新的班级C班,为了公平,从AB班各抽相同人数的人. 现在求所有方案中,人数之和是多少. 思路:即求Σ k*C(N,k)*C(M,k); 先忽略这个 ...
- 牛客NOIP暑期七天营-提高组5
A:deco的abs. 水题,先%,然后相邻两个数min()一下差值. #include<bits/stdc++.h> #define ll long long using namespa ...
随机推荐
- mysql查询之上升的温度,有趣的电影,超过5名学生的课,大国,反转性别, 换座位
最近发现一个网站 力扣 查看 上面有很多算法和数据库的题目,做了一下,发现自己平时都疏忽了,因此边做边记录下来 1.上升的温度 给定一个 Weather 表,编写一个 SQL 查询,来查找与之前(昨天 ...
- FPGA程序编译后逻辑单元数为0
问题 FPGA代码写完后编译不报错,但是显示使用的逻辑单元数(Total logic elements)为0.当然程序也不工作. 我用的是Intel Altera FPGA,verilog语言,在Qu ...
- Linq查询连接guid与varchar字段
使用场景 在数据库设计中进场会出现一些通用表,如通用附件表,一般都是通过ForeignTable(关联的表名)和ForeignKey(关联表的主键)与其他表关联.这样的表在数据库中没有外键关系,而且一 ...
- SpringBoot常用注解(二)
这是整个 web 工程的入口,也是与其他框架最大的不同之处.这里主要关注 @SpringBootApplication注解,它包括三个注解: @Configuration:表示将该类作用springb ...
- linux命令及相关配置
hostname # 查看 hostname vim /etc/hostname # 修改hostname,重启后生效 vim /etc/resolv.conf 写入 nameserver 192.1 ...
- MySQL权限管理常用命令
1.进入mysql命令行. (1)SSH连接:mysql -u root -p输入root密码 (2)Navicat for MySQL中:右击连接,选择“命令列界面..” 2.mysql环境操作 ( ...
- 【C++札记】虚继承
由于多重继承产生的二义性引入了类的虚继承,先看下什么是二义性. 类D是类B和类C的派生类,而类B,类C就是继承于类A,当D调用类A中的函数时不知道是类B继承A的,还是类C继承A的,引起了二义性.虚继承 ...
- 数组中重复的数字(Python)
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019-08-13 22:35 # @Author : daryl # @File : ...
- linux terminal 快捷键
删除 快捷键 描述 Ctrl+h 删除光标位置的前一个字符(同 backspace 键功能) Ctrl+* 删除光标位置的前一个字符(同 ctrl+h 组合键功能) Ctrl+d 删除光标位置的一个字 ...
- AX导出excel设置格式
今天在AX2009里面写一个导出EXCEL,没有模版,这是第一次碰到,之后写完之后发现导出的数据格式不对. 到处取经之后得到一下结果: 定义一个 Com range; SysExcelCells ...