A. 小红小紫投硬币
#include<iostream>
using namespace std;
int main()
{
cout<<0.500000;
return 0;
}
B.小红的字符串
#include<bits/stdc++.h>
using namespace std;
int solve(string s) {
int n = s.length();
int operations = 0;
for (int i = 0; i < n / 2; ++i) {
char left = s[i];
char right = s[n - 1 - i];
int dist = abs(left - right);
int minDist = min(dist, 26 - dist);
operations += minDist;
}
return operations;
}
int main() {
string s;
cin >> s;
cout << solve(s) << endl;
return 0;
}
C.小红的 01 消除
#include<bits/stdc++.h>
using namespace std;
string a;
int found(int i)
{
for(int j=i;j>=0;j--)
{
if(a[j]=='1')
{
return j;
break;
}
}
return -1;
}
int main() {
int n,x,y,z;
cin>>n;
cin >> a;
cin>>x>>y>>z;
int i,j;
int y_num=0;
int now_1,now_0,now_3;
for(i=n-1;i>=0;i--)
{
if(a[i]=='1')
{
now_1=0;
break;
}
}
for(;i>=0;i--)
{
if(a[i]=='1')
{
now_1++;
}
else if(a[i]=='0')
{
if(now_1>=1)
{
now_1--;
y_num++;
}
else
{
i=found(i)+1;
if(i==0)
{
break;
}
}
}
}
if(y_num>y)
{
y_num=y;
}
cout << y_num<< endl;
return 0;
}
D.小红组比赛
#include <bits/stdc++.h>
using namespace std;
int MAXN = 100;
int MAXM = 20;
int MAXSUM = 5000;
int n, m, target;
int a[101][101];
int main() {
cin >> n >> m;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
cin >> a[i][j];
}
}
cin >> target;
vector<bool> dp(MAXSUM + 1, false);
dp[0] = true;
for (int i = 0; i < n; ++i) {
vector<bool> next_dp(MAXSUM + 1, false);
for (int j = 0; j <= MAXSUM; ++j) {
if (dp[j]) {
for (int k = 0; k < m; ++k) {
if (j + a[i][k] <= MAXSUM) {
next_dp[j + a[i][k]] = true;
}
}
}
}
dp = move(next_dp);
}
int min_diff = INT_MAX;
for (int i = 0; i <= MAXSUM; ++i) {
if (dp[i]) {
min_diff = min(min_diff, abs(i - target));
}
}
cout << min_diff << endl;
return 0;
}