首页 > 其他分享 >Codeforces Round 947 (Div. 1 + Div. 2)

Codeforces Round 947 (Div. 1 + Div. 2)

时间:2024-06-15 16:54:26浏览次数:24  
标签:cnt di 947 ll Codeforces siz Div dis

发现今天做不了一点题,遂来补以前的比赛。


B. 378QAQ and Mocha's Array

秒了。排序,取最小的数记为 \(x\),再取 最小的无法被 \(x\) 整除的数记为 \(y\),如果仍然存在无法被 \(y\) 整除的数,则无解。

C. Chamo and Mocha's Array

容易想到一个结论:如果一个数比它左边或右边的数小,那么它可以成为答案。但这样是不对的,样例:3 1 4 1 5。

正确结论:如果一个数向左右扩展两格后有比它大的数,那么它可以成为答案。

D. Paint the Tree

首先我们找到 \(a,b\) 点间靠近 \(a\) 的中点,以这个点作为根 \(root\),然后答案就是 \(\mathbf{2}*(n-\mathbf{1})+dis-dist\),\(dis\) 是 \(b\) 到 \(root\) 的距离,\(dist\) 是以 \(root\) 为根时的最大深度。

实际上很简单,只不过我赛时降智,一直在想走重儿子而不走最深的儿子,还坑了xht呜呜呜。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll N=2*114514,M=1919810;
struct xx{
	ll next,to;
}e[2*N];
ll head[2*N],cnt;
void add(ll x,ll y){
	e[++cnt].next=head[x];
	e[cnt].to=y;
	head[x]=cnt;
}
ll T;
ll n,m,k,x,a,b,rt;
ll siz[N],dis[N],son[N];
void dfs(ll u,ll fa){
	siz[u]=1,son[u]=0;
	for(int i=head[u];i;i=e[i].next){
		ll v=e[i].to;
		if(v==fa) continue;
		dis[v]=dis[u]+1;
		dfs(v,u);
		siz[u]+=siz[v];
		if(siz[son[u]]<siz[v]) son[u]=v;
	}
}
void getrt(ll u,ll tot){
	if(tot==0){
		rt=u;
		return;
	}
	for(int i=head[u];i;i=e[i].next){
		ll v=e[i].to;
		if(dis[v]>dis[u]) continue;
		getrt(v,tot-1);
	}
}
void solve(){
	cin>>n;
	cin>>a>>b;
	cnt=0;
	for(int i=1;i<n;++i){
		ll x,y;
		cin>>x>>y;
		add(x,y),add(y,x);
	}
	dis[a]=0,dfs(a,0);
	ll di=dis[b]-dis[a]; di=(di+1)/2;
	ll res=di,ans=0;
	getrt(b,di); //向上走di条边,取到靠a的中点
	dis[rt]=0,dfs(rt,0);
	for(int i=1;i<=n;++i) ans=max(ans,dis[i]);
	cout<<2*(n-1)-ans+res<<'\n';
	for(int i=1;i<=cnt;++i) head[i]=0;
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	cin>>T;
	while(T--) solve();
	return 0;
} 

标签:cnt,di,947,ll,Codeforces,siz,Div,dis
From: https://www.cnblogs.com/heshuwan/p/18249471

相关文章

  • Codeforces Round 836题解(A、B、C)
    A.SSeeeeiinnggDDoouubbllee直接将原字符串翻转一下拼到原字符串的后面就构成了回文串。strings;voidsolve(){cin>>s;cout<<s;reverse(s.begin(),s.end());cout<<s<<'\n';}B.XOR=Average分\(n\)的奇偶性考虑,若\(n\)为奇数,我们可以......
  • div+css布局实现个人网页设计(HTML期末作业)
    ......
  • Codeforces Round 952 (Div. 4) 题解分享
    A.CreatingWords思路模拟,交换输出即可codeinlinevoidsolve(){stringa,b;cin>>a>>b;swap(a[0],b[0]);cout<<a<<''<<b<<endl; return;}B.MaximumMultipleSum思路暴力枚举数学不会()codein......
  • Codeforces Round 952 (Div. 4)
    A读入两个字符串,交换第一位即可。B题意给定整数\(n\),求一个整数\(x\),满足:\(2\leqx\leqn\)。\(\displaystyle\sum\limits_{i=1}^ki\cdotx\)最大,其中\(k\)为满足\(kx\leqn\)最大的正整数。思路赛时思路可以直接枚举\(x\)的所有情况,暴力计算答案。......
  • Codeforces Round 952 (Div. 4)
    link赛时过了ABCD,rank15270,我嘞个豆啊,虽然菜成shi了,但是打得很开心,凌晨一点多还兴奋得不得了。就是网络好差,比赛开始好几分钟了还被关在外边。A-CreatingWordsB-MaximumMultipleSum签到题,略C-GoodPrefixes想到用前缀和,一开始写成每次往后一位后缀,只对最后一......
  • 如何对嵌套 div 表格进行排序?
    我正在寻找一种解决方案,以便能够根据一个"列"中的值对div表格进行排序。在下面的示例中,排序列的div类为"text-fl"。交互式排序,在这种排序中,数据最初是按照代码中的方式加载的,但如果用户选择按值排序,他们可以点击列标题。由于我的数据不在列表中,因此我认为我无......
  • Codeforces Round 952 (Div. 4)
    A.CreatingWordsvoidsolve(){ stringa,b; cin>>a>>b; swap(a[0],b[0]); cout<<a<<''<<b<<'\n';}B.MaximumMultipleSum总结:作为一个等差数列,快速的找到最高次系数,以及快速求和..C=n/x,sum=(c*x+......
  • 【结构识别】Reconstructing propagation networks with natural diversity and ident
    摘要从数据中重构复杂网络结构和动力学的能力是理解和控制复杂系统集体动力学的基础。尽管最近在这方面取得了进展,但利用随机动态过程的有限时间序列重建网络仍然是一个尚未解决的问题。我们提出了一个基于压缩感知的框架去重构发生随机扩散动力学的复杂网络。我们将该方法应用于......
  • Codeforces Problem 1980B Choosing cubes(基本排序)
    timelimitpertest1secondmemorylimitpertest256megabytesinputstandardinputoutputstandardoutputDmitryhas n......
  • LeetCode 974 Subarray Sums Divisible by K All In One
    LeetCode974SubarraySumsDivisiblebyKAllInOneLeetCode974能被K整除的子数组之和errosfunctionsubarraysDivByK(nums:number[],k:number):number{//-5/0/5letcount:number=0;//单个元素for(leti=0;i<nums.length;i++){......