自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 2022年蓝桥杯C++b组省赛题解暨赛后补题

蓝桥杯省赛用的devc++,编译器不太熟悉,赛中的代码基本上没管理好,直接重新写一遍吧。赛中也不知道具体多少分,出结果省一,补下题准备下国赛,本文贴赛后整理的思路和代码。C:刷题统计思路:简单模拟。#include <bits/stdc++.h>using namespace std;long long a,b,n;long long get(long long num){ int i; if(num<=0) return 0; for(i=1;i&l

2022-05-02 20:43:17 1044

原创 Easy Climb UVA - 12170

单调队列+滑动窗口优化dp#include <iostream>#include <algorithm>#include <vector>using namespace std;#define ll long longll n, d;const int N = 105;ll a[N];ll f[N * N * 2];ll dp[N][N * N * 2];int fcnt;pair <ll, int> q[N * N * 2];con

2020-11-12 20:08:55 83

原创 线段树扫描线 学习笔记

见注释//参考 https://blog.csdn.net/qq_41280600/article/details/104089018#include <iostream>#include <algorithm>using namespace std;const int N = 205;struct Line{ int st; double s, e, x; bool operator < (const Line& w) const

2020-09-22 16:41:30 84

原创 kuangbin专题二十二 区间DP

Cake:这题涉及计算几何中的凸包,还没学,暂时跳过,等学了再来补。Halloween Costumes:不能直接模拟一个栈的原因:你不知道当前决策是要脱掉外层衣服 就可以有这个服装 还是需要新穿一个衣服例如数据:71 2 3 4 2 4 3本题应该使用区间dp,初始化假设一直穿衣服。如果a[j]!=a[j-1] 则f[i][j]=f[i][j-1]+1 否则没有+1然后再从小到大枚举区间,枚举一个k,只要a[k]与a[j]相等,那么说明我是可以把从k+1到j-1的所有衣服都脱掉,然后k位

2020-08-24 22:51:21 1219

原创 [CodeForces-149D] 题解

一道难度适中的区间dp,用记忆化搜索比较好处理。将字符串涂色的状态定义成动态规划的状态,容易推出需要记录区间的左右端点(是个区间dp基本都得这样做),由于题目限制左右端点的涂色,所以要记录左右端点信息,才知道下一步如何递推。所以,得出结论:用dp[a][b][c][d] 四位数组,分别表示字符串左区间、字符串右区间、左端点颜色、右端点颜色之后就是转移过程,见代码详尽注释。#include <iostream>#include <string.h>#include &lt

2020-08-23 16:13:22 71

原创 紫书例题8-10 抄书 UVA714

记录一下这题坑点。题面一看最大值尽可能小,划分成k块,明显是二分。既然是k块,需要划分k-1刀坑点:二分return true的时候,可能划分根本不足k块,需要按题意从左到右“补刀”记录此题提醒自己二分的时候注意题目挖下的陷阱,往往就隐藏在输出的要求之中,一开始看到要最左边尽可能小,我只想到了从右往左开始遍历,并没有想到此处暗含一个坑#include <iostream>#include <string.h>#include <algorithm>usin

2020-08-22 23:37:05 97

原创 暑假集训8月6日 dfs、bfs、tarjan

题目链接:dfs、bfs、tarjan今天只会一个拓扑排序留个坑学会了再补C:#include <iostream>#include<string.h>#include<queue>#include<algorithm>using namespace std;int indegree[205];int topo[205];int G[205][205];int m, n;priority_queue<int, vector&lt

2020-08-06 21:01:36 76

原创 暑假集训8月4日 哈夫曼树、AVL树、伸展树

A:思路:用队列维护的虚树方式替代建树,二分解决#include <iostream>#include <algorithm>#include <set>#include <queue>using namespace std;#define int long longconst int maxn = 100100;int a[maxn];queue <int> q,q2;int n, t;bool solve(int k)

2020-08-04 20:28:21 127

原创 暑假集训7月30日 二叉树、堆、树堆

题目链接:二叉树、堆、树堆A:思路:二叉树插入+前序遍历#include <iostream>using namespace std;const int maxn = 100100;int a[maxn];int k;struct node{ int val; node* lch, * rch;};node* insert(node* p, int x){ if (p == NULL) { p = new node; p->val = x; p-

2020-07-30 22:50:10 87

原创 算法竞赛入门经典(紫书) 第十一章题解

开始刷紫书第十一章图论,刷题之路十分艰难,只因我菜的深沉。例题11-2思路:kruskal 枚举边的起点,生成了最小生成树以后更新答案,立马换另一个起点进行枚举。#include <iostream>#include <algorithm>using namespace std;int n, m;const int maxn = 105;const int maxm = 1e5 + 5;struct node{ int u, v, w;}e[maxm];

2020-07-29 21:21:32 209

原创 7月28号暑假集训 二叉树

题目链接:二叉树A:题目要求:说来说去就是后序遍历转层序遍历思路:每碰到一个小写字母,那么这个小写字母一定是叶子节点,那么用数组模拟指针,开辟一个位置,这个位置放置这个小写字母,并且挂上小写字母的信息(左儿子,右儿子,id),挂上id这个信息便于他的父亲指向他,而叶子节点的左儿子、右儿子均为-1。如果碰到一个大写字母,大写字母一定是非叶子节点,那么大写字母一定是前面两坨东西的父亲(有可能是另一个大写字母带着一堆儿子,也可以是单独的小写字母),无论如何,前面两个字母都是它的儿子,那么思路就很清晰了,直接

2020-07-28 23:21:36 135

原创 暑假集训7月23日 树状数组 trie树 AC自动机

题目链接:树状数组 trie树 AC自动机A:思路:kmp直接进行匹配#include <iostream>using namespace std;char S[1000100];char T[10100];int nextval[10100];int n, m;void get_next(){ int i = 1, j = 0; nextval[1] = 0; while (i <= m) { if (j == 0 ||

2020-07-26 10:03:12 99

原创 暑假集训7月21日 manacher hash 并查集

A:思路:马拉车模板#include <string>#include <iostream>#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;string str;string s;int p[2000100];void getstr(){ str.clear();

2020-07-21 16:18:19 158

原创 7月21集训总结 manacher hash 并查集

马拉车算法:void getstr(int l,int r){ str.clear(); str.push_back('$'); for(int i=l;i<r;i++) { str.push_back('#'); str.push_back(s[i]); } str.push_back('#'); }void manacher(){ int m

2020-07-21 13:44:24 89

原创 暑假集训7月17日 递归与回溯

题目链接:https://vjudge.net/contest/383777A:思路:线性dp划分为子问题,逐步打表求解即可#include <iostream>using namespace std;int dp[12][12];//把M个苹果放到N个盘子里int main(){ for (int i = 1; i <= 10; i++) dp[i][0] = 1; for (int j = 1; j <= 10; j++) dp[0][j] = 1

2020-07-18 11:36:20 833

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除