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

台州网站外包深圳网站推广公司

台州网站外包,深圳网站推广公司,网站建设兼容移动端,广西桂林简介AB 略 C 在一棵树上删除两点,使得这棵树的连通块最多。深度搜索遍历这棵树,记录此时遍历的所有点的最大的度数,和最大度数点的数量。然后每遍历一个点就假设这个点作为第二个断点,此时如果之前最大的度数的点不是唯一且是父节点…

AB 略

C

在一棵树上删除两点,使得这棵树的连通块最多。深度搜索遍历这棵树,记录此时遍历的所有点的最大的度数,和最大度数点的数量。然后每遍历一个点就假设这个点作为第二个断点,此时如果之前最大的度数的点不是唯一且是父节点,那么答案就是两者加和-1,否则-2

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+10;
int T,n,du[N],maxn,k,ans;
int ver[N*2],head[N],Next[N*2],tot;
void init()
{maxn=tot=k=ans=0;for(int i=1;i<=2*n;i++)ver[i]=Next[i]=0;for(int i=1;i<=n;i++)head[i]=du[i]=0;
}
void add(int x,int y)
{du[x]++;ver[++tot]=y;Next[tot]=head[x],head[x]=tot;
}
void dfs(int x,int fa)
{for(int i=head[x];i;i=Next[i]){int y=ver[i];if(y==fa) continue;if(du[x]==maxn&&k==1) ans=max(ans,du[y]+maxn-2);else ans=max(ans,du[y]+maxn-1);if(du[y]==maxn) k++;if(du[y]>maxn) maxn=du[y],k=1;dfs(y,x);}
}
void solve()
{cin>>n;init();for(int i=1;i<n;i++){int x,y;cin>>x>>y;add(x,y),add(y,x);}maxn=du[1],k=1;dfs(1,-1);cout<<ans<<endl;
}
signed main()
{std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>T;while(T--) solve();
}

D

问题转化为在数组a b上删数,每次可以选择一个数组删去上面的两个点,差值累加,并删去另一个数组一个点,问对于每次操作的最大累加差值是多少。先将a b排序,每次删去两个数时一定删首尾的,我们记a b数组累加操作删数的前缀和为sa sb。假设执行x次操作,有i次删累加删a,那么答案是 sa[i]+sb[x-i]。随着i的增加,sa递减,而sb递增,由此可见答案单峰,用三分即可在log时间内判断出每个x的最大值。

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+10;
int T,n,m,a[N],b[N],sa[N],sb[N],ans,O;
void init()
{ans=0;
}
int sanfen(int x,int l,int r)
{int val=0,vall=0;val=max(sa[l]+sb[x-l],sa[r]+sb[x-r]);if(r-l<=2){if(r-l==2) vall=sa[l+1]+sb[x-(l+1)];    return max(vall,val);}while(r-l>2){int mid=(l+r)/2;int midd=(mid+r)/2;if(sa[mid]+sb[x-mid]>sa[midd]+sb[x-midd]) {r=midd;val=max(val,sa[mid]+sb[x-mid]);}else {l=mid;val=max(val,sa[midd]+sb[x-midd]);}}return val;
}
void solve()
{cin>>n>>m;init();for(int i=1;i<=n;i++)cin>>a[i];sort(a+1,a+n+1);for(int i=1;i<=m;i++)cin>>b[i];sort(b+1,b+m+1);for(int i=1;i<=n/2;i++)sa[i]=sa[i-1]+a[n-i+1]-a[i];for(int i=1;i<=m/2;i++)sb[i]=sb[i-1]+b[m-i+1]-b[i];int nn=n,mm=m;while(nn&&mm){if(nn==1&&mm==1) break;if(nn>=mm) nn-=2,mm-=1;else nn-=1,mm-=2;ans++;}cout<<ans<<endl;for(int i=1;i<=ans;i++){cout<<sanfen(i,max(O,2*i-m),min(n-i,i))<<" ";}cout<<endl;
}
signed main()
{std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>T;while(T--) solve();
}

http://www.dtcms.com/wzjs/504274.html

相关文章:

  • 全球做的比较好的网站电商平台排行榜
  • 小程序代理招商公司seo网站优化服务合同
  • 做复刻衣服买网站苏州seo关键词优化排名
  • wordpress模板作者怎样去除嘉兴优化公司
  • 哪个网站有适合小学生做的题嘉兴seo网络推广
  • 自己做网站 需要会什么6哈尔滨seo优化
  • vk社交网站做婚介百度广告关键词价格表
  • wordpress画廊苏州网站优化公司
  • 制作网站要多少钱视频营销
  • 深圳龙华疫情北京seo优化wyhseo
  • 实用电子商务网站建立百度网站电话是多少
  • 做网站对服务器什么要求高千万不要去电商公司上班
  • 网站运营发展前景网站建设全包
  • 南昌市网站建设推广云搜索神器
  • wordpress评论啦seo实战技巧
  • 自己做网站 服务器职业技术培训
  • 正规的彩票网站怎么做环球网广东疫情最新消息
  • 外贸网站页面用什么做最好广告联盟平台挂机赚钱
  • 株洲网站建设平台百度软件中心
  • 菏泽网站建设公司官网百度快速排名优化服务
  • 兼职 网站 小程序 建设今日军事新闻视频
  • 常州网站推广排名推广网站平台
  • 中国疫情最新消息风险区山东关键词优化联系电话
  • 网站可以建几个人网络营销具有哪些特点
  • 在线crm系统功能模块分析合肥优化营商环境
  • 最新汽车网站大全亚洲7号卫星电视
  • 宁波网站建设公司地址学生个人网页优秀模板
  • 网站app生成器谷歌play商店
  • 如何查看域名以前是做什么网站的seo网站推广批发
  • dw网站制作怎么做滑动的图片bing收录提交