03 2023 档案
摘要:开 struct 记录月,日,名称 记得把XH、DH放在最前面。 然后处理问题只需要从前往后遍历⼀遍所有节⽓,判断⽉份和⽇⼦是否⼤于等于当前⽇⼦,是的话直接 输出然后 break。因为节⽓是按顺序放⼊数组的,所以第⼀个满⾜条件的就是答案。 由于本人是只懒🥚所以只写后半部分 伪代码使懒人快乐~~~~
阅读全文
摘要:这是一道周赛题目,完全背包模板,但是打周赛的时候眼一瞎,手一抖,看成了01模板,写出了01模板,嘤嘤嘤,来复习一下完全背包动态转移方程:f[i][j]=max(f[i-1][j],f[i][k-p[i]]+k[i]); 对了再顺便讲一下压缩版 f[i , j ] = max( f[i-1,j] ,
阅读全文
摘要:这道题目因为n是1e5级别的所以输入一次再排序一次不现实,辣么有两个东西可以写这道题目,1小根堆(免去排序时间),2二分插入,由于小根堆太难写了所以采用第二种方法,简简单单~ #include <bits/stdc++.h> using namespace std; int n; vector<in
阅读全文
摘要:显然是一道遍历树再加上判断权值的题目,只要注意只能往上走即可(回溯不算往下走) #include <bits/stdc++.h> using namespace std; const int MAXN=2e4; int n,q; int fa[MAXN],a[MAXN]; vector<int> a
阅读全文
摘要:暴力枚举即可,用vis[i]表示第i个人被没被抓,或者就是在图中求环长度。 #include<bits/stdc++.h> using namespace std; const int N=2010; int n,p[N],vis[N]; int main() { ios::sync_with_st
阅读全文
摘要:先来看看要求,能100%还原那么什么情况能只有一种还原方式呢?那就是上下限已定,差值为一的情况下(还有个递增,但题目数据给了递增所以没写)像1**4只有1234一种改法那么题目变为在数组中找连续的差值为1的数列截头去尾(因为要有上下限)的长度。(记得取max) 程序: #include<bits/s
阅读全文
摘要:题解:照着写树板子 #include<bits/stdc++.h> using namespace std; using LL=long long; const int N=30; const int maxN=1e5+5; int n,m; int a[maxN],dep[maxN]; int f
阅读全文
摘要:这道题并不需要高精度。我们把数字当字符串读入进来,把数字倒过来考虑, 然后用 ai 表示第 i 位的数字。 一个小学奥数常识:一个数是 4 的倍数,等价于它的最后两位是 4 的倍数。(为 什么?) 倒过来之后,也就相当于我们只需要管前两位是啥就行。 首先,我们可以考虑啥都不删,那么只需要判断前两位组
阅读全文
摘要:题目 这道题目十分简单,只要将奇数偶数分别放起来就可以了,4例外,排法为 3 1 4 2 程序 #include<bits/stdc++.h> using namespace std; int n; int main() { ios::sync_with_stdio(false); cin>>n;
阅读全文
摘要:题目 这道题目用暴力即可,两种方法,第一种用的是暴力dfs不用多讲 第二种方法细讲,先开 int s[N] 当s[i]的第j位为1是表示i j相关联,反之不相关连,当然了s[i][i]=1,有点类似邻接矩阵 枚举任意操作开关的⽅案时,也可以使⽤⼆进制数来枚举。具体来说,枚举2到2^n之内的所 有数字
阅读全文
摘要:暴力吗,没什么技术含量。 程序: #include<bits/stdc++.h> using namespace std; int n,m; int a[101]; string s[1002]; int vis[101]={0}; int main() { ios::sync_with_stdio
阅读全文
摘要:题目 那么先把A1,A2所组成的等式列出来: 解出A1: 之后,我们可以发现问题变成了求1~n之间任意和为A1的可能性——01背包。顺便看一眼,要用long long! 完整代码: #include<bits/stdc++.h> using namespace std; int n,m; long
阅读全文
摘要:题目: 那么题目里面有需要求因数之和的程序,那么我们先来写一个求因数之和的程序: int w(int k) { int ans=0; for(int i=1;i*i<=k;i++) { if(k%i==0) { ans+=i; if(i*i!=k) { ans+=k/i; } } } return
阅读全文
摘要:遇事不决先排序。 排完序之后,枚举第i个点,看第i个点和前面i−1个点的距离之和是多 少。这时,由于已经排过序,知道答案应当为 (xi−xi−1)+(xi−xi−2)+···+(xi−x1) =i×xi−(xi−1+xi−2+···+x1) 用sum记录答案,枚举i即可 试一试: #include
阅读全文
摘要:注意要求的第三点他的意思翻译成人话就是要平均分配每个字母出现的个数,辣么每个字母会至少出现FLOOR(n/k)次但是会漏下n%k个位置,由于我们要求字典序最小,我们就把剩下的全给'a',那么a出现n/k+n%k,其他字符按顺序依次出现n/k次即可,但是还有要求,要全是小写字母和前k个数字都要出现,十
阅读全文