'commit'
This commit is contained in:
71
TangDou/CSP-J/AcWingTraining/T7/4731.cpp
Normal file
71
TangDou/CSP-J/AcWingTraining/T7/4731.cpp
Normal file
@@ -0,0 +1,71 @@
|
||||
#include <bits/stdc++.h>
|
||||
using namespace std;
|
||||
const int N = 510;
|
||||
const int M = 110;
|
||||
struct Node {
|
||||
int x, y;
|
||||
/*
|
||||
Q1:ΪʲôҪ<C3B4><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
A:<3A><>ΪҪDP<44><50><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD>ԡ<EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>ٱ<EFBFBD><D9B1>ģ<DEB8><C4A3><EFBFBD>Ҫ<EFBFBD><D2AA>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ˳<CFB5><CBB3>
|
||||
|
||||
Q2:<3A><>ʲô<CAB2><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
A:<3A><><EFBFBD><EFBFBD>x+y<><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><D4B0><EFBFBD>x,<2C><>y<EFBFBD>ķ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F2A3ACB6><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ġ<EFBFBD>
|
||||
|
||||
1.<2E><>x+y<><79><EFBFBD><EFBFBD>
|
||||
const bool operator<(const Node &t) {
|
||||
return x + y < t.x + t.y;
|
||||
}
|
||||
*/
|
||||
// 2.<2E>Ȱ<EFBFBD>x,<2C>ٰ<EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD>
|
||||
const bool operator<(const Node &t) {
|
||||
if (x == t.x) return y < t.y;
|
||||
return x < t.x;
|
||||
}
|
||||
} a[N];
|
||||
|
||||
int f[N][M];
|
||||
int ans;
|
||||
|
||||
int main() {
|
||||
// <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
// freopen("point.in", "r", stdin);
|
||||
|
||||
int n, m;
|
||||
cin >> n >> m;
|
||||
|
||||
for (int i = 1; i <= n; ++i) cin >> a[i].x >> a[i].y;
|
||||
sort(a + 1, a + 1 + n);
|
||||
|
||||
// dp<64><70>ʼ<EFBFBD><CABC>,<2C><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD>ŵ<EFBFBD>ѡ<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD>,ʹ<><CAB9><EFBFBD><EFBFBD>j<EFBFBD><6A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><C2A3><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EEB3A4><EFBFBD>г<EFBFBD><D0B3><EFBFBD>
|
||||
for (int i = 1; i <= n; i++)
|
||||
for (int j = 0; j <= m; j++)
|
||||
f[i][j] = j + 1; // <20><>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD>j<EFBFBD><6A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㣬<EFBFBD><E3A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Թ<EFBFBD><D4B9><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EEB3A4><EFBFBD><EFBFBD>Ϊj+1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
// ״̬ת<CCAC><D7AA>
|
||||
for (int i = 1; i <= n; i++) // ö<><C3B6>ÿ<EFBFBD><C3BF>ԭʼ<D4AD><CABC>
|
||||
for (int j = 1; j < i; j++) { // ö<><C3B6>ÿ<EFBFBD><C3BF>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
|
||||
if (a[i].x < a[j].x || a[i].y < a[j].y) continue; // <20><><EFBFBD><EFBFBD>j<EFBFBD><6A><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>Чת<D0A7><D7AA>
|
||||
int d = a[i].x - a[j].x + a[i].y - a[j].y - 1; // j->i <20><>Ҫ<EFBFBD><D2AA><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
/*
|
||||
<20><><EFBFBD><EFBFBD>j<EFBFBD><6A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><D0A9>״̬ <20><><EFBFBD><EFBFBD>ת<EFBFBD>Ƶ<EFBFBD> i<><69><EFBFBD><EFBFBD>Щ<EFBFBD><D0A9>״̬<D7B4><CCAC>
|
||||
˼<><CBBC>һ<EFBFBD><D2BB>f[j]<5D>Ķ<EFBFBD>ά״̬<D7B4><CCAC><EFBFBD><EFBFBD>Сֵ<D0A1><D6B5>0,<2C><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>m
|
||||
<20><><EFBFBD><EFBFBD>f[j]<5D>Ķ<EFBFBD>ά״̬<D7B4>仯<EFBFBD><E4BBAF><EFBFBD>ǹ̶<C7B9><CCB6>ģ<EFBFBD><C4A3><EFBFBD>d
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫö<D2AA><C3B6>j<EFBFBD><6A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>ƵĶ<C6B5>ά״ֵ̬<CCAC><D6B5>0 ~ m-d
|
||||
*/
|
||||
for (int k = 0; k <= m - d; k++) {
|
||||
// f[j][k]<5D><>ǰ<EFBFBD><C7B0>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>+dת<64>Ƶ<EFBFBD><C6B5>µ<EFBFBD>״̬
|
||||
// f[j][k+d]+d+1 -> f[i][k+d]
|
||||
f[i][k + d] = max(f[i][k + d], f[j][k] + d + 1);
|
||||
|
||||
// <20><>״̬ת<CCAC><D7AA><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><C9BA><EFBFBD><EFBFBD>ռ<EFBFBD>һ<EFBFBD>´<EFBFBD><C2B4><EFBFBD>
|
||||
// С<><D0A1>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m<EFBFBD><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㣬<EFBFBD><E3A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>˵Ļ<CBB5><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˷ѣ<CBB7><D1A3><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>룬
|
||||
// <20>Ѷ<EFBFBD><D1B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD>
|
||||
ans = max(ans, f[i][k + d] + m - k - d); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB3A4><EFBFBD><EFBFBD>
|
||||
}
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
printf("%d\n", ans);
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user