F. Economic Difficulties

题目链接:

https://codeforces.com/contest/1263/problem/F

题目大意:

两棵树,都有n个叶子节点,一棵树正着放,一棵树倒着放,叶子节点从左到右对应装置1,2,3,4...n,问最多能删掉多少条边,使得装置能与两棵树任意一个根节点1相连。

解题思路:

mp[ i ][ j ]是装置 i 到 j 这段区间删除这段连续区间所能删除的最大边数,两个图分开看,算出每一个图中如果不连通这段区间对应的叶子节点所能删除的最大边数,取这两个图的最大值就是mp[ i ][ j ]。dp[ i ]代表前 i 个装置中的最大删除数,因此可以推出递推式dp[ i ]=max(dp[ i ],dp[j] + mp[ j ][ i ] ) 其中j是从0 - i。

代码:

 #include <bits/stdc++.h>
using namespace std;
const int N=3e3;
const int maxn=1e9+;
const int minn=;
vector<int>arr[N];//存图
int sz[N];//记录当删除这个点后最多能删除多少条边
int L[N],R[N];//记录第i个节点包含的设备区间中的最左端与最右端
int mp[N][N];//记录选取任意连续区间的设备并删除,可以删除最多几条边(连续是指删除的边在同一个图中)
int dp[N]; int dfs(int a,int pre){
if(a!=){//每个点都代表他上方的那条边,1的上方没有边
sz[a]=;
}
for(int i=;i<arr[a].size();i++){
if(arr[a][i]!=pre){
dfs(arr[a][i],a);
sz[a]+=sz[arr[a][i]];//记录删除这个点会删除多少条边
L[a]=min(L[a],L[arr[a][i]]);//这个点代表区间的左端点
R[a]=max(R[a],R[arr[a][i]]);//右端点
}
}
mp[L[a]][R[a]]=max(mp[L[a]][R[a]],sz[a]);//记录这个区间的最大删除边数
} int main(){
int n,a,b,v;
cin>>n;
for(int i=;i<;i++){
scanf("%d",&a);
for(int i=;i<=N;i++){
arr[i].clear();
L[i]=maxn;//初始化无穷大
R[i]=minn;//0
}
for(int i=;i<a;i++){//存图
scanf("%d",&v);
arr[v].push_back(i+);
arr[i+].push_back(v);
}
for(int i=;i<=n;i++){
scanf("%d",&v);//这个点代表的装置区间为i
R[v]=L[v]=i;
}
sz[]=;
dfs(,);
}
dp[]=;
dp[]=mp[][];
for(int i=;i<=n;i++){
for(int j=;j<=i;j++){
dp[i]=max(dp[i],dp[j]+mp[j+][i]);
}
}
cout<<dp[n]<<endl;
return ;
}

Codeforces Round #603 (Div. 2)F. Economic Difficulties的更多相关文章

  1. Codeforces Round #603 (Div. 2) F. Economic Difficulties dp

    F. Economic Difficulties An electrical grid in Berland palaces consists of 2 grids: main and reserve ...

  2. Codeforces Round #485 (Div. 2) F. AND Graph

    Codeforces Round #485 (Div. 2) F. AND Graph 题目连接: http://codeforces.com/contest/987/problem/F Descri ...

  3. Codeforces Round #486 (Div. 3) F. Rain and Umbrellas

    Codeforces Round #486 (Div. 3) F. Rain and Umbrellas 题目连接: http://codeforces.com/group/T0ITBvoeEx/co ...

  4. Codeforces Round #501 (Div. 3) F. Bracket Substring

    题目链接 Codeforces Round #501 (Div. 3) F. Bracket Substring 题解 官方题解 http://codeforces.com/blog/entry/60 ...

  5. Codeforces Round #499 (Div. 1) F. Tree

    Codeforces Round #499 (Div. 1) F. Tree 题目链接 \(\rm CodeForces\):https://codeforces.com/contest/1010/p ...

  6. Codeforces Round #603 (Div. 2) A. Sweet Problem(水.......没做出来)+C题

    Codeforces Round #603 (Div. 2) A. Sweet Problem A. Sweet Problem time limit per test 1 second memory ...

  7. Codeforces Round #603 (Div. 2)

    传送门 感觉脑子还是转得太慢了QAQ,一些问题老是想得很慢... A. Sweet Problem 签到. Code /* * Author: heyuhhh * Created Time: 2019 ...

  8. Codeforces Round #603 (Div. 2) (题解)

    A. Sweet Problem (找规律) 题目链接 大致思路: 有一点瞎猜的,首先排一个序, \(a_1>a_2>a_3\) ,发现如果 \(a_1>=a_2+a_3\) ,那么 ...

  9. Codeforces Round #376 (Div. 2)F. Video Cards(前缀和)

    题目链接:http://codeforces.com/contest/731/problem/F 题意:有n个数,从里面选出来一个作为第一个,然后剩下的数要满足是这个数的倍数,如果不是,只能减小为他的 ...

随机推荐

  1. python深度学习培训概念整理

    对于公司组织的人工智能学习,每周日一天课程共计五周,已经上了三次,一天课程下来讲了两本书的知识.发现老师讲的速度太快,深度不够,而且其他公司学员有的没有接触过python知识,所以有必要自己花时间多看 ...

  2. DateHandler日期处理工具(JSP中使用后台工具类)

    1.DateHandler.java package Utils.dateHandler; import java.text.ParseException; import java.text.Simp ...

  3. 学习C++的意义

    1,常见的观点: 1,并不是每个应届生都有机会写操作系统和驱动程序: 2,嵌入式系统也是软家系统,只不过是软件在出厂的时候已经被烧写到硬件中了,用户没有办法修改软件而已,因此嵌入式系统也是软件系统,C ...

  4. uboot第二阶段分析1

    一. uboot第二阶段初识 1.1. uboot第二阶段应该做什么 a. 概括来讲uboot第一阶段主要就是初始化了SoC内部的一些部件(譬如看门狗.时钟),然后初始化DDR并且完成重定位. b.  ...

  5. Python 实用脚本

    Python 实用脚本 脚本写的好,下班下得早!程序员的日常工作除了编写程序代码,还不可避免地需要处理相关的测试和验证工作. 例如,访问某个网站一直不通,需要确定此地址是否可访问,服务器返回什么,进而 ...

  6. HNUSTOJ-1520 压缩编码

    1520: 压缩编码 时间限制: 1 Sec  内存限制: 2 MB提交: 107  解决: 54[提交][状态][讨论版] 题目描述 某工业监控设备不断发回采样数据.每个数据是一个整数(0到1000 ...

  7. [零基础学python]啰嗦的除法

    除法啰嗦的,不仅是python. 整数除以整数 看官请在启动idle之后.练习以下的运算: >>> 2/5 0 >>> 2.0/5 0.4 >>> ...

  8. 爬虫之selenium 安装与 chromedriver安装

    今天学到一个有意思的插件,就是chromedriver,在爬虫的时候,如果网站反爬虫做的很好,自己又很想爬去里面的数据,那就可以用这个插件,虽然笨笨的,慢的一批,但是还有别的办法就不会用他啦, 这个东 ...

  9. jquery.lazyload (JS懒加载框架使用详解)

    /** 本地加载方式加载JS*/        NSString *path = [[NSBundle mainBundle] pathForResource:@"jquery.js&quo ...

  10. HBase(二)——搭建Standalone HBase

    HBase搭建--Standalone HBase 1.搭建方式说明 the setup of a single-node standalone HBase. A standalone instanc ...