标签:strong www. idt 简单的 str main stdout 一个 com
此次比赛由dalao学长@FallDream出题,欢迎查看他的blog!
【T1】
题意:
样例:
(1<=n<=100000, 1<=xi,yi<=10^9)
题解:
加一个骨牌,就相当于把最后的若干个骨牌删除,再算之前的答案。
如果我们对任意的前i个骨牌算出答案,就可以简单地算出最终答案。
就有了dp的想法,可以发现是比较简单的。
f[i]=f[k]+(i-k),k是i推倒后最后一个没有被推倒的骨牌编号。
1 #include<cstdio> 2 #include<algorithm> 3 typedef std::pair<int,int> P; 4 P a[100001]; 5 int n,f[100001],Ans=100000; 6 int main(){ 7 freopen("card.in","r",stdin); 8 freopen("card.out","w",stdout); 9 scanf("%d",&n); 10 for(int i=1;i<=n;++i) scanf("%d%d",&a[i].first,&a[i].second); 11 std::sort(a+1,a+n+1); 12 // for(int i=1;i<=n;++i) printf("%d %d\n",a[i].first,a[i].second); 13 for(int i=1;i<=n;++i){ 14 int R=std::lower_bound(a+1,a+n+1,P(a[i].first-a[i].second,0)) - a; 15 f[i] = f[R-1] + i-R; 16 // printf("%d ",f[i]); 17 if(Ans > f[i] + n-i) Ans = f[i] + n-i; 18 } 19 printf("%d",Ans); 20 return 0; 21 }
【T2】
题意:
样例:
题解:
易证,一个数组的海棠度,一定有j=i+1。
标签:strong www. idt 简单的 str main stdout 一个 com
原文地址:http://www.cnblogs.com/PinkRabbit/p/7612223.html