算是有史以来打得最好的一场了吧,出了 题,
#include <bits/stdc++.h>
#define int long long
using namespace std;
char s[300];
signed main() {
cin >> (s + 1);
int n = strlen(s + 1);
if (n == 1) {
cout << 0 << endl;
return 0;
}
int f = 0;
for (int i = 1; s[i]; i++)
if (s[i] == '1')
f++;
int x = n - 1 >> 1;
x++;
if (f == 1 && n % 2)
x--;
cout << x << endl;
return 0;
}
#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main() {
int n, l, r, ans = 0, k = 1;
cin >> n >> l >> r;
ans = n - l;
for (int i = 1; i <= l; ++i) {
ans += k;
k <<= 1;
}
cout << ans << " ";
ans = 0, k = 1;
for (int i = 1; i < r; ++i) {
ans += k;
k <<= 1;
}
ans += (n - r + 1) * k;
cout << ans << endl;
return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 10;
int mp[110][110], a[maxn], n, m;
vector<int> v;
signed main() {
//freopen("in","r",stdin);
for (int i = 0; i < 110; i++) {
for (int j = 0; j < 110; j++)
mp[i][j] = 0x3f3f3f3f;
}
cin >> n;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
int tmp;
scanf("%1d", &tmp);
if (tmp)
mp[i][j] = 1;
}
}
for (int k = 1; k <= n; k++) {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (mp[i][k] + mp[k][j] < mp[i][j])
mp[i][j] = mp[i][k] + mp[k][j];
}
}
}
for (int i = 1; i <= n; i++)
mp[i][i] = 0x3f3f3f3f;
cin >> m;
for (int i = 1; i <= m; i++)
cin >> a[i];
v.push_back(a[1]);
int j = 1;
for (int i = 2; i <= m; i++) {
if (mp[a[j]][a[i]] != i - j) {
v.push_back(a[max(j + 1, i - 1)]);
j = i - 1;
}
}
v.push_back(a[m]);
cout << v.size() << endl;
for (int i = 0; i < v.size(); i++) {
if (i)
cout << " ";
cout << v[i];
}
return 0;
}
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn = 1e6 + 10;
char s[maxn], t[maxn];
int ll, rr, n;
signed main() {
cin >> s;
n = strlen(s);
for (int i = n - 1; i >= 0; i--) {
if (s[i] == '0')
ll++, t[i] = '0';
else if (s[i] == '1') {
if (rr >= ll)t[i] = '0';
else t[i] = '1', rr++;
}
}
cout << t << endl;
return 0;
}