從小到大,公升序排列
lower_bound(s,t,num):s-->t-1,查詢到第乙個大於或等於num的數的位址,不存在返回t
upper_bound(s,t,num):s-->t-1,查詢到第乙個大於num的數的位址,不存在返回t
從大到小,降序排列
lower_bound(s,t,num):s-->t-1,查詢到第乙個小於或等於num的數的位址,不存在返回t
upper_bound(s,t,num):s-->t-1,查詢到第乙個小於num的數的位址,不存在返回t
求出總和不小於s的連續子串行的長度
普通方法
時間複雜度o(nlgn)
#include#include#include#include#include#include #includeusing namespace std;
int n,s;
int a[100010];
int sum[100010];///所有元素都大於0,所以是公升序排列
void solve()
int main()
sum+=f[i];//記錄i前面k-1個數的操作和
if(i-k+1>=0)//當記錄f的值大於k個就要減去多餘的
sum-=f[i-k+1];
}for(int i=n-k+1;i=0)
sum-=f[i-k+1];
}return res;
}void solve()
}printf("%d %d\n",k,m);
}int main()
;const int dy[5]=;
//輸入
int n,m;
int tile[20][20];
int opt[20][20];//儲存最優解
int flip[20][20];//記錄是否翻轉
//查詢(x,y)的顏色
int get(int x,int y)
}if(res<0)//無解
printf("impossible\n");
else
else//k為奇數
}void solve()
}ps[i]=make_pair(sw,sv);
}//去除多餘元素,使重量和價值都從小到大排列
sort(ps,ps+(1<>j&1)
}if(sw<=w)
}printf("%lld\n",res);
}int main()
;const int dy[4]=;
//輸入
int w,h,n;
int x1[maxn],x2[maxn],y1[maxn],y2[maxn];
//標記
bool fld[maxn*6][maxn*6];
//對x1,x2進行座標離散化,並返回離散化之後的寬度
int compress(int *x1,int *x2,int w)}}
}printf("%d\n",ans);
}int main()
solve();
}//10 10 5
//1 6 4 4
//1 10 8 8
//4 4 1 10
//9 9 1 5
//10 10 6 10
二分小技巧
有一些題目,常常會用到二分,但無良的出題人總是會卡人們的二分。比方說你每次二分總要分滿log次,而且還總要分n次,這樣效率就變成了n log n 很是gg。但是思考發現我們的二分存在乙個小問題,就是說右端點總是被卡死的,如果解決這個瓶頸,便能實現不被卡。而能二分說明它一定有二分性質,也就是說我們可以...
關於二分的使用技巧
對於二分的使用,通過做題有了一定的認識,以noip2015運輸計畫與noip2015跳石頭為例,可以發現乙個較為重要的二分方式 1.對於題一,其要求的值為最大值最小,其二分方式就應該為 mid l r 1,r mid,l mid 1的方式,而對於題二,其要求為最小值最大,其二分方式就應該為 mid ...
1128 二分 二分查詢
時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述nettle最近在玩 艦 因此nettle收集了很多很多的船 這裡我們假設nettle氪了很多金,開了無數個船位 去除掉重複的船之後,還剩下n 1 n 1,000,000 種不同的船。每一艘船有乙個稀有值,任意兩艘船的稀有...