![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
题解
文章平均质量分 55
倞涼諒
NLP&CV
展开
-
Tom‘s Stutter
不知道为什么错误#include <iostream>#include <string>#include <algorithm>#include <cmath>#define MaxSize 1005using namespace std;int main(){ string s, s2; string::size_type loc, pos; s2 = "OH-OH-OH-QQ-PEI-PEI-SHION"; while(get.原创 2022-02-28 15:32:28 · 138 阅读 · 0 评论 -
P1018 乘积最大 题解
P1018 乘积最大该题就是DP + 高精度状态转移方程:dp[ i ] [ k ] = max(dp[ j ] [ k - 1] * (i + 1 到 n 组成的数), dp[ i ] [ k ])dp[ i ] [ k ]表示的状态为,前i个数已经放了k个乘号(包括第i位后面的乘号)struct node { int val[maxn], len; bool exist;}f[maxn][10], ans[maxn];上面这代码是记录数据的结构体len就是数据的位数,val[ ]记原创 2020-10-15 23:16:05 · 174 阅读 · 0 评论 -
P2121 拆地毯 题解
P2121 拆地毯这题考察的就是并查集(忘了并查集怎么做,刷题水题回忆回忆)思路就是对地毯以美丽度为关键字,由大到小进行排序保留的地毯,地毯的两端相连的部分将合并,所以保留的地毯,原先两端不属于一类,这就避免了产生环。#include <bits/stdc++.h>using namespace std;const int maxn = 1e5 + 5;struct node { int u, v, w;}a[maxn];int n, m, k;int f[maxn];原创 2020-10-14 23:16:43 · 225 阅读 · 0 评论 -
P1020 导弹拦截 题解
题目入口#include <bits/stdc++.h>using namespace std;const int maxn = 1e5 + 5;int a[maxn], dp[maxn], top;int f[50050];int ask(int x){ int ans = 0; for(int i = x; i > 0; i -= i&-i) ans = max(ans, f[i]); return ans;}void updata(int x, in原创 2020-10-13 22:30:28 · 143 阅读 · 0 评论 -
P2216 [HAOI2007]理想的正方形 题解
P2216 [HAOI2007]理想的正方形由于是二维区间查询,就用了二维st表原理也很简单,懂得st表就可以看懂不懂st表的可以参考ST表 RMQ ST表模板#include <bits/stdc++.h>using namespace std;const int maxn = 1e3 + 5;int a, b, n;int v, k, l;int st_min[maxn][maxn][11], st_max[maxn][maxn][11];void init(){ fo原创 2020-10-11 20:59:34 · 127 阅读 · 0 评论 -
ST表 RMQ ST表模板
ST表模板RMQRMQ(Range Maximum/Minimum Query),即区间最值查询问题。初始化时间复杂度:O(n*log2 n)st[ i ][ j ],存储的是 i 到 i + 2^j - 1的最值。首先初始化st[ i ][ 0 ] = a[ i ]len = r - l + 1,k = log2(len),2^k >= t/2[l, r]的最值 也就是求[l, l + 2k] 和 [ r - 2k, r]的最值,两者有交集,所以得出的结果就是[ l, r ]原创 2020-10-10 23:35:07 · 106 阅读 · 0 评论 -
P1052 过河 题解
题目入口 洛谷!!!dp数组开大了 初始化为1e9,然后一直报错,案例都过不了,对题解也没错,前后浪费好几小时。由于桥的长度为 L(1 <= L <= 1e9),所以需要对坐标进行离散化,离散后最坏的长度 2000,这时候可以进行 一维动态规划。状态转移方程:dp[ i ] = min( dp[i - j] + v[ i ], dp[ i ] ) i >= j注意:当事人很后悔没注意看题,所以终点是一个范围不是一个点#include <bits/stdc+原创 2020-10-09 16:04:13 · 105 阅读 · 0 评论 -
P3431 [POI2005]AUT-The Bus-----DP + 树状数组 + 二维坐标离散化
题目描述:P3431 [POI2005]AUT-The Bus该题二维坐标分布广,且点稀疏,所以对点坐标进行离散化,二维坐标离散化(蒟蒻)利用树状数组的动态维护区间的特性,进行动态规划DP+树状数组 核心代码:for(int i = 1; i <= k; i++){ // 能走到f[i].y 的最大值 与 f[i].k的值和作为 dp[ i ]的值 dp[i] = ask( f[i].y) + f[i].k; // 由于 f[ i ]点的加入,更新右边的dp[ ] updat原创 2020-10-07 23:21:37 · 101 阅读 · 0 评论 -
一维树状数组模板
强推学习树状数组视频:完全理解并深入应用树状数组 | 支持多种动态维护区间操作P3374 【模板】树状数组 1P3368 【模板】树状数组 2什么是树状数组树状数组是用数组模拟树形结构树状数组可以解决的问题单点修改区间修改区间查询区间修改树状数组的优缺点两者修改查询操作时间复杂度操作朴素数组树状数组单点修改1log2(n)区间查询nlog2(n)多次操作n^2nlog2(n)构建树状数组for(int i = 1; i &原创 2020-10-06 10:31:28 · 90 阅读 · 0 评论 -
P1122 最大子树和
题目描述P1122 最大子树和dp解题思路:找到一个边界当做树的根,对每个节点采取保留,该节点的值dp[ x ] ,为f[ x ] 和 所有相连未访问过的节点最大和对A点 dp[ A ] = f[ A ] + max(-1, 0) + max(3, 0) = -2即选择A点, 对于A相连的节点,只要是大于0,都保留去掉 -2 保留 3对B点 dp[ B ] = f[ B ] + max(3, 0) + max(2, 0) = 1也就是负的dp都去掉,保留非负dpfor(int i =原创 2020-10-05 15:08:17 · 151 阅读 · 0 评论 -
P1352 没有上司的舞会
题目:P1352 没有上司的舞会算法标签:dp,搜索,树形结构,记忆化搜索从树的头往下求结果会有后效性,且有多个叶子节点,数据不易处理则采用,叶子节点往头部求结果对于某一节点,有选择和不选择两种情况1、不选择的话 记 dp[ ][ 0 ]for(int i = 0; i < a[x].tail.size(); i++){ f[x][0] += max(f[son][0], f[son][1]); }2、选择的话 记dp[ ][ 1 ]for(int i = 0;原创 2020-10-04 22:20:17 · 78 阅读 · 0 评论 -
P1433 吃奶酪
P1433 吃奶酪DFS方法状压dpDFS方法最后一组测试超时#include <iostream>#include <iomanip>#include <cmath>using namespace std;const int maxn = 20;struct node { double x, y;}f[maxn];bool vis[maxn];double dis[maxn][maxn], dis_min = 1e9;int n;void原创 2020-10-03 11:01:14 · 63 阅读 · 0 评论