sort(E,E+pos); returnE[k-1]; } intmain() { intn,m,k; cin>>n>>m>>k; for(inti=0;i<m;++i) cin>>e[i].u>>e[i].v>>e[i].w; cout<<solve(k,m)<<endl; return0; } 分类:ACM-ICPC 标签:codeforces,k短路 好文要顶关注我收藏该文微信分享 ...
longlongsum=0;ret=INT_MAX;for(inti=0;i<n;++i){while(!q.empty()&&q.back().second>=sum)q.pop_back();q.push_back(make_pair(i,sum));sum+=A[i];while(!q.empty()&&q.front().second<=sum-k){ret=min(ret,i+1-q.front().first);q.pop_front();}}returnret==INT_MAX?-1...
So the idea is to replace each element of the given array by it's compressed value [index of this element if we sort the whole array]. It's simply done inO(n.log(n))n.log(n)). Also, save the inverse mapping, i.e.pos[compressedpos[compressedvalue(a[i])]=ivalue(a[i])]=i. ...
codeforces #629 F - Make k Equal题意:给n个数,你只能执行2个操作:选择一个最大值-1,选择一个最小值+1。问通过最少多少次操作,才能让数组有大于等于k个相同的数。题解:先设最后k个值为x。 这道题最关键的是发现x只能是数组中出现的数,这样o(n)扫描这个数组,计算每次让a[i]作为x时的最值即可。
codeforces.com/contest/ 题意 给你一个长度为 n 的数组 a 。请找出一个长度至少为 k 且中位数最大的子数组 a[l..r]。 在长度为 n 的数组中,中位数是指按非递减顺序排序后,占据位置编号 ⌊n+12⌋ 的元素。例如 median([1,2,3,4])=2 , median([3,2,1])=2 , median([2,1,2,1])=...
sort(q,q+m,cmp); llL=1,R=0; //res=0; for(lli=0;i<m;i++) { while(Lq[i].r) { sub(R),R--; } while(L>q[i].l) { L--,add(L-1); } while(R<q[i].r) { R++,add(R); } ans[q[i].k]=res; } for
CodeForces - 617E(Div 2) XOR and Favorite Number 题意: 给定n个数,m个区间和k,求每一个区间内有多少个 子区间的所有数的异或值为k 思路: 将每一个数的前缀异或和存储下来,如果区间 [ l , r ]的异或值为k,则 sum[l-1]^sum[r]=k,sum[r]^k=sum[l-1]。在存储区间时提前将左边界处理好。
链接https://codeforces.com/contest/1196/problem/F 题解 用到的肯定只有前kkk大的边 所以只保留前kkk大的边以及关联的点,最多2k2k2k个点 在这张图上用dijkstradijkstradijkstra求出两两点之间的最短路 时间复杂度O(k2logk)O(k^2logk)O(k2logk) 代码...Codeforces...
https://codeforces.com/gym/105459/problem/K 暴力实现,是在枚举每一种作物是否要被“选择为无限制”,同时枚举占用的时间,因为这两者有关联关系,复杂度是非常恐怖的: 。 我本来想了两种情况, ans_1:所有作物都选 ,然后选择价值最高的作物 为“无限制”,把剩下的时间都给 ...
#include<bits/stdc++.h> using namespace std; typedef long long ll; const ll N=2e5+5,inf=1e15; ll a[N],n,k,pre[N],suf[N],ans=inf; int main(){ cin>>n>>k; for(int i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+n+1);//排序 ...