- 博客(11)
- 收藏
- 关注
原创 2020-11-28NOIP模拟T1【区间DP】
这道题一开始被卡贪心思路然后发现大样例都过不了良心大样例对于一个数列2 4 2 3 4 32\ 4\ 2\ 3\ 4\ 32 4 2 3 4 3,贪心思路只取444,但是显然取2 32\ 32 3更优。正解:区间DPDPDP,看到对于区间操作求最值,但又不是维护一些最大值最小值之类的区间性质的时候,就可以联想一下区间DPDPDP的方法。具体做法:令f[i][j]f[i][j]f[i]
2020-11-28 22:39:27 166
原创 琪露诺【单调队列优化DP】
琪露诺#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <string>using namespace std;const int N=400000+50;int a[N],q[N],f[N],head=1,tail=1,p;int n,l,r;int ans=0;inline int read(){ int
2020-11-06 11:10:36 137
原创 2020-11-05NOIP模拟T1【二分染色】【DP/01背包】
思路原题链接(考试题不要求输出方案)第一步:建反图这道题如果想到了建反图思路就很明显了。建反图:如果两个人不互相认识,就连一条边。对反图求出所有连通块。容易发现在反图里连通的点一定不是相互认识的且在反图中不同连通分量中的点一定是相互认识的,那么就是说如果在反图里有边那么在原图里一定不能在同一个集合中。对相邻的顶点进行二分图染色,如果相邻点可以被染成不同颜色,那么就可行,反之不行。那么这道题就是在反图上进行二分图染色判断。第二步:010101背包考虑这个染色问题的附加限制条件:要使两个集合的人数尽
2020-11-06 11:08:46 117
原创 2020-11-05NOIP模拟测T2
原题链接但我没加多组数据爆零了zbl题目中提供了一个跑路器概念,即走2k2^k2k长度需要1s1s1s,容易发现对于一条边,相当于202^020,所需时间也是1s1s1s,那相当于能绕2k2^k2k条边到达的点就可以连一条长度为111的边跑最短路。倍增判断从一个点到另一个点绕2k2^k2k次边是否可达即可。观察数据范围发现FloyedFloyedFloyed可过,最外层循环判断从一个点到另一个点绕2k2^k2k次边是否可达,内三层就是FloyedFloyedFloyed。总复杂度O(n3∗32)O(
2020-11-06 08:17:52 93
原创 矩阵快速幂
【模板】矩阵快速幂去年这个时候也是在学矩阵快速幂,但去年抄的ACACAC代码自己都看不懂了。。。神仙题解主要是用来优化递推的,对决策递推式构建一个矩阵然后快速幂就好了不知道为什么写的函数乘就错了,写重载运算符就对了,初始buildbuildbuild函数最好写在结构体里,或者记得加上&\&&记得long longlong\ longlong long#include <bits/stdc++.h>#define ll long long
2020-11-05 09:10:44 61
原创 2019-CSP-S划分
划分myymyymyy证明这道题其他博客已经讲的很清楚了,就是发现这个转移满足单调性然后能满足后面的一定满足前面。主要讲讲为什么单调队列的转移为什么是q[l+1]q[l+1]q[l+1]而不是q[l]q[l]q[l],由这道题目转移的性质,我们要把这道题决策点的转移尽量卡满(能靠右一定要靠右),那如果满足单调队列里队头决策点的下一个决策点能转移,那么当前队头决策点就一定能被弹掉。如果q[l]q[l]q[l]被弹掉了q[l+1]q[l+1]q[l+1]不一定能满足,那么这道题单调队列转移就会出问题。同时
2020-11-04 21:10:58 607
原创 2020-11-03 NOIP模拟 T2
题解对于nnn较小的情况进行动态规划。令f[i][j]f[i][j]f[i][j]为当前有i张重掷符卡,当前骰子点数为j,可能的最大期望伤害。如果使用了重掷符卡,那么从1+16∑k=16f[i−1][k]1+\frac {1}{6}\sum^{6}_{k=1}f[i-1][k]1+61∑k=16f[i−1][k]转移,否则丢弃这张符卡从f[i−1][j]f[i-1][j]f[i−1][j]转移。打表可以发现对于充分大的iii,f[i][j]=f[i−1][j]+1f[i][j]=f[i-1][j]
2020-11-04 09:24:35 100
原创 2020-11-03 NOIP模拟 T1
题意构造一棵树使其中恰有aaa个点度数为111,bbb个点度数为333,或输出无解。首先一个很显然的,如果b>a+2b>a+2b>a+2那么一定是无解的。然后b=a−3b=a-3b=a−3时一定也是无解的↓↓↓证明:设树上除了这a+ba+ba+b个点还有ccc个点,总点数为nnn,第iii个点度数为did_idi,则假设b=a−3b=a-3b=a−3对于度数关系有2(n−1)=a+3b+∑icdi=a+3(a−3)+∑icdi2(n-1)=a+3b+\sum^{c}_{i}d
2020-11-03 21:59:53 112
原创 2020-11-02 NOIP模拟T1
题解使用操作111只是为了给操作222或操作333凑整,因此问题变为递归考虑在进行了x1x1x1次操作111后再进行x2x2x2次操作222或者操作333使得(x1+x2)(x1+x2)(x1+x2)有最小值即可。于是按照这个思路对问题进行分治处理,设fnf_nfn为将nnn操作到000所需要的最小次数,可以得到如下式子:fn=min{fn,f(n/2)+(n%2),f(n/3)+(n%3)}f_n=min\{f_n,f_{(n/2)}+(n\%2),f_{(n/3)}+(n\%3)\}fn=
2020-11-03 10:15:45 108
原创 Vigenère 密码
VigeneˋreVigenèreVigeneˋre 密码简单题已经不会了,碰上简单题先不要着急写代码,告诉自己冷静下来一定能做出来,不要胡乱着急瞎写代码然后调很久浪费大量时间,冷静分析好性质和做法之后再写。暂时没想出来也不要慌,多造几组数据手玩找规律,写出来了先不要激动放下这道题,先手玩几组特殊数据看看有没有漏判情况。输出了样例之后发现它就是密文的字母序+秘钥的字母序+1在%26\%26%26情况下的字母序(其实是没看懂题目那个表具体啥意思但是猜到了应该是某种字母序在%26\%26%26的情况下经
2020-11-01 20:41:06 143
原创 2020-10-31 NOIP模拟T1
题意已知一个二叉搜索树,求依次插入而形成这颗树的序列数量思路首先建树是显然的(dbq我一开始想了很久这树咋建)二叉搜索树与别的普通的树不同,发现每个节点的位置其实只与它的父节点(看从哪个角度看吧,也可以说是子节点)有关,所以每次建树只需要记录它的左儿子和右儿子然后按照二叉搜索树的性质来建树就可以把这棵树建完了。然后我们继续观察这棵树,发现对于这个已知的树,每棵子树(包括整棵树)的根节点是确定的,然而每棵子树(不包括整棵树)的根节点又与它自己的父节点相关,于是我们就可以联想到树形DPDPDP了。对
2020-11-01 14:34:23 156
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人