![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
校内模拟
锑元素使者
这个作者很懒,什么都没留下…
展开
-
[校内模拟] 201103 NOIP T4
题意求a,b,c∈[l,r],a<b<c,a∣b,b∣ca,b,c\in[l,r],a< b< c,a|b,b|ca,b,c∈[l,r],a<b<c,a∣b,b∣c的三元组(a,b,c)(a,b,c)(a,b,c)个数正解先假设a≤b≤ca\le b\le ca≤b≤c枚举aaa,设b′=ba,c′=cab'=\frac{b}{a},c'=\frac{c}{a}b′=ab,c′=ac,则要求b′,c′≤⌊ra⌋b',c'\le \lfloor\frac{r}{原创 2020-11-04 09:47:44 · 140 阅读 · 0 评论 -
[组合数学] 201102 NOIP T4
题意网格,只能向右或向下走有障碍点,每次经过体力值s→⌈s2⌉s\to \lceil\frac{s}{2}\rceils→⌈2s⌉从左上角开始,求到右下角的期望体力值( mod 1e7\bmod1e7mod1e7意义下)正解快乐推柿子不想打代码对于这种单减的递推式(如ai+1=ai,bi+1=log2bia_{i+1}=\sqrt{a_i},b_{i+1}=\log_2b_iai+1=ai,bi+1=log2bi)最终总是会到达一个不变的值0/1这道题最后会到达1因此经过j原创 2020-11-03 09:36:18 · 119 阅读 · 0 评论 -
[Boruvka] 201103 NOIP T2 Graph
题意给出完全图,两点间边权wu→v=au+av+p∣u−v∣w_{u\to v}=a_u+a_v+p|u-v|wu→v=au+av+p∣u−v∣求最小生成树大小60ptsprim暴搞不要装x写static#define FILE(x) freopen(x".in","r",stdin);freopen(x".out","w",stdout);#include<bits/stdc++.h>using namespace std;#define in Read()#defi原创 2020-11-03 09:12:41 · 116 阅读 · 0 评论 -
[校内模拟][Kruscal重构树][线段树合并] 201031 NOIP T3 Garden
题意一张图,点有颜色,边有边权,查询从一个点开始,每次经过边权不大于某值的边,求经过的颜色种经过次数最多且最小的30pts暴力这种值最多且最小的问题,最近写线段树合并写多了就看着很熟但是我不会kruscal重构树,就只写了O(n2)O(n^2)O(n2)的丑陋代码30pts#define FILE(x) freopen(x".in","r",stdin);freopen(x".out","w",stdout);#include<bits/stdc++.h>using namesp原创 2020-10-31 16:20:25 · 131 阅读 · 0 评论 -
[校内模拟] 201027 NOIP Practice T2 Clockwork 众人皆WA我独A(划去)
T2 Clockwork快乐题!就我一个正解????两个序列ai,bia_i,b_iai,bi,模4意义下对al,ra_{l,r}al,r加某数,对答案贡献为该数,最小化使两序列相同的答案显然需要相减(mod4)\pmod 4(mod4)区间操作考虑差分目标使差分数组全0于是统计正数/负数之和(两个和都一样),即∑[di>0]di\sum[d_i>0]d_i∑[di>0]di显然这样不是最优的,于是考虑下表:lr+1→lr+1ans1−33∣1−1−22−32∣原创 2020-10-27 16:44:10 · 110 阅读 · 0 评论 -
[校内模拟][树形DP] 201027 NOIP T1 cut
T1 Cut树形DPqwq冯巨的代码最好懂:记fuf_ufu为以uuu为根子树的答案,即链剖下去最多≥k\ge k≥k的连通块个数记cntcntcnt为大小≥k\ge k≥k的字数个数,转移见图#include<bits/stdc++.h>using namespace std;#define in Read()int in{ int i=0,f=1;char ch=0; while(!isdigit(ch)&&ch!='-') ch=getchar();原创 2020-10-27 18:47:45 · 103 阅读 · 0 评论 -
[组合数学][校内模拟] 201027 NOIP T3 Walk
T3 Walk有环考虑减去环记flf_lfl为长lll的、可能自交的环的个数,有转移:fl=∑i=1⌊l2⌋(li)(l−ii)(l−2il−2i2)f_l=\sum_{i=1}^{\lfloor\frac{l}{2}\rfloor}\binom{l}{i}\binom{l-i}{i}\binom{l-2i}{\frac{l-2i}{2}}fl=i=1∑⌊2l⌋(il)(il−i)(2l−2il−2i)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img原创 2020-10-27 20:35:30 · 120 阅读 · 0 评论 -
[校内模拟][双指针] 201023 NOIP Practice T3 Kth
T3题意定义Fk(S)F_k(S)Fk(S)表示序列SSS前kkk大数之和求∑l,rFk(Sl,r)\sum_{l,r}F_k(S_{l,r})∑l,rFk(Sl,r)题解又是转化思想考虑每一个数的贡献双指针维护区间端点细枝末节:统计完了贡献要抹除这个数注意lll是跑到贡献区间外面去了的,lv+rv=k+2lv+rv=k+2lv+rv=k+2时说明rrr跳出去了,那么lll往回跳一个每个点贡献的区间个数为左边端点的取法乘上右边端点的取法先来一波65pts/O(n2k)O(n^原创 2020-10-25 22:47:30 · 107 阅读 · 0 评论 -
[组合数学][六省联考2017]组合数问题
T3Portkey1.1 1≤n,k≤301\le n,k\le 301≤n,k≤30递推算组合数(似乎这种方法还能再A一个点)差评zgs的机子不给这点分1.2 特殊点p=2p=2p=2判断奇偶性k=1k=1k=1二项式定理k=2k=2k=2跟二项式定理差不多1.3用一些稍微高级的方法预处理啊,阶乘逆元啊之类的不要暴力就行了1.4冯巨来也!来一个生成函数(nm)=(1+z)n[zm]\binom{n}{m}=(1+z)^n[z^m](mn)=(1+z)n[zm]这原创 2020-10-20 18:49:00 · 180 阅读 · 0 评论 -
[校内模拟][二分] 201017 Practice T1 Chemist
T1一些液体密度ρi(1≤i≤n)\rho_i(1\le i\le n)ρi(1≤i≤n),一些容器体积vi(1≤i≤n)v_i(1\le i\le n)vi(1≤i≤n)要求将液体装进容器里,求总质量的最小、最大值发现排序后max=∑i=1nρivimin=∑i=1nρivn−i+1max=\sum_{i=1}^n\rho_iv_i\\min=\sum_{i=1}^n\rho_iv_{n-i+1}max=i=1∑nρivimin=i=1∑nρivn−i+1Θ(nlogn)原创 2020-10-17 15:24:49 · 117 阅读 · 0 评论 -
[校内模拟][树形DP] 201016 Practice T2 骑行Ride
T2一棵树,求不同的有向单峰路径数量做法很多我都不会手玩之后发现ans=(∑si)2−∑si2ans=(\sum s_i)^2-\sum s_i^2ans=(∑si)2−∑si2其中sis_isi指子树中单调下降路径的数量可以用乘法分配律解释然后两行代码就完了????#include<bits/stdc++.h>using namespace std;#define in Read()int in{ int i=0,f=1;char ch=0; while(!原创 2020-10-17 14:28:42 · 95 阅读 · 0 评论 -
[校内模拟] 20100Practice NOIP/CSP模拟
蒟蒻以为自己AK了但实际上他爆零了而且他死不要脸的边听金牌巨佬讲题边写博客T1求nnn的排列中逆序对数为kkk的数量T组数据要取模蒟蒻随便YY了一下状移方程fi,j=fi−1,j+fi,j−1−[j≥i]fi−1,j−1f_{i,j}=f_{i-1,j}+f_{i,j-1}-[j\geq i]f_{i-1,j-1}fi,j=fi−1,j+fi,j−1−[j≥i]fi−1,j−1没取模就炸掉了蒟蒻推柿子的时候完全没有想过这道题用DP可以更快地得到答案蒟蒻考场上直接数学归纳,口原创 2020-10-03 16:50:19 · 204 阅读 · 0 评论 -
[校内模拟][CSP模拟] CSP-SJX2019
蒟蒻做不来简单的csp模拟T1 日期Portkey入门题看题解才做出来的qwq#include<bits/stdc++.h>using namespace std;#define in Read()int in{ int i=0,f=1;char ch=0; while(!isdigit(ch)&&ch!='-') ch=getchar(); if(ch=='-') ch=getchar(),f=-1; while(isdigit(ch)) i=(i<原创 2020-10-01 10:38:38 · 209 阅读 · 0 评论 -
[校内模拟][并查集][ST表] 200912 Practice NOI SCOI2016 Day1 T3 萌萌哒
Portkey30pts并查集#include<bits/stdc++.h>using namespace std;#define in Read()int in{ char ch=0;int i=0,f=1; while(!isdigit(ch)&&ch!='-') ch=getchar(); if(ch=='-') ch=getchar(),f=-1; while(isdigit(ch)) i=(i<<1)+(i<<3)+ch-48原创 2020-09-19 11:26:59 · 117 阅读 · 0 评论 -
[校内模拟][线性基] 200912 Practice NOI SCOI2016 Day1 T2 幸运数字
⊕max⇔\oplus_{\max} \Leftrightarrow⊕max⇔ 线性基线性基基操:建立/加入操作void insert(ll x,ll *d){ for(int i=60;i>=0;--i){ if(x&(1ll<<i)){ if(d[i]) x^=d[i]; else{ d[i]=x; break; } } } return;}求最值贪心ll get_max(ll *d){ ll ans原创 2020-09-18 21:31:11 · 99 阅读 · 0 评论 -
[校内模拟][字符串][阅读理解题] 200912 Practice NOI SCOI2016 Day1 T1 背单词
Portkey考场上看到后缀两个字就逃了实际上并不需要后缀数组之类的高级知识后缀反转即是前缀反转,建trie,贪心因为发现规则一需要被避免,规则二可以合并至规则三对于规则三重新建树,每个串连向其后缀然后就可以DFS了数组开小了也会MLE???#include<bits/stdc++.h>using namespace std;#define in Read()int in{ int i=0,f=1;char ch=0; while(!isdigit(ch)&原创 2020-09-12 16:47:00 · 119 阅读 · 0 评论 -
[校内模拟] 200905 Practice NOIP T3 Merge
似乎以前做过二分使用堆上次用的sort就直接挂掉了#include<bits/stdc++.h>using namespace std;#define in Read()int in{ int i=0,f=1;char ch=0; while(!isdigit(ch)&&ch!='-') ch=getchar(); if(ch=='-') ch=getchar(),f=-1; while(isdigit(ch)) i=(i<<1)+(i<.原创 2020-09-11 20:11:52 · 101 阅读 · 0 评论 -
[校内模拟] 200905 Practice NOIP T2 Parade
考虑递推,考虑DP考虑对已有序列的最后一个人因此记录状态fi,jf_{i,j}fi,j表示长度为iii,最后一个人是高度为jjj的总方案数有转移fi,j={∑k=1j−1fi−1,ki∈A∑k=ji−1fi−1,ki∉Af_{i,j}=\left\{\begin{aligned}&\sum_{k=1}^{j-1}f_{i-1,k}&&i\in A\\&\sum_{k=j}^{i-1}f_{i-1,k}&&i\notin A\end{al.原创 2020-09-11 19:56:15 · 99 阅读 · 0 评论 -
[校内模拟] 200905 Practice NOIP T1 Ball
开幕雷击首先特判:颜色数量就不守恒就不可能发现对于一个区间,按照最终顺序排序就可以实现但是在放最终顺序的时候应该倒着放:你是正着加进来的,就应该倒着放回去#include<bits/stdc++.h>using namespace std;#define in Read()int in{ int i=0,f=1;char ch=0; while(!isdigit(ch)&&ch!='-') ch=getchar(); if(ch=='-') ch=getc原创 2020-09-11 19:14:31 · 101 阅读 · 0 评论 -
[校内模拟] 200905 NOI Practice JSOI2016Day2 T1 病毒感染
Portkey考虑DP直接暴力会O(n3)O(n^3)O(n3)T飞考虑优化记前缀和si=∑j=1iajs_i=\sum_{j=1}^i a_jsi=∑j=1iaj首先求出走一段i→j→ii\to j\to ii→j→i死最多的人数考虑递推,考虑这一段人的两种死法:(1) 先治头一个村的人,后面的所有人多死两天(2) 最后来治头一个村的人,后面的人多死一天,头一个村庄的人死i×3i\times 3i×3天(走去,治疗,走回)设fi,jf_{i,j}fi,j表示走一段i→j→ii\t原创 2020-09-07 23:40:15 · 100 阅读 · 0 评论 -
[校内模拟] 200905 NOI Practice JSOI2016Day2 T3 炸弹攻击2
T3计算几何妙哉对于每个发射源,将激光塔和敌人按极角排序答案用前缀和求出有可能出现激光塔在发射源下方使得射不到敌人的情况需要用到环形DP选发射源O(n)O(n)O(n)选激光塔O(n2)O(n^2)O(n2)排序大概O(logn)O(\log n)O(logn)考虑优化发现激光塔可以优化对于一个发射源,aia_iai表示射线往左敌人的个数它对答案的贡献:ans=∑i=2n[(i−1)ai−∑j=1i−1aj]ans=\sum_{i=2}^n\big[(i-1)a_i-\su原创 2020-09-05 21:05:14 · 121 阅读 · 0 评论 -
[校内模拟] 200905 NOI Practice JSOI2016Day2 T2 反质数序列
Portkey考场想法筛质数n2n^2n2连边:加起来是质数的连边求最大独立集,转二分图:左部右部都是原先节点ans=(n*2-maxmatch)/2以下是一堆对这道题没用的废话求最大独立集:建反图所求为一个点集,使得其中所有点都能两两到达(团,但是NP完全问题不会)其实直接加起来不是质数的两个数连边就不必建反图了(为什么还要绕一下逻辑呢)废话结束Θ(n2logn)\Theta(n^2\log n)Θ(n2logn),二分需要一个log\loglog跑不过去???原创 2020-09-05 14:15:40 · 118 阅读 · 0 评论 -
[校内模拟] 200807 NOIP Practice Waterloo
T1 Candy不说了不说了大模拟#include<bits/stdc++.h>using namespace std;#define in Read()int in{ int i=0,f=1;char ch=0; while(!isdigit(ch)&&ch!='-') ch=getchar(); if(ch=='-') ch=getchar(),f=-1; while(isdigit(ch)) i=(i<<1)+(i<<3)+ch-原创 2020-08-07 23:17:53 · 104 阅读 · 0 评论 -
[校内模拟] 200806 NOIP Practice
topT1 Algor直接DFS都不用状压DP#include<bits/stdc++.h>using namespace std;#define in Read()int in{ int i=0,f=1;char ch=0; while(!isdigit(ch)&&ch!='-') ch=getchar(); if(ch=='-') ch=getchar(),f=-1; while(isdigit(ch)) i=(i<<1)+(i<&l.原创 2020-08-06 16:27:22 · 110 阅读 · 0 评论 -
[校内模拟] 200805 NOI Practice JSOI2016 哈希大法
T1 最佳团体Portkey分数规划∑i∈Kpi∑i∈Ksi≥mid⇒∑i∈K(pi−si×mid)≥0\begin{aligned}&\frac{\sum_{i\in K} p_i}{\sum_{i\in K}s_i}\ge mid\\\Rightarrow&\sum_{i\in K}(p_i-s_i\times mid)\ge 0\end{aligned}⇒∑i∈Ksi∑i∈Kpi≥midi∈K∑(pi−si×mid)≥0类似于背包由于要求维护拓.原创 2020-08-05 16:25:13 · 97 阅读 · 0 评论 -
[校内模拟] 200803Practice NOIP
文章目录T1 TreeT2 TransferT3 ShipT4 TranspT5 CandyT1 Tree映射一下(话说其实不需要开long long,数据够水)#include<bits/stdc++.h>using namespace std;#define in Read()int in{ int i=0,f=1;char ch=0; while(!isdigit(ch)&&ch!='-') ch=getchar(); if(ch=='-') ch=g.原创 2020-08-04 15:17:45 · 118 阅读 · 0 评论 -
[校内模拟] 200803Practice FJW2019C练习 T1 循环流Flow
需要理清思路a=1,挂n=2(1) a奇数,挂(2) b奇数,但a=0,挂(已经排除了a奇数的情况)其他情况n圆环需要n个点把1边和2边构成环不能构成环的情况:(1) 没有a或没有b,没问题(2) b=1,把它加到1环上去,在让一条边反向a+b>=n+1即可,这个1是连接两环的公共点判断有点复杂,希望下次搞得清楚#include<bits/stdc++.h>using namespace std;#define in Read()int in{ int原创 2020-08-03 15:18:09 · 109 阅读 · 0 评论 -
[校内模拟] 200731 NOIP Practice 咕T6
文章目录T1T2T3T4T5T6T1 Tree只由相邻两树决定#include<bits/stdc++.h>using namespace std;#define in Read()int in{ int i=0,f=1;char ch=0; while(!isdigit(ch)&&ch!='-') ch=getchar(); if(ch=='-') ch=getchar(),f=-1; while(isdigit(ch)) i=(i<<原创 2020-07-31 21:44:32 · 103 阅读 · 0 评论 -
[校内模拟] 200731 NOI Practice 全咕
文章目录T1T2T3T1 Paths关键词:斯坦纳树、DP 套 DP、最短路优化 DP害怕f(i,S)f(i,S)f(i,S)表示使点iii与点集SSS中所有点都连通的代价考虑转移:f(i,S)←f(i,T)+f(i,S−T)(1)f(i,S)\leftarrow f(i,T)+f(i,S-T)\tag{1}\\f(i,S)←f(i,T)+f(i,S−T)(1)(1)是点集合并的转移f(i,S)←f(j,S)+w(i,j)(2)f(i,S)\leftarrow f(j,S)+w(原创 2020-07-31 15:33:31 · 129 阅读 · 0 评论 -
[校内模拟] 200727NOIP T2 序列
好题!转化为后缀和并查集维护注意路径压缩注意合并有序#include<bits/stdc++.h>using namespace std;#define in Read()int in{ int i=0,f=1;char ch=0; while(!isdigit(ch)&&ch!='-') ch=getchar(); if(ch=='-') ch=getchar(); while(isdigit(ch)) i=(i<<1)+(i<<原创 2020-07-29 19:08:49 · 140 阅读 · 0 评论 -
[校内模拟] 200728Practice [省选联考 2020 A/B 卷] 冰火战士
很玄学感到我懂了,然鹅基本抄了标程真正的题解#include<bits/stdc++.h>using namespace std;#define in Read()int in{ int i=0,f=1;char ch=0; while(!isdigit(ch)&&ch!='-') ch=getchar(); if(ch=='-') ch=getchar(); while(isdigit(ch)) i=(i<<1)+(i<<3)+ch-原创 2020-07-28 15:36:53 · 209 阅读 · 0 评论 -
[校内模拟] 200724Practice NOIP
zgs说我要是考了500分我就可以不用再NOIP了????然鹅我T5把自己优化死了qwq我好难代码回家再粘边做边写题解爽啊T1大模拟sj巨巨后来编了个游戏你看我只会模拟,人家会编游戏T2先Tarjan判一判连通性(上午爽切题单,效果立竿见影)然后拓扑排序完事T3二分吧Vi<midV_i<midVi<mid直接不合法,才怪(看下样例三),它可以拿来填零补角(∑⌊Vimid⌋)≥m(\sum\lfloor\frac{V_i}{mid}\rfloor)\geq原创 2020-07-24 17:33:02 · 291 阅读 · 0 评论 -
[校内模拟] 200723Practice FJWC2019
看来还是练题少了这些套路都不知道(其实就T1该拿的分拿不到)T1 全连传送门被老伏抓走了一眼望去DP,没有后效性然后发现加的时候不能有效查询前面点是否都能加(考虑前面两点互相矛盾)然后就懒得码了实际上Θ(n3)\Theta(n^3)Θ(n3)还是有25pts的????正解记忆化记录一个fif_ifi表示前iii个音符选择iii时最大就行了,再记一维选不选要把问题搞复杂考虑前面两点互相矛盾,j≤i−tij\le i-t_ij≤i−ti且j+tj≤ij+t_j\le ij+tj≤i原创 2020-07-23 15:57:36 · 149 阅读 · 0 评论 -
[校内模拟] 200722Practice NOIP
太坑了T3 Db显然倒序加边最坑的是越界。。。乘法要开1ll#include<bits/stdc++.h>using namespace std;#define in Read()int in{ int i=0,f=1;char ch=getchar(); while(!isdigit(ch)&&ch!='-') ch=getchar(); if(ch=='-') ch=getchar(),f=-1; while(isdigit(ch)) i=(i<&原创 2020-07-22 11:23:57 · 87 阅读 · 0 评论 -
[校内模拟] 200718Practice (LCT)(似乎是群论)(DP)(咕*3)
T1 RecompileLCT咕了,先去学T2 Cirperm考场上想半天不知道怎么模意义下除法qwq求逆啊大哥一个排列两部分:循环节和循环节外面的不成循环节对于不成循环节,就是错位排列数(每个位上不能是自己)有iii个数的错位排列数记为DiD_iDi,那么Di=(i−1)!D_i=(i-1)!Di=(i−1)!对于循环节,选出m个长度为k的循环节总数为1m!∑i=1m(n−(i−1)kk)\frac{1}{m!}\sum_{i=1}^m\binom{n-(i-1)k}{k原创 2020-07-18 15:10:30 · 81 阅读 · 0 评论 -
[校内模拟] 200716Practice (前缀和)(Tarjan)(数位DP+树剖+化归为矩阵)
T1传送门考虑前缀和qwq记L[i]L[i]L[i]表示’o’以前的‘n’数,R[i]R[i]R[i]表示’o’以后的’i’数ans=∑i=lr[s[i]=o](L[i]−L[l])(R[i]−R[r])=∑i=lr[s[i]=o]L[i]R[i]+∑i=lr[s[i]=o]L[l]R[r]−L[l]∑i=lr[s[i]=o]R[i]−R[r]∑i=lr[s[i]=o]L[i]\begin{aligned}ans&=\sum_{i=l}^r[s[i]=\mathrm o](L[i]-L原创 2020-07-16 15:32:39 · 109 阅读 · 0 评论 -
[校内模拟] 200619-Practice(堆/二叉堆变数学)(密文/变图论/变Trie)(树/同构判断)(集合/提交答案)(浇花/交互式)
都是神题T1~T3比较常规,T4、T5新题型都是考场上想到了但是想不完,想完了写不出来(特别是T1~T3)并且今天不想打码(因为洛谷上没有我又不想用lemon)T1 Heap第一步要想到fp=(sizp−1lch)flchfrchf_p=\binom{siz_p-1}{lch}f_{lch}f_{rch}fp=(lchsizp−1)flchfrch虽然想这一步想了我几个小时,但是还是想出来了显然这一步不够,考虑推柿子fp=∏i=sizp−sizlchsizn−1isizlc原创 2020-06-19 15:20:29 · 174 阅读 · 0 评论 -
[校内模拟] 200617Practice CQOI 2018
文章目录T1 [Android](https://www.luogu.com.cn/problemnew/show/P4460)T2 [Baguenaudier](https://www.luogu.com.cn/problem/P4461)T3 [Xor](https://www.luogu.com.cn/problem/P4462)T1 Android状压DP不会,咕T2 Baguenaudier我有一个九连环,但是从来没玩过,初中的时候无聊看玩法说明,看到一句话:考虑先拆掉最远(最靠左)的环原创 2020-06-17 19:01:47 · 137 阅读 · 0 评论