2022.11.15 NOIP2022 模拟赛十】的更多相关文章

11.1 NOIP 模拟赛 期望得分:50:实际得分:50: 思路:暴力枚举 + 快速幂 #include <algorithm> #include <cstring> #include <cstdio> using namespace std; typedef long long LL; ; int n, m; LL ans; LL qpow(LL a, LL b) { LL res = ; while (b) { ) res = res * a % Mod; a =…
目录 2018.11.7 NOIP模拟 A 序列sequence(two pointers) B 锁lock(思路) C 正方形square(埃氏筛) 考试代码 B C 2018.11.7 NOIP模拟 时间:3.5h 期望得分:100+0+40 实际得分:100+0+40 A 序列sequence(two pointers) 其实我们只要处理每个数与哪些数相加,会产生进位就行了. 把数排序后,枚举一个数x,容易想到满足使x+y进位的y是单调的(要求y<=x).所以可以二分. 但是单调,好像只需…
二分 首先,可以发现,最后的答案显然满足可二分性,因此我们可以二分答案. 然后,我们只要贪心,就可以验证了. 贪心 不难发现,肯定会优先选择能提供更多插座的排插,且在确定充电器个数的情况下,肯定选择能经过排插数量最大的那些充电器. 所以,我们只要模拟插排插的过程,记录当前深度\(d\).插座数\(t\)即可. 设选择的能经过排插数量恰好为\(d\)的充电器有\(x\)个,则若\(t<x\),显然不合法. 否则,我们将\(x\)个位置插上充电器,其余位置尽可能地插排插,就可以了. 代码 #incl…
得分: \(20+45+15=80\)(三题暴力全写挂...) \(T1\):Lyk Love painting 首先,不难想到二分答案然后\(DP\)验证. 设当前需验证的答案为\(x\),则一个暴力的想法就是设\(f_{i,j}\)表示在第一行选前\(i\)个数,第二行选前\(j\)个数使得每个矩形内元素和不超过\(x\)所需的最少矩形数. 则我们可以预处理出三个数组\(lst_{1,i},lst_{2,i},lst_{3,i}\)来分别表示能使\(\sum_{j=lst_{1,i}}^ia…
卢卡斯定理 题目中说到\(p\)是质数. 而此时要求组合数向质数取模的结果,就可以用卢卡斯定理: \[C_x^y=C_{x\ div\ p}^{y\ div\ p}\cdot C_{x\ mod\ p}^{y\ mod\ p}\] 也就是说,我们可以把\(x\)和\(y\)转化成两个\(p\)进制数,然后每一位分别求组合数后再乘起来. 所以问题来了,什么时候一个组合数的值模\(p\)为\(0\)? 由于它是质数,所以对于一个组合数\(C_a^b\),当且仅当\(a<b\)时它的值才会为\(0\)…
设阈值 考虑对于询问的\(d\)设阈值进行分别处理. 对于\(d\le\sqrt{max\ d}\)的询问,我们可以\(O(n\sqrt{max\ d})\)预处理答案,\(O(1)\)输出. 对于\(d>\sqrt{max\ d}\)的询问,我们可以爆枚其倍数.然后就变成询问一个区间内一些数的个数,可以考虑用莫队.考虑到移动和询问的根号是分开计算的,所以复杂度是\(O(q(\sqrt n+\sqrt{max\ d}))\). 代码 #include<bits/stdc++.h> #de…
莫比乌斯反演 考虑先推式子: \[\sum_{i=l}^r[gcd(a_i,G)=1]\] \[\sum_{i=l}^r\sum_{p|a_i,p|G}\mu(p)\] \[\sum_{p|G}\mu(p)\sum_{i=l}^r[p|a_i]\] 因此我们只要枚举询问的这个数的因数,然后求出这段区间内有多少个数是它的倍数即可. 分块 我们可以统计对于每个数,每个块内有多少个数是其倍数. 数的规模\(O(n)\),块大小\(O(\sqrt n)\),所以内存是\(O(n\sqrt n)\),询问…
树形\(DP\) 实际上,这道题应该不是很难. 我们设\(f_{x,i,j}\)表示在以\(x\)为根的子树内,原本应输出\(i\),结果输出了\(j\)的情况数. 转移时,为了方便,我们先考虑与,再考虑非,即先转移,再交换\(f_{x,0,0}\)和\(f_{x,1,1}\),\(f_{x,1,0}\)和\(f_{x,0,1}\). 这样一来,转移方程如下: \[f_{x,i1\&i2,j1\&j2}=\sum f_{x,i1,j1}*f_{son,i2,j2}\] 然后,在转移结束,交…
思维题 此题应该是比较偏思维的. 假设一次反射后前进的距离是\(2^x(2y+1)\),则显然,它可以看做是前进距离为\(2^x\)的光线经过了\((2y+1)\)次反射,两者是等价的,甚至后者可能还要更优. 因此,我们只需考虑前进距离为\(2^x\)的光线. 也就是说,我们枚举\(x\),统计\((2^x+a_i)\% 2^{x+1}\)与\(b_i\%2^{x+1}\)中众数的出现次数的最大值. 关于众数的统计,我很\(naive\)地开了个\(map\),实际上,似乎用排序可以得到更优秀的…
写在前面的总结 离联赛只有几天了,也马上就要回归文化课了. 有点舍不得,感觉自己的水平刚刚有点起色,却又要被抓回文化课教室了,真想在机房再赖几天啊. 像19/11/11那场的简单题,自己还是能敲出一些比较稳的暴力,虽然不见得能拿很高档的暴力或者打出正解,但至少不会挂分,最后能拿到的分数也还能看.但是一上点难度,或者不对胃口,就明显感觉力不从心.总是只能打最低档的暴力,甚至有些题只能拿\(10pts\)的\(dfs\)分.有优化想不出来,有式子也推不出来.时间也总是不够用--在某道题上浪费了太多时…