這次做了3個題,漲分了。C題能過是僥倖。補到了5題,E題還有點蒙,清晰了再寫。
A. Key races【水題】
題意:
1.有兩個人,每人打
2.打字前用
3.給你兩個人的
思路:
代碼:
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<int,int>pii;
const int INF = 0x3f3f3f3f;
int main() {
int s, v1, v2, t1, t2;
cin >> s >> v1 >> v2 >> t1 >> t2;
int sum1 = s * v1 + 2 * t1;
int sum2 = s * v2 + 2 * t2;
if(sum1 < sum2) {
puts("First");
} else if(sum1 > sum2) {
puts("Second");
} else {
puts("Friendship");
}
return 0;
}
B. The number on the board【簡單貪心】
題意:
1.給你一串數字。
2.問你最少改動幾位數字,使得這一串數字的每一位累計值不少於K。
3.題目保證有解。
思路:
給字符串按字典序從小到大排序,使得每次改變量最大。如果當前sum值小於k,則將當前位改爲數字9。
代碼:
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<int,int>pii;
const int INF = 0x3f3f3f3f;
string s;
int main() {
int k;
cin >> k >> s;
int sum = 0;
for(int i = 0; i < s.size(); ++ i) sum += s[i] - '0';
sort(s.begin(), s.end());
int ans = 0;
for(int i = 0; i < s.size(); ++ i) {
if(sum >= k) break;
sum += (9 - (s[i] - '0'));
ans++;
}
cout << ans << endl;
return 0;
}