2024牛客寒假算法基础集训营6

02-29 阅读 0评论

文章目录

  • A-宇宙的终结
  • B-爱恨的纠葛
  • C-心绪的解剖
  • D-友谊的套路
  • E-未来的预言
  • F-命运的抉择
  • I-时空的交织
  • J-绝妙的平衡

    A-宇宙的终结

    用试除法分解质因数,判断是否刚好分解为三个不同的质数

    2024牛客寒假算法基础集训营6,2024牛客寒假算法基础集训营6,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,最后,修改,.com,第1张
    (图片来源网络,侵删)
    #include
    #define endl '\n'
    #define int long long
    using namespace std;
    int l,r;
    void solve() {
    	cin>>l>>r;
    	for(int i=l;i
    		int x=i;
    		int cnt=0;
    		set
    			if(x%j==0){
    				while(x%j==0){
    					x/=j;
    					s.insert(j);
    					cnt++;
    				}
    			}
    		}
    		if(x1) cnt++,s.insert(x);
    		if(cnt==3&&(int)s.size()==3){
    			cout
    	ios::sync_with_stdio(false);
    	cin.tie(0);
    	cout.tie(0);
    	int t=1;
    //    cint;
    	while(t--) {
    		solve();
    	}
    	return 0;
    }
    
    	cin  n;
    	for (int i = 1; i 
    		int x;
    		cin  x;
    		ans.push_back({x, i});
    	}
    	sort(ans.begin(), ans.end());
    	int res = 2e9;
    	int aa;
    	int aaa, bbb;
    	for (int i = 1; i 
    		int l=0,r=ans.size()-1;
    		while(l
    			int mid=(l+r)/2;
    			if(ans[mid].first=a[i]) r=mid;
    			else l=mid+1;
    		}
    		if(l
    			aa=abs(ans[l].first-a[i]);
    			if(resaa) res=aa,aaa=i,bbb=l;
    		}
    		if(l0){
    			aa=abs(ans[l-1].first-a[i]);
    			if(resaa) res=aa,aaa=i,bbb=l-1;
    		}
    	}
    	//a[aaa]和b[ans[bbb].second]对应
    	swap(a[aaa],a[ans[bbb].second]);
    	for(int i=1;i
    	ios::sync_with_stdio(false);
    	cin.tie(0);
    	cout.tie(0);
    	int t = 1;
    //    cint;
    	while (t--) {
    		solve();
    	}
    	return 0;
    }
    
    	f[0]=0;
    	f[1]=1;
    	for(int i=2;i
    		int n;
    		cinn;
    		vector
    			int mid=(l+r+1)/2;
    			if(f[mid]
    			int mid=(l+r+1)/2;
    			if(f[mid]
    			int mid=(l+r+1)/2;
    			if(f[mid]
    			for(auto v:ans) cout
    	ios::sync_with_stdio(false);
    	cin.tie(0);
    	cout.tie(0);
    	int t=1;
    //    cint;
    	while(t--) {
    		solve();
    	}
    	return 0;
    }
    
    	cinp;
    	double ans1=pow(p,3)*pow(1-p,2);
    	double ans2=pow(p,2)*pow(1-p,3);
    	double ans=ans1+ans2;
    	printf("%.10f\n",ans);
    }
    signed main() {
    //	ios::sync_with_stdio(false);
    //	cin.tie(0);
    //	cout.tie(0);
    	int t=1;
    //    cint;
    	while(t--) {
    		solve();
    	}
    	return 0;
    }
    
    	cinst;
    	int x=0;
    	for(int i=2;i
    		x=x*10+s[i]-'0';
    	}
    	int cnt=(x+1)/2;
    	map
    		if(t[i]=='R') mp[0]++;
    		else mp[1]++;
    		if(mp[0]==cnt){
    			cout
    			cout
    	ios::sync_with_stdio(false);
    	cin.tie(0);
    	cout.tie(0);
    	int t=1;
    //    cint;
    	while(t--) {
    		solve();
    	}
    	return 0;
    }
    
    	if(p[x]!=x) p[x]=find(p[x]);
    	return p[x];
    }
    bool st[N];
    int prime[N];
    int cnt;
    //欧拉筛
    void get_prime(int n){
    	for(int i=2;i
    		if(!st[i]) prime[cnt++]=i;
    		for(int j=0;prime[j]
    			st[prime[j]*i]=true;
    			if(i%prime[j]==0) break;
    		}
    	}
    }
    int n;
    int a[N];
    unordered_map
    	ans.clear();
    	cinn;
    	for(int i=1;i
    		int x=a[i];
    		for(int j=2;j
    			if(x%j==0){
    				while(x%j==0){
    					x/=j;
    					ans[j].push_back(i);//含有质因子j的数的下标
    				}
    			}
    		}
    		if(x1){
    			ans[x].push_back(i);
    		}
    	}
    	for(auto v:ans){
    		auto tmp=v.second;
    		for(int i=1;i
    			int a=find(tmp[i]),b=find(tmp[i-1]);
    			if(a!=b) p[a]=b;
    		}
    	}
    //	for(int i=1;i
    		if(find(i)==i){
    			first=i;
    			break;
    		}
    	}
    	for(int i=1;i
    		if(find(i)==first) res1.push_back(a[i]);
    		else res2.push_back(a[i]);
    	}
    	if(res2.size()==0){
    		cout
    	ios::sync_with_stdio(false);
    	cin.tie(0);
    	cout.tie(0);
    	int t=1;
        cint;
    	while(t--) {
    		solve();
    	}
    	return 0;
    }
    
    	cinnm;
    	for(int i=1;i
    		if(a[i]==0) ok=true;
    	}
    	for(int i=1;i
    		if(b[i]==0) ok=true;
    	}
    	dp1[0]=0;
    	for(int i=1;i
    		dp1[i]=max(a[i],dp1[i-1]+a[i]);
    		dp2[i]=min(a[i],dp2[i-1]+a[i]);
    	}
    	for(int i=1;i
    		dp3[i]=max(b[i],dp3[i-1]+b[i]);
    		dp4[i]=min(b[i],dp4[i-1]+b[i]);
    	}
    	int ans1=0,ans2=0,ans3=0,ans4=0;
    	for(int i=1;i
    		ans1=max(ans1,dp1[i]);
    		ans2=min(ans2,dp2[i]);
    	}
    	for(int i=1;i
    		ans3=max(ans3,dp3[i]);
    		ans4=min(ans4,dp4[i]);
    	}
    	int ans=-2e9;
    	if(ans10&&ans30) ans=max(ans,ans1*ans3);
    	if(ans2
    		cout
    		cout
    		if(a[i]0) r1.push_back(a[i]);
    		else r2.push_back(a[i]);
    	}
    	for(int i=1;i
    		if(b[i]0) r3.push_back(b[i]);
    		else r4.push_back(b[i]);
    	}
    	if(r1.size()) sort(r1.begin(),r1.end());
    	if(r2.size()){
    		sort(r2.begin(),r2.end());
    		reverse(r2.begin(),r2.end());
    	}
    	if(r3.size()) sort(r3.begin(),r3.end());
    	if(r4.size()){
    		sort(r4.begin(),r4.end());
    		reverse(r4.begin(),r4.end());
    	}
    //	cout
    	ios::sync_with_stdio(false);
    	cin.tie(0);
    	cout.tie(0);
    	int t=1;
    //    cint;
    	while(t--) {
    		solve();
    	}
    	return 0;
    }
    
    	int res=1;
    	for(auto v:e[x]){
    		dfs(v);
    		if(!mp[v]) res+=sum[v];//加上白色节点上的数字,红色节点不用管,因为已经是3的倍数了
    	}
    	if(mp[x]){
    		if(res%3==2) ans[x]++;//权值和加1变为3的倍数
    		else if(res%3==1){//权值和加2为3的倍数
    			//将节点x加1,以及它的一个子节点加1,一开始赋值为1,每个节点最多加1
    			ans[x]++;
    			ans[e[x][0]]++;//自底向上,如果有解的话,红色节点的儿子节点中一定有白色节点,对于红色节点,如果res%3==1,就算儿子节点的红色节点+1,它也会通过递归往下调整
    		}
    	}
    	sum[x]=res;//x节点的子节点的权值之和
    }
    void solve() {
    	cinns;
    	for(int i=1;i
    		if(s[i]=='R') mp[i+1]=1;
    	}
    	for(int i=2;i
    		int x;
    		cinx;
    		e[x].push_back(i);//i的父节点为x
    	}
    	bool ok;
    	for(int i=1;i
    		sum[i]=1,ans[i]=1;//每个节点先赋值为1
    		ok=false;
    		for(auto v:e[i]){//儿子节点中存在白色节点
    			if(!mp[v]){
    				ok=true;
    				break;
    			}
    		}
    		if(mp[i]&&!ok){//当前节点为红色且儿子节点中不存在白色节点,无解
    			cout
    	ios::sync_with_stdio(false);
    	cin.tie(0);
    	cout.tie(0);
    	int t=1;
    //    cint;
    	while(t--) {
    		solve();
    	}
    	return 0;
    }
    

免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,人围观)

还没有评论,来说两句吧...

目录[+]