2020.12.12【NOIP提高B组】模拟 总结
第一次来 B 组做,虚的很
T1: 容斥原理
比赛时也打了个大致,但挂了,只有 50 分。
赛后重构了一下代码,AC
\(UPDATE:2020/12/13\ \ \ 14:10\)
思路:
像前缀和一样,先求出 [1,r] 的个数,在求出 [1,l-1] 的个数,最后相减
求法就是典型的容斥原理,用深搜来看第 i 个选不选,复杂度为\(O(2^n)\)
传参时多传一个最小公倍数,注意容斥时的奇负偶正
T2: 玄学
正解应该是 Treap ,但不会
不过 WTF?暴力能对?
但是考试时看了看样例输入,于是多打了一个换行。。。
\(UPDATE:2020/12/14\ \ \ \ 20:10:00\)
打出了多余的正解:
壳用一个双向队列 deque ,剩下的用一个 stack ,翻转用一个 tag 标记,操作 3 直接 tag^=1
事实证明 STL 常数真的大,跑得比暴力还慢。
T3:规律
\(m\le 11\)据说每一种情况都有一种规律
本蒟蒻只会\(m=1\)时奇偶性和\(m=2\)时高精度+斐波那契数列
\(UPDATE:2020/12/13\ \ \ 14:10\)
打消上面的疑虑,这题其实是道分段题
1:m>5
可以看出这就是 50% 的数据,因为 n 较小,可以直接状压 DP
设 F[i][s] 为前 i 行都放满,第 i 行状态为 s 的方案数(0是被填了,1是没有)
可以枚举行数 i 和 i-1 行的状态 j ,再用 Dfs 求出合法状态。
若 S 是第 i 行状态,T 是第 i-1 行状态,可得 \(F[i][S]=\sum F[i-1][T]\)
Dfs(第几行 i,状态的第几位 j,S,T)
- 看看有没有完成 S 状态,若完成则更新 F[i][S] 并返回
- 若 T 第 j 位是 0 ,Dfs(i,j+1,S 第 j 位为 1,T)
- 否则 Dfs(i,j+1,S,T)
- 若 T 第 j 位是 0 且 T 第 j+1 位是 0 且不越界, Dfs(i,j+2,S,T)
最后输出 F[n][0] ,初始化 F 除 F[0][0]=1 其他都是 0
2:m<=5
由于 \(n\le 10^{200}\) 所以可以想到数学方法,而直接肯定会炸,想到矩阵快速幂优化递推
可以用类似上一种情况的方法,把一对合法状态 S 和 T 再矩阵 tmp 中 tmp[S][T] 赋为 1
然后用矩阵快速幂求出 \(ans=tmp^n\) 其实就是一个简单的高精除以低精和\(2^m\times2^m\)的矩阵乘法
最后输出 ans[0][0]
T4:DP
奆佬们都说事二分+单调队列优化DP
于是本蒟蒻想到了 N 个月前没做出来的题“跳房子”,选择暂时放弃
\(UPDATE:2020/12/13\ \ \ 14:10\)
思路:
先二分答案为 mid ,考虑写 check 函数
设 F[i] 为在符合条件的情况下做了前 i 题的最少时间
显然 \(F_i = \min(F_j)+a[i]\ \ \ (j\in [i-mid+1,i-1])\)
最后判断是否有\(F_i<=t\ \ \ (i\in [n-mid+1,n])\)
由于暴力求区间最小会超时,可以用常数较小的单调队列维护,总复杂度\(O(nlogn)\)
总结
这次考试成绩并不理想,虽然只是第一次,却失误比较多
希望以后能看清题目,不打挂会的题目
2020.12.12【NOIP提高B组】模拟 总结的更多相关文章
- 5820. 【NOIP提高A组模拟2018.8.16】 非法输入(模拟,字符串)
5820. [NOIP提高A组模拟2018.8.16] 非法输入 (File IO): input:aplusb.in output:aplusb.out Time Limits: 1000 ms ...
- JZOJ 5818. 【NOIP提高A组模拟2018.8.15】 做运动
5818. [NOIP提高A组模拟2018.8.15] 做运动 (File IO): input:running.in output:running.out Time Limits: 2000 ms ...
- JZOJ 5812. 【NOIP提高A组模拟2018.8.14】 区间
5812. [NOIP提高A组模拟2018.8.14] 区间 (File IO): input:range.in output:range.out Time Limits: 1000 ms Memo ...
- 2021.06.12【NOIP提高B组】模拟 总结
T1 题目大意:有 \(n\) 个点,到点 \(i\) 可以获得 \(A_i\) ,同时消耗 \(B_i\) 若当前价值小于 \(B_i\) 则不能到,问从 \(P\) 开始,任一点结束后的最大值. ...
- [JZOJ5817] 【NOIP提高A组模拟2018.8.15】 抄代码
Description J 君是机房的红太阳,每次模拟她总是 AK 虐场.然而在 NOIP2117 中,居然出现了另一位 AK 的选手 C 君! 这引起了组委会的怀疑,组委会认为 C 君有抄袭 J 君 ...
- JZOJ5822 【NOIP提高A组模拟2018.8.16】 量子纠缠
这是一道很巧妙的题目. 今早,我调了好久,终于将它切掉了-- 题目 Description Input 第一行包含一个正整数 m,代表操作数. 接下来 m 行,每行可能有以下形式: 1 s 代表将数字 ...
- [JZOJ5818] 【NOIP提高A组模拟2018.8.15】 做运动
Description 一天,Y 君在测量体重的时候惊讶的发现,由于常年坐在电脑前认真学习,她的体重有了突 飞猛进的增长. 幸好 Y 君现在退役了,她有大量的时间来做运动,她决定每天从教学楼跑到食堂来 ...
- 【NOIP提高A组模拟2018.8.14】 区间
区间加:差分数组修改 O(n)扫描,负数位置单调不减 #include<iostream> #include<cstring> #include<cstdio> # ...
- [jzoj 5782]【NOIP提高A组模拟2018.8.8】 城市猎人 (并查集按秩合并+复杂度分析)
传送门 Description 有n个城市,标号为1到n,修建道路花费m天,第i天时,若gcd(a,b)=m-i+1,则标号为a的城市和标号为b的城市会建好一条直接相连的道路,有多次询问,每次询问某两 ...
随机推荐
- Python计算身体质量指数BMI
使用Python计算身体质量指数BMI 运行结果如下: 源代码: 1 ''' 2 3. 利用函数思想,将"身体质量指数BMI"源程序封装成为一个函数并调用. 3 :param he ...
- An=n的前n项和的前n项和
#include<iostream> using namespace std; int main() { int n,a=0,b=0; cin>>n; for(int i=1; ...
- Wireshark-过滤器-数据包解析
目录 过滤器 数据包解析 参考 推荐阅读: https://www.cnblogs.com/zwtblog/tag/计算机网络/ 过滤器 显示过滤器 和 捕获过滤器,俩者使用非常类似. 在Wiresh ...
- Python 读取UCI iris数据集分析、numpy基础学习
python基础.numpy使用.io读取数据集.数据处理转换与简单分析.读取UCI iris数据集中鸢尾花的萼片.花瓣长度数据,进行数据清理,去重,排序,并求出和.累积和.均值.标准差.方差.最大值 ...
- spring boot整合mybaties项目
1.第一步配置pom.xml 2.第二步 将我们所需要的ssm配置文件复制粘贴到src/main/resources下面: 3.将ssm中所需要的layui和jsp页面放到webapp下面 4.修改复 ...
- Java语言学习day04--7月1日
###09数据类型转换_自动转换 * A: 自动类型转换 * a:表示范围小的数据类型转换成范围大的数据类型,这种方式称为自动类型转换 自动类型转 ...
- 2021.12.15 P2328 [SCOI2005]超级格雷码(找规律填空)
2021.12.15 P2328 [SCOI2005]超级格雷码(找规律填空) https://www.luogu.com.cn/problem/P2328 题意: 输出n位B进制的格雷码. 分析: ...
- IO ——字节流
什么是流? 概念:内存与存储设备之间传输数据的通道.程序运行后保存在内存,文件一般在硬盘中,在程序中读写文件,需要在内存和存储设备中建立通道.数据借助流传输 流的分类: 按流向: 输入流:将存储设备中 ...
- Luffy /2/ 后台数据库配置&前台创建配置
目录 二次封装Response 后台数据库配置 命令操作 pycharm连接 django操作mysql 方式一 方式二 user表设计 前台创建及配置 全局css样式配置 配置文件配置 二次封装Re ...
- YARN线上动态资源调优
背景 线上Hadoop集群资源严重不足,可能存在添加磁盘,添加CPU,添加节点的操作,那么在添加这些硬件资源之后,我们的集群是不能立马就利用上这些资源的,需要修改集群Yarn资源配置,然后使其生效. ...