坐等12点大神贴答案...【百度之星吧】
第一题,对于输入的每个数Ai,或者异或Ai或者不异或Ai,然后这样做一个深度优先搜索,看怎样一种情况能得到最大的异或值。
#include <iostream>
using namespace std;
int n, max1 = 0, max2 = 0;
int num[100000];
void dfs(int start, int current){
if(start == n) return;
dfs(start + 1, current);
current = current ^ num[start];
if(current > max2){
if(current > max1){
max2 = max1;
max1 = current;
}else{
max2 = current;
}
}
dfs(start + 1, current);
}
int main(){
cin>>n;
for(int i = 0; i < n; i++){
cin>>num[i];
}
dfs(0, 0);
cout<<max1<<' '<<max2<<endl;
return 0;
}
北海flash
第三题,是一个动态规划问题,题中有个前提,礼物数是大于朋友数的且礼物只有两种,所以考虑起来相对简单一些。代码如下:
#include <iostream>
using namespace std;
int num, ret, x[1000], y[1000];
int k1, a1, b1, k2, a2, b2;
int dfs(int start, int current, int n1, int n2){
if(start == num) return current;
else{
int temp1 = 0, temp2 = 0;
if(n1 > 0){
temp1 = dfs(start + 1, current + x[start] * a1 + y[start] * b1,n1-1, n2);
};
if(n2 > 0){
temp2 = dfs(start + 1, current + x[start] * a2 + y[start] * b2, n1, n2 - 1);
};
return (temp1 > temp2) ? temp1 : temp2;
}
}
int main(){
cin>>num;
for(int i = 0; i < num; i++){
cin>>x[i]>>y[i];
}
cin>>k1>>a1>>b1>>k2>>a2>>b2;
ret = dfs(0, 0, k1, k2);
cout<<ret<<endl;
return 0;
}
北海flash
函数命名习惯了,这类题目我都是这样命名,关键看自己理解了
北海flash
B、D没做出来,不做了,我也坐等大神指点.。Orz。。
网址:坐等12点大神贴答案...【百度之星吧】 https://mxgxt.com/news/view/125259
相关内容
百度贴吧绿色行动开启 影视明星到场倡议百度贴吧粉丝节明星粉丝力内参泄露:揭示明星真实身价
百度娱乐
百度年度明星票选
疯狂猜图名人明星,疯狂猜图1.3名人明星答案 疯狂猜图1.3名人明星答案图表大全
2017年娱乐圈吧新增吧规及吧友咨询建议申诉专贴
看图猜明星答案大全图文详解包括哪些明星?
希望能够早日侦破吧刁爱青 奇案 推理 天涯神贴 震惊
警方通报!案涉百位当红明星!
百度明星粉丝 百度明星控