poj-1548-Robots

呂振麒 bio photo By 呂振麒 Comment

傳送門:

Robots

題意:

每個機器人只能往右往下走,求拿完需要多少隻機器人。

思路:

dilworth 求 antichain 與 上一題 幾乎一樣。

code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
int dp[30000];
pair<int, int> G[30000];

void sol(){
  sort(G, G+N);
  memset(dp, -1, sizeof(dp));
  ans = 0;
  dp[0] = INT_MAX;
  for(int i=0;i<N;i++)for(int j=0;j<=N && dp[j]!=-1;j++)
    if(dp[j]>G[i].Y) dp[j+1] = max(dp[j+1], G[i].Y);
  for(int i=1;i<=N;i++)
    if(dp[i] != -1) ans = i;
    else break;
  cout << ans <<endl;

  N=0;
}
int main(){
  while(1){
    a = getint(), b = getint();
    if(a == -1 && b == -1)break;
    if(a == 0 && b == 0)
      sol();
    else
      G[N++] = MP(a,b);
  }
}
comments powered by Disqus