tungggg

dp_hoi_truong

May 8th, 2022 (edited)
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.19 KB | None | 0 0
  1. // http://vinhdinhcoder.net/Problem/Details/5064
  2.  
  3.  
  4. #include <bits/stdc++.h>
  5. using namespace std;
  6.  
  7. #define ms(s,n) memset(s,n,sizeof(s))
  8. #define all(a) a.begin(),a.end()
  9. #define present(t, x) (t.find(x) != t.end())
  10. #define sz(a) int((a).size())
  11. #define FOR(i, a, b) for (int i = (a); i < (b); ++i)
  12. #define FORd(i, a, b) for (int i = (a) - 1; i >= (b); --i)
  13. #define pb push_back
  14. #define pf push_front
  15. #define fi first
  16. #define se second
  17. #define mp make_pair
  18. #define endl "\n"
  19.  
  20.  
  21. typedef long long ll;
  22. typedef unsigned long long ull;
  23. typedef long double ld;
  24. typedef pair<int,int> pi;
  25. typedef vector<int> vi;
  26. typedef vector<pi> vii;
  27.  
  28. const int MOD = (int) 1e9+7;
  29. const int INF = (int) 1e9+2804;
  30. inline ll gcd(ll a,ll b){ll r;while(b){r=a%b;a=b;b=r;}return a;}
  31. inline ll lcm(ll a,ll b){return a/gcd(a,b)*b;}
  32.  
  33.  
  34.  
  35. bool ngtoCungNhau ( ll a, ll b ){
  36.     if ( gcd(a,b) ==1 ) return true ;
  37.     return false ;
  38. }
  39.  
  40. bool cmp ( pair < ll , ll > a, pair <ll, ll > b ){
  41.     return a.first < b.first  ;
  42. }
  43.  
  44. int main(){
  45.     ios_base::sync_with_stdio(false);
  46.     cin.tie(NULL);
  47.     ll n;
  48.     cin >> n;
  49.     pair < ll, ll > a [n];
  50.     ll dp[n];
  51.     for (int i=0;i<n;i++){
  52.         cin >> a[i].first >> a[i].second ;
  53.         dp[i]=1;
  54.     }
  55.     sort ( a, a+n, cmp );
  56.     // sắp xếp theo thứ tự tăng của ngày tháng trong năm
  57.     // điều kiện sort khác với điều kiện của dp     
  58.     // sort chỉ để làm thuận tiện hơn thôi chứ sort xong chưa chắc đã là kết quả của bài toán
  59.     // ví dụ như bài này thì yêu cầu của bài toán là chọn những cặp ngày không bị trùng time với nhau
  60.     // mà nếu mình sort với điều kiện của đề bài ngay thì những cặp không thoả điều kiện sẽ không thể sort đc => kết quả không đúng
  61.    
  62.     // cout <<"____________"<<endl;
  63.     // FOR(i,0,n) cout << a[i].first <<" "<<a[i].second <<endl;
  64.    
  65.     ll res =0 ;
  66.     for (int i=1;i<n;i++){
  67.         for (int j=0;j<i;j++){
  68.             if (a[i].first > a[j].second && dp[i]<dp[j]+1){
  69.                 dp[i]= dp[j]+1;
  70.             }
  71.         }
  72.         res = max( res, dp[i]);
  73.     }
  74.     cout << res;
  75.  
  76.     return 0;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment