牛客白月赛32题解

Posted 辉小歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客白月赛32题解相关的知识,希望对你有一定的参考价值。

https://ac.nowcoder.com/acm/contest/11163#question

目录

拼三角【枚举】

#include<bits/stdc++.h> 
using namespace std;
int a[15],st[15],flag;
bool check(vector<int> ve)

	sort(ve.begin(),ve.end());
	return ve[0]+ve[1]>ve[2];

void dfs(int index)

	if(index==3)
	
		vector<int>ve1,ve2;
		for(int i=0;i<6;i++)
			if(st[i]) ve1.push_back(a[i]);
			else ve2.push_back(a[i]);
		if(check(ve1)&&check(ve2)) flag=1;
		return;
	
	for(int i=0;i<6;i++)
	
		if(!st[i]) 
		
			st[i]=1;
			dfs(index+1);
			st[i]=0;
		
	

int main(void)

	int t; cin>>t;
	while(t--) 
	
		for(int i=0;i<6;i++) cin>>a[i];
		flag=0;
		memset(st,0,sizeof st);
		dfs(0);
		if(flag) puts("Yes");
		else puts("No");
	
	return 0;

用全排列更简单。

消减整数【思维】


转化成二进制后一定是一连串的,中间不能有0。往前进位就行。

#include<bits/stdc++.h> 
using namespace std;

int main(void)

	int t; cin>>t;
	while(t--) 
	
		int n; cin>>n;
		vector<int>ve;
		int cnt=0;
		ve.push_back(n);
		for(int i=0;i<32;i++) ve.push_back(0); 
		for(int i=0;i<32;i++)
			if(ve[i]&1) ve[i+1]+=ve[i]/2,ve[i]=ve[i]%2;
			else if(ve[i]) 
			
				int w=ve[i]/2-1;
				ve[i+1]+=w;
				ve[i]-=w*2;
			
		for(int i=0;i<ve.size();i++) cnt+=ve[i];
		cout<<cnt<<'\\n';
	
	return 0;

以上是关于牛客白月赛32题解的主要内容,如果未能解决你的问题,请参考以下文章

牛客白月赛8题解

牛客白月赛4 题解

牛客白月赛11题解

牛客白月赛12题解

牛客白月赛10题解

牛客白月赛14题解