1 người đang xem
Bài viết: 28 Tìm chủ đề
3252 2
Link bài:

Thuật toán:

  • Để giải một bài có độ khó cao hơn trình độ hiện tại, ta cần hoàn thành các bài có độ khó trong tầm với để tích lũy kinh nghiệm. Con đường trên là duy nhất, điểm kinh nghiệm là vô nghĩa nếu độ khó của bài là quá cao.
  • Bằng tư duy đó, ta sẽ sắp xếp các bài với độ khó tăng dần và giải theo thứ tự.

Code:

Mã:
#include <bits/stdc++.h>
#define fi first
#define se second
using namespace std;

pair <int, int> a[100007];
int n, c, ans, pos = 1;

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    //freopen("luta.inp", "r", stdin);
    //freopen("luta.out", "w", stdout);
    cin >> n >> c;
    for (int i = 1; i <= n; i++) cin >> a[i].fi >> a[i].se;
    sort(a+1, a+1+n);
    while (pos <= n){
        if (a[pos].fi > c) break;
        c += a[pos].se;
        ans++; pos++;
    }
    cout << ans;

    return 0;
}
 
Chỉnh sửa cuối:

Những người đang xem chủ đề này

Xu hướng nội dung

Back