当前位置: 首页 > news >正文

台州网站建设公司网站建设分金手指专业二

台州网站建设公司,网站建设分金手指专业二,ps怎么设计网页,展厅设计说明题干#xff1a; 给出一个n1个点的树#xff0c;以及p个点对#xff0c;需要断开一些点#xff0c;使得这p个点对路径不连通。输出应该断开的最少点数。 解题报告#xff1a; 从那p个点对入手的话#xff1a;首先考虑只有一对点的话#xff0c;肯定是这条路径上的随便…题干 给出一个n1个点的树以及p个点对需要断开一些点使得这p个点对路径不连通。输出应该断开的最少点数。 解题报告 从那p个点对入手的话首先考虑只有一对点的话肯定是这条路径上的随便一个点都可以。两个点对呢肯定是有交点就选交点没交点就只能破坏两个点了。多个点对呢比较难考虑了。也比较难想到正解贪心思维破坏两个点的LCA是最佳的。 从破坏的点入手破坏一个点可以影响到的是所有经过他的所有的路径转化到有根树中不难想到这个点就是lca。 当然这个题到这里还不够还需要加点贪心的思想对p个点对按照他们的lca深度从大到小排序如果某个点需要被破坏那么它的所有子节点子树都可以不再需要破坏别的点了因为它的子节点到别的子节点肯定是要经过该点的要注意这个前提是lca是排好序的。所以对应的操作就是对子树的所有节点都1。 为什么要排序呢因为这样就能保证当前处理到第i对点u,v如果这个点所在任意子树的某祖先x如果有被标记过那么这条路径一定就不用管了因为uv的lca一定深度小于x也就是说你u想到达v一定要经过x又因为x已经被破坏了所以这对点直接不用管了真神奇的想法 所以接下来问题就是判断现在在u,v之间的路径上有没有被破坏的点也就是查询u和v这两点的值是不是0的如果没有的话那么此时就要破坏这个lca点如果有的话就直接continue。 所以dfs序来维护子树然后用树状数组差分来维护区间和查询的时候查询单点值。当然这后一步可以直接用线段树来取代 AC代码 #includecstdio #includeiostream #includealgorithm #includequeue #includemap #includevector #includeset #includestring #includecmath #includecstring #define F first #define S second #define ll long long #define pb push_back #define pm make_pair using namespace std; typedef pairint,int PII; const int MAX 2e4 5; int n,in[MAX],out[MAX],clk,dep[MAX],id[MAX],c[MAX*10]; int fa[MAX][33]; vectorint vv[MAX]; struct Node {int a,b,lca;bool operator (const Node bb)const {return dep[lca] dep[bb.lca];} } p[MAX*5]; int lowbit(int x){ return x(-x); } int query(int pos) {int res 0;while(pos 0) {res c[pos];pos - lowbit(pos);}return res; } void update(int pos,int val) {while(pos MAX) {c[pos] val;pos lowbit(pos);} } void dfs(int cur,int rt,int deep) {in[cur] clk;dep[cur] deep;fa[cur][0]rt;id[clk] cur;int up vv[cur].size();for(int i 1; i31; i) {fa[cur][i] fa[fa[cur][i-1]][i-1];}for(int i 0; iup; i) {int v vv[cur][i];if(v rt) continue;dfs(v,cur,deep1);}out[cur] clk; } int lca(int u,int v) {if(dep[v] dep[u]) swap(u,v);for(int i 31; i0; i--) {if(dep[fa[u][i]] dep[v]) u fa[u][i];}if(u v) return u;for(int i 31; i0; i--) {if(fa[u][i] ! fa[v][i]) u fa[u][i],vfa[v][i];}return fa[u][0]; } int main() {while(~scanf(%d,n)) {int a,b;clk0;memset(fa,0,sizeof fa);memset(c,0,sizeof c);for(int i 0; in1; i) vv[i].clear();for(int i 1; in; i) {scanf(%d%d,a,b);a,b;vv[a].pb(b);vv[b].pb(a);}dfs(1,0,1);int q;scanf(%d,q);for(int i 1; iq; i) {scanf(%d%d,a,b);a,b;p[i].a a,p[i].b b,p[i].lca lca(a,b);}sort(p1,pq1);int ans 0;for(int i 1; iq; i) {if(query(in[p[i].a]) query(in[p[i].b]) 0) {ans;update(in[p[i].lca],1);update(out[p[i].lca]1,-1);}}printf(%d\n,ans);}return 0 ; }
http://www.yutouwan.com/news/480617/

相关文章:

  • 如何访问未备案的网站扶风网站开发
  • 苏州做网站建设有口碑的镇江网站优化
  • 温州市鹿城区建设小学网站工业产品设计软件
  • 济南网站建设凡科网络购物商城网站建设
  • 东莞优秀网站建设金融商城快捷申请网站模板下载
  • 营销型企业网站优点在线制作头像图片生成器
  • 现在网站建设用什么语言公司创建一个网站需要多少钱
  • 大良网站智能推广机构网站建设需要确定的问题
  • 可以做砍价链接的网站电脑培训班价目表
  • 网站 数据库办公室装修设计怎么设计
  • 公司做网站的费用怎么入账wordpress首页不显示指定分类
  • 网站专题二级页怎么做杭州百度推广公司有几家
  • 电子网站开发东营建设网
  • 浙江建设职业技术学院oa网站互联网舆情监测中心待遇
  • 咸宁住房和城乡规划建设局网站免费做链接的网站吗
  • 自己开个网站全国认可企业信息查询平台
  • 厦门网站建设中心网站建设用宝塔
  • 网站建设宗旨是指设计良好的网站一般需要怎么做
  • 上海哪个网站专门做宝宝宴的长沙传媒公司招聘信息
  • 怎样建自己的网站网站开发实例教程实训心得
  • 免费域名网站哪个最好怎么找到网站的空间服务商
  • 案例查询网站颍上网站建设
  • word模板网站wordpress菜单分级
  • 网站备案期间 搜索引擎来宾建设工程造价网站
  • 上海网站推广怎么制作简易网页
  • 陕西省住房与建设厅网站网站建设本科毕业设计论文
  • 中山网站建设seo135广告设计自学教程
  • 新网 网站建立wordpress uazoh7
  • 北京百度竞价托管岳阳seo官网
  • 手机网站图片锚链接怎么做中国建设银行网站首页 定投