上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 22 下一页
摘要: 考虑逆推就行了。 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n; 4 int a[1010][1010]; 5 int main(){ 6 scanf("%d",&n); 7 for(int i=1;i<=n;i++) 8 for( 阅读全文
posted @ 2022-06-11 16:51 YHXo 阅读(36) 评论(0) 推荐(0)
摘要: 一道单调队列优化DP的入门题。 f[i]表示到第i头牛时获得的最大效率。 状态转移方程:f[i]=max(f[j-1]-sum[j])+sum[i] ,i-k<=j<=i。j的意义表示断点,因为不能连续安排超过k只牛,肯定要在中间断开一处。 max中f[j-1]-sum[j]只和j相关,我们可以对其 阅读全文
posted @ 2022-06-11 15:49 YHXo 阅读(55) 评论(0) 推荐(0)
摘要: 数据加强了,原来nlogn的复杂度就不行了...... 首先对原来的n个数排序(注意不能用快排),因为值域是1e5,所以可以开桶排序,开两个队列,一个存原来的n个数(已经满足单增),另一队列存两两合并后的数(也是满足单调性的),每次合并从两个队列中选取最小的两个数,合并后放入第二个队列就行了。 更难 阅读全文
posted @ 2022-06-11 14:46 YHXo 阅读(115) 评论(0) 推荐(0)
摘要: 状态表示:dp[i]表示打印前i个单词的最小成本;s[i]维护前缀和。 状态转移:dp[i]=min(dp[j]+(s[i]-s[j])2)+m , 0<=j<i。 换成y=kx+b的形式:dp[j]+s[j]2=2*s[i]*s[j]+dp[i]-s[i]2-m。 算法步骤:1.枚举i=1...n 阅读全文
posted @ 2022-06-11 14:21 YHXo 阅读(43) 评论(0) 推荐(0)
摘要: 【问题描述】 最近,afy决定给TOJ印刷广告,广告牌是刷在城市的建筑物上的,城市里有紧靠着的N个建筑。afy决定在上面找一块尽可能大的矩形放置广告牌。我们假设每个建筑物都有一个高度,从左到右给出每个建筑物的高度H1,H2…HN,且0<Hi<=1,000,000,000,并且我们假设每个建筑物的宽度 阅读全文
posted @ 2022-06-11 09:25 YHXo 阅读(268) 评论(0) 推荐(0)
摘要: 本题的大意就是加最少的边使得图成为边双。 多举例子,画图分析可得:最终答案就是叶子节点(度数为1的点)的个数加1在除以2。 那么我们的目的就转化为找叶子节点: 首先通过tarjan找到割边,再dfs将原图分为几个边双(通过割边划分),缩点,最后统计度数为1的节点个数即可。 1 #include <b 阅读全文
posted @ 2022-06-10 21:55 YHXo 阅读(54) 评论(0) 推荐(0)
摘要: 在本题中很明显,给你一个有向图,要用tarjan缩点。 缩点后,一头牛要受到所有牛的欢迎,那么该点的出度要为0,这是容易证明的:如果该点还有出度,比如a连向b,那么a不受到b的欢迎。所以我们要找出度为0的点,找到后该点中点的个数就是答案。 注意:出度为0的点只能有一个,如果有多个出度为0的点,那么这 阅读全文
posted @ 2022-06-10 21:14 YHXo 阅读(74) 评论(0) 推荐(0)
摘要: 题目简述:一个有向图,求出这个图点数>1的强连通分量的个数。 那么就是tarjan求强联通分量的模板了。 记得要用一个数组标记节点是否在栈中。 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=1e5+10; 4 int h 阅读全文
posted @ 2022-06-10 19:40 YHXo 阅读(36) 评论(0) 推荐(0)
摘要: 圆方树大致理解:将每个点双看做一个新建的点(方点),该点双内的所有点(圆点)都向新建的点连边,最后形成一棵树,可以给点赋予点权,用以解决相关路径问题。 在本题中,方点点权赋值为该点双的大小,因为两个点双最多有一个交点,将圆点赋为-1来去重,先用tarjan()构建出圆方树,在跑一遍dfs,dfs枚举 阅读全文
posted @ 2022-06-10 19:09 YHXo 阅读(52) 评论(0) 推荐(0)
摘要: tarjan求割点的模板题。 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=1e5+10; 4 int head[N],to[N<<1],nxt[N<<1],tot; 5 int dfn[N],low[N],st[N], 阅读全文
posted @ 2022-06-03 14:37 YHXo 阅读(37) 评论(0) 推荐(0)
上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 22 下一页