Codeforces Round #251 Div2D 439D Devu and his Brother 二分查找STL
2014-06-07 13:49
274 查看
很水的题目……我交了四次。
注意到一个性质,就是修改到的那个数字一定在数组a或者数组b里面。维护一下第一个数组的前缀和和第二个数组的后缀和。这样我们枚举每一个元素,在另一个数组中二分查找即可。
二分查找不用手写:
查找在a数组中,1~n下标内,大于tar的最小下标。(数组a有序)
查找在a数组中,1~n下标内,大于或等于tar的最小下标。(数组a有序)
注意到一个性质,就是修改到的那个数字一定在数组a或者数组b里面。维护一下第一个数组的前缀和和第二个数组的后缀和。这样我们枚举每一个元素,在另一个数组中二分查找即可。
//CF439D #include<iostream> #include<cstdio> #include<algorithm> #include<string> #include<cstring> #include<vector> #include<queue> #include<climits> using namespace std; typedef long long LL; int n,m; LL a[100010],b[100010],sa[100010],sb[100010],ans=LONG_LONG_MAX; int main() { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%I64d",&a[i]); for(int i=1;i<=m;i++) scanf("%I64d",&b[i]); sort(a+1,a+n+1);sort(b+1,b+m+1); for(int i=1;i<=n;i++) sa[i]=sa[i-1]+a[i]; for(int i=m;i>=1;i--) sb[i]=sb[i+1]+b[i]; for(int i=1;i<=n;i++) { int sub=upper_bound(b+1,b+m+1,a[i])-b; LL p=(i-1)*a[i]-sa[i-1]+sb[sub]-(m+1-sub)*a[i]; ans=min(ans,p); } for(int j=1;j<=m;j++) { int sub=upper_bound(a+1,a+n+1,b[j])-a; LL p=(sub-1)*b[j]-sa[sub-1]-(m-j)*b[j]+sb[j+1]; ans=min(ans,p); } printf("%I64d\n",ans); return 0; }
二分查找不用手写:
查找在a数组中,1~n下标内,大于tar的最小下标。(数组a有序)
upper_bound(a+1,a+n+1,tar);
查找在a数组中,1~n下标内,大于或等于tar的最小下标。(数组a有序)
lower_bound(a+1,a+n+1,tar);
相关文章推荐
- C++数据结构与STL--二分查找
- STL中的二分查找——lower_bound 、upper_bound 、binary_search
- 二分模板以及STL中的查找
- SSL-1135 二分查找【二分,STL_algorithm,hash】
- Codeforces Round #256 (Div. 2) D. Multiplication Table(二分查找)
- stl中二分查找相关的函数
- ACM 贪心 STL multiset 二分查找 hdu4268
- Codeforces Round #Pi (Div. 2) D. One-Dimensional Battle Ships 二分 stl应用
- STL 二分查找
- leetcode-二分查找:Search a 2D Matrix
- 51 nod 1624 取余最长路 思路:前缀和 + STL(set)二分查找
- (转)STL之二分查找(binary_search(),lower_bound(),upper_bound() )
- Search a 2D Matrix,在有序矩阵查找,二分查找的变形; 行有序,列有序查找。
- Leetcode 二分查找 Search a 2D Matrix
- STL中的二分查找(binary_search)
- STL 二分查找抛出错误(map/set iterator not dereferencable)
- STL中的二分查找,lower_bound();与upper_bound();
- Codeforces Round #310 (Div. 1) D. Case of a Top Secret 二分 stl应用
- STL中的二分查找——lower_bound 、upper_bound 、binary_search
- 【转】STL之二分查找 (Binary search in STL)