Codeforces Round #427 (Div. 2) (solve 5 / 6)

這次做了3個題,漲分了。C題能過是僥倖。補到了5題,E題還有點蒙,清晰了再寫。

A. Key races【水題】

題意:

1.有兩個人,每人打 s 個字符。
2.打字前用 t 時間,每打一個字符用 v 時間,打字後用 t 時間。
3.給你兩個人的 vt ,求誰用時少。

思路:

sum=2×t+v×s ,帶入 v,t 看誰用時少。

代碼:

#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;
}

C. Star sky【模擬、二維前綴和】

戳上面鏈接直達BLOG

D.Palindromic characteristics【DP、後綴和】

戳上面鏈接直達BLOG

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章