随笔分类 -  BS

Binary Search
摘要:Problem: http://acm.hdu.edu.cn/showproblem.php?pid=1257依次拦截导弹,如果当前存在的拦截系统无法拦截该导弹,增加一个拦截系统否则将当前拦截系统中 不小于该导弹高度的 最小高度的拦截系统的高度设置为该导弹的高度#includeint n,a,lj[10000]={0},ans;void work(){ int L=1,R=ans; while(Llj[ans])lj[++ans]=a;//增加一个新的拦截系统 else work(); } printf("%d\n",ans); ... 阅读全文
posted @ 2014-02-11 13:23 Cshhr 阅读(189) 评论(0) 推荐(0)
摘要:Problem: http://acm.hdu.edu.cn/showproblem.php?pid=4217给定1~n的n个数依次求第ki小的数 删除该数 再求剩下的数中第ki+1小的数 删除...求所有删除的数的和用树状数组bit[]:bit[k](这里的bit[k]不是bit[k]本身的值,详见代码中find(k))表示小于等于 k 的数的个数用二分搜索 搜索第ki大的数#includeconst int MAXN=270000;int bit[MAXN];int find(int k){//查找小于等于k的数的个数 int ret=0; while(k>0){ ... 阅读全文
posted @ 2014-02-10 21:02 Cshhr 阅读(269) 评论(0) 推荐(0)
摘要:Problem : http://acm.hdu.edu.cn/showproblem.php?pid=2899求函数f(x)在[0,100]上的最小值根据f'(x)在[0,100]上单调递增的性质,运用二分搜索求f'(x)在[0,100]上的零点#includedouble y;double f(double x){//f(x) double fx=6*x; fx=(fx+8)*x*x*x; fx=(fx+7)*x; fx=(fx+5)*x; return (fx-y)*x;}double df(double x){//f'(x) double fx=42... 阅读全文
posted @ 2014-02-10 18:43 Cshhr 阅读(175) 评论(0) 推荐(0)
摘要:Problem from:http://acm.hdu.edu.cn/showproblem.php?pid=3276在一个数列中寻找两个不相交且不相邻长度为Len(x=0最后剩下的就是如何实现DP了:DP前,先用一个数组sum[],sum[i]存前 i 个数的 Ek假设DP[i-1]已实现,则DP[i]=max(DP[i-1] , max(sum[i]-sum[j] (xsum[i-x],是则弹出该s,直到队列为空或者不存在sum[s]>s[i-x] 再加入i-x然后判断双端队列首端的元素s,s是否#include#includeusing namespace std;const in 阅读全文
posted @ 2014-02-08 19:31 Cshhr 阅读(350) 评论(0) 推荐(0)