牛客白月赛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题解的主要内容,如果未能解决你的问题,请参考以下文章