本文最后更新于 105 天前,其中的信息可能已经有所发展或是发生改变。
A. A Gift From Orangutan
签到题,最大的放到第一个,最小的放到第二个
void solve(){
int n;
cin >> n;
int max = -1,min = 0x3f3f3f3f;
for(int i = 1;i <= n;i++){
cin >> a[i];
max = std::max(a[i],max);
min = std::min(a[i],min);
}
cout << (max - min)*(n - 1) << '\n';
}
B.Minimise Oneness
$f(t) = 2^{cnt_0} – 1,g(t) = 2^{cnt_1}*(2^{cnt_0} – 1)$
因此只需要有一个1
void solve(){
int n;
cin >> n;
cout << 1;
for(int i = 1;i <= n - 1;i++){
cout << 0;
}
cout << '\n';
}
C.A True battle
如果开头或者结尾是1,只需要添加or就行,如果有两个连续1,在其之间添加and,边上添加or,就能全部是1,判断这样的条件即可
void solve(){
int n;
cin >> n;
std::string a;
cin >> a;
if(a.front() == '1'){
cout << "YES" << '\n';
return;
}
if(a.back() == '1'){
cout << "YES" << '\n';
return;
}
for(int i = 1;i < a.size();i++){
if(a[i] == a[i - 1] && a[i] == '1'){
cout << "YES\n";
return;
}
}
cout << "NO\n";
}