题目链接:http://codeforces.com/contest/387/problem/B
题目意思:给出1~n个问题,以及要满足是good rounde条件下这n个问题分别需要达到的complexity,最后还有George已经准备好的关于这些问题的m个complexity。问George要come up with的问题最少有多少个。
很明显要使问题最少,那么满足每个问题的complexity为一个即可。解决这个问题的关键是要理解这句话:He can simplify any already prepared problem with complexity c to any positive integer complexity d (c?≥?d)。这句话说明不需要come up with的条件,也就是只要准备的complexity >= 需要达到的complexity就不需要提出。如果全部prepared 的 problem里面都比需要的complexity 小,那么n个问题都需要重新提出新的complexity。
1 #include <iostream> 2 #include <cstdio> 3 using namespace std; 4 5 const int maxn = 3000 + 10; 6 int a[maxn]; 7 8 int main() 9 { 10 int n, m, i, j, tmp, cnt; 11 while (scanf("%d%d", &n, &m) != EOF) 12 { 13 for (i = 1; i <= n; i++) 14 scanf("%d", &a[i]); 15 cnt = 0; 16 for (i=j=1; j <= m; j++) 17 { 18 scanf("%d", &tmp); 19 if (i <= n && tmp >= a[i]) 20 { 21 cnt++; 22 i++; 23 } 24 } 25 printf("%d\n", n-cnt); 26 } 27 return 0; 28 } 29