- 博客(5)
- 问答 (1)
- 收藏
- 关注
原创 GSS7 - Can you answer these queries VII 线段树
做了4个小时,思考一小时,打代码20分钟,调试2个半小时没看题解,自己意淫的做法,习惯数组版的线段树,所以没办法像结构体一样返回多个参数,故用引用返回需要的知识:树剖,最近公共祖先,最大子段和变量:mx:最大子段和,lg:区间左起的最大和,rg:区间右起的最大和,sum:区间和,tag:区间修改标记一.树剖,基本操作void dfs1(int x,int pre){ fa[x]=pre; dep[x]=dep[pre]+1; sz[x]=1; int mxson=-1; fo
2022-04-20 08:51:45
167
原创 洛谷P2486 [SDOI2011]染色
思路很简单,实现细节有点多,做了两个半小时。学过树链剖分一眼就能看出来。先树链剖分把图建好,线段树维护链,lg,rs表示每个区间的左右端点颜色,seg表示区间颜色段数,tag是染色标记。id是树链上点的编号,W(大写)是树链上点的编号对应的颜色,w(小写)是树链的线段树上叶子的颜色。#include <bits/stdc++.h>#define mid (l+r)/2#define ls (k<<1)#define rs (k<<1|1)using
2022-04-18 08:48:31
150
原创 洛谷P2764 最小路径覆盖问题
#include <bits/stdc++.h>using namespace std;const int N=1e4+10,inf=0x3f3f3f3f,M=2e6+1;int n,m;int tot=1;int head[N],ver[M],nxt[M],edge[M];void add(int u,int v,int w=0){ ver[++tot]=v,nxt[tot]=head[u],head[u]=tot,edge[tot]=w;}bool v[N];int m.
2022-04-17 19:42:59
572
原创 洛谷P1941 [NOIP2014 提高组] 飞扬的小鸟
这道题做了一上午。先写个80分做法,就是暴力dp,四个点超时但也是最容易想到的。f[i,j]表示到第i列时高度为j时跳的最少次数。这里的j我们从b[i][0]+1开始到b[i][1]-1,只考虑每一列不被水管遮挡的位置的情况一.先考虑向上跳j分两类讨论1.j!=m时,就是一个完全背包,枚举k, k*x[i-1]<j时,即前一列跳k次到达当前这一列2.j==m时,前一列跳若干次一直跳到高度m(注意前一列高度为m也能跳过来,相当于平移),跳到m可以刚好跳到或者跳出了被挡在m。
2022-03-28 13:45:20
522
原创 2021-04-26
Monkey and Banana(HDU-1069)第一次写博客,随便看看就好了这题不会动态规划,我只会用递归哈哈#include <bits/stdc++.h>using namespace std;int n,maxx=-1;struct node{ int x,y,z;};node nodes[100];bool judge(int a,int b,int a1,int b1){ if(min(a,b)<min(a1,b1)&&max(
2021-04-26 20:09:31
97
空空如也
贿赂囚犯,区间动态规划
2021-05-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人