![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
题解
gzx20210226
小G的世界怎能少了你?
展开
-
[题解]P2420
题目简述:见P2420题目分析:由于异或的性质: aaa^a=0a=0a=0,所以可以计算询问的两个点到根节点的路上的异或和进行异或即可。代码:#include<bits/stdc++.h>using namespace std;int n,u,v,val,m,d[100005];bool vis[100005];vector<pair<int,int> > e[100005];void dfs(int x){ vis[x]=true; for(原创 2022-01-25 09:17:51 · 429 阅读 · 0 评论 -
[题解]CF741B
题目简述:见洛谷CF741B题目分析:因为每个朋友组必须全选或选一人或不选,所以可以将一组中的每一个人和整个组的重量(体积)和beauty度(权值)加入一组中,进行分组背包DP即可。代码:#include<bits/stdc++.h>using namespace std;const int SYX=1005;//我的个人码风,可以理解成MAXN int n,m,v;//n,m如题意所述,v就是最大重量的限制 int w[SYX],b[SYX];//含义和题目相同 int f原创 2021-11-15 16:35:54 · 464 阅读 · 0 评论 -
[专题]动态规划综合
1.引入动态规划:动态规划_百度百科2.例题整理综合:1.P1439内容:模板LCS代码:#include<iostream>#include<cstdio>using namespace std;int a[100001],b[100001],map[100001],f[100001];int main(){ int n; cin>>n; for(int i=1;i<=n;i++){scanf("%d",&a[i]);map[a原创 2021-11-11 20:36:51 · 88 阅读 · 0 评论 -
[题解]CF145E
题目简述:见某谷CF145E Lucky Queries题目分析:线段树。在树中我们维护四个东西:最长不下降子序列的长度,最长不上升子序列的长度,4的个数和7的个数。线段树最重要的是 pushuppushuppushup,也就是合并。显然4的个数和7的个数就直接加一下,没什么好说的。因为数列中不是4就是7,所以这个最长不下降子序列一定有一个4和7的分界点。如果这个分界点在左儿子里,那么父节点的最长不下降子序列的长度就是左儿子的最长不下降子序列长度加上右儿子的7的个数。如果这个分界点在右儿子原创 2021-11-10 20:40:55 · 206 阅读 · 0 评论 -
[题解]CF662D
题目描述:见CF662D大致思路:长度为1的后缀可以表示10个年份。。长度为2的后缀可以表示100个年份。。长度为k的后缀可以表示10k10k个年份。。 这样加起来到长度为k+1k+1的后缀的时候,已经有tot=101+102+103+…+10ktot=101+102+103+…+10k个年份被唯一表示过了。 所以长度为k+1k+1的后缀可以表示的年份在1989+tot1989+tot到1989+tot+10k+1−11989+tot+10k+1−1之间。这样便可以根据后缀的位数唯一表示出年份了原创 2021-11-10 20:02:08 · 98 阅读 · 0 评论 -
P5502 [JSOI2015]最大公约数
文章目录1.题目描述题目描述2.算法思路3.我的代码1.题目描述题目描述洛谷P55022.算法思路枚举左端点,用队列存储、更新即可。复杂度:O( log2n\log_2^{n}log2n)3.我的代码代码(与洛谷题解十分相似,勿喷):#include <bits/stdc++.h>using namespace std;int n;queue<int> q;queue<int> l;long long a[100005],ans;lon原创 2021-10-03 19:57:10 · 154 阅读 · 2 评论 -
P1290 欧几里德的游戏
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录题目内容:来源:题目描述内容输入格式输出格式输入输出样例输入 #1输出 #1说明/提示思路:代码:总结:题目内容:来源:P1290 欧几里德的游戏题目描述内容欧几里德的两个后代 Stan 和 Ollie 正在玩一种数字游戏,这个游戏是他们的祖先欧几里德发明的。给定两个正整数 MM 和 NN,从 Stan 开始,从其中较大的一个数,减去较小的数的正整数倍,当然,得到的数不能小于 00。然后是 Ollie,对刚才得到的数,原创 2021-10-04 19:26:28 · 632 阅读 · 1 评论 -
[题解]CF33C Wonderful Randomized Sum
题目描述:CF33C Wonderful Randomized Sum思路:当变化的前缀和后缀相同时,中间重叠的部分相当于没有变化。设前缀为A,后缀为B,中间重叠部分为C,总合为S,则答案为-(A+B)+C,即2C-S的最大值。ps:于是乎,这题配不上绿题。这道橙题,一言以蔽之,就是最大子段和。P1115 最大子段和贴AC代码:#include<bits/stdc++.h>using namespace std;int n,a[100005],s,maxs,sum;i原创 2021-10-06 20:37:53 · 200 阅读 · 3 评论 -
[题解]CF1581A CQXYM Count Permutations
CF1581A CQXYM Count Permutations英文题,不要怕原创 2021-10-09 21:13:42 · 90 阅读 · 1 评论 -
[题解]CF106C
题目来源:见CF106C思路:一个再简单不过的背包,过程不尽述。这题也是蓝题???代码:#include<cstdio>#define max(a,b) (a>b)?a:busing namespace std;int n,m,a,b,c,d,dp[1010],ans;inline int read(){ int x=0,f=1; char c=getchar(); while(c<'0'||c>'9'){if(c=='-') f=-原创 2021-11-09 18:58:12 · 222 阅读 · 0 评论 -
[题解]CF60B
题意简述:见CF60B思路:一个简单的广搜,只要设置方向为三维即可。代码:(注释很全)#include<cstdio>//建议不用万能头,提高效率 #include<queue>//广搜必备的数据结构 using namespace std;int n,m,k;//k层数,n长,m宽 int ans;int sx,sy;//输入的第一层的x,y坐标 int dx[6]={0,0,0,0,1,-1};//x方向 int dy[6]={0,0,1,-1,0,0};原创 2021-11-07 22:10:32 · 69 阅读 · 0 评论 -
[题解]CF438D
要义:此题为一题多解的题目,旨在拓宽我们的思维。题目:见CF438D思路:线段树解法:注意到取模运算的性质:xxx modmodmod ppp <<< x2{x\over 2}2x (p<x)(p<x)(p<x)所以取模也最多是 logx\log xlogx 次,我们不妨记录区间最大值,如果最大值 <p<p<p 直接返回,就可以通过此题。代码:#include<iostream>#include<cstdio&原创 2021-11-05 20:05:07 · 137 阅读 · 0 评论 -
[题解]P1471
题目背景:见2021-11-03发表的我又回来了记得支持我!题目来源:见P1471思路:方差公式还有另一种形式,就是所有数的平方和的算术平均数减去这些数的算数平均数的平方。写出来就是:所以用线段树维护区间和和区间平方和就可以了。代码也非常简单。但是,在更新数据时,必须先更新区间平方和,再更新区间和,不然会出错。原因是:这就是原因所在。综上,这真是一道优秀的模板题。代码:#include<bits/stdc++.h>using namespace std;con原创 2021-11-03 20:48:23 · 90 阅读 · 0 评论 -
[题解]P1111
题目描述:P1111思路:最小生成树(MST),详情见[模板] MSTAC代码:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;struct p{ int x,y,t;}e[200000];int f[200000],n,m;int cmp(const p &a,const p &b)原创 2021-10-17 15:57:34 · 124 阅读 · 0 评论 -
[题解]P3957 [NOIP2017 普及组] 跳房子
前情预告:本题算法标签:动态规划、二分答案、单调队列。题目描述P3957 [NOIP2017 普及组] 跳房子思路:首先,从文章内容来看,“现在小 RRR 希望获得至少 kkk 分”这句话,很明显是在暗示我们使用二分答案的(不然你无法知道状态转移方程的转移量是多少)。可以将l设为0,r设为最右边的点的坐标(虽然可以再小一点,不过没必要),并且若最后连l都不成立,则无解,输出-1。接下来就是如何判断是否成立的问题了。显然使用动态规划(也是感觉问题)。dp[i]dp[i]dp[i] 表示跳到第原创 2021-10-17 15:19:29 · 468 阅读 · 0 评论 -
[题解]P2574
题目描述:P2574 XOR 的艺术思路:线段树维护区间1的值的个数。(用到了懒标记)。代码:#include<bits/stdc++.h>using namespace std;#define maxn 200005int a[maxn],n,m;string s;struct stree{ int l,r; int sum; int add;}t[4*maxn];void build(int p,int l,int r){ t[p].l=l,t[p].r=r原创 2021-10-17 12:47:06 · 109 阅读 · 1 评论 -
[题解]P1280
题目描述:P1280思路:(本时刻无任务)f[i]=f[i+1]+1;//继承上一个时刻的最大空闲时间后+1(本时刻有任务)f[i]=max(f[i],f[i+a[sum])//a[sum]表示在这个时刻的任务的持续时间,找出选择哪一个本时刻任务使空闲时间最大化很简单的事了,用vector防爆。代码:本代码自带快读。#include <bits/stdc++.h>using namespace std;inline int read(){ int x=0,f=1;char原创 2021-10-16 21:57:38 · 69 阅读 · 1 评论 -
划水的题解
题目:支持gzx20210226支持以太以北(不要忘记三连+评论)答案:#include<cstdio>#include<algorithm>#include<cstring>using namespace std;int ans[11];void check(){ int a[6]; memset(a,0,sizeof(a)); for(int i=1;i<=10;i++) { for(int j=1;j<=5;j++)原创 2021-10-16 21:40:01 · 184 阅读 · 1 评论 -
[题解]CF1051D
题目描述:CF1051D思路代码中有,不详细讲解了。#include<bits/stdc++.h>using namespace std;/*一个网格2行和n列,此网格的每个单元格应为黑色或白色。如果两个单元具有共同的边界并且共享相同的颜色,则它们被认为是邻居。 如果存在属于与B相同的组件的邻居A,则两个小区A和B属于一个联通。如果它具有正好的k个连通,那么我们称之为一个双色块。计算构成k个双色块的方案数。答案模998244353f[i][j][type] 第i列,已经有j原创 2021-10-16 21:34:48 · 89 阅读 · 1 评论 -
[题解]连通图(POJ1737/AcWing307)
前情预告:由于作者lan(双关),代码预计在11月1日前上传。题目描述:求 N 个节点的无向连通图有多少个,节点有标号,编号为 1∼N(N<=50)。例如下列图示,三个节点的无向连通图共 4 个。题解:状态转移方程:解释:考虑连通图数=总数-非连通图数,易得结论。代码:此题需高精度,日后姐答。...原创 2021-10-16 21:14:08 · 129 阅读 · 1 评论 -
[题解]CF10D LCIS
题目描述:CF10D LCIS思路:DP,算法进阶P226有,我也不仔细介绍了。ps:可以用类似背包的思想,优化空间(代码注释里都有)。贴AC代码:#include<bits/stdc++.h>using namespace std; int n,m,p,a[502],b[502],f[502],g[502];//g是记录路径(选择)的数组/*分析状态转移方程可知f[i][j]都是由f[i-1][j]得来的,因此可以优化空间,设f[i]代表的是a序列前i个元素与b序列的LCI原创 2021-10-06 21:03:58 · 135 阅读 · 2 评论 -
[题解] zelda
题目见zelda代码:#include<bits/stdc++.h>using namespace std;char x;int n,s[200005];int f[1<<26]; int main(){ scanf("%d",&n); scanf("%c",&x); for(int i=1;i<=n;i++){ scanf("%c",&x); s[i]=s[i-1]^(1<<(x-97)); } memse原创 2021-10-14 17:56:15 · 104 阅读 · 2 评论