二分
MintGreenTZ
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #361 (Div. 2) D Friends and Subsequences
原题网址:http://codeforces.com/contest/689/problem/D对于每一个确定的l,随着r的增大,max ai 单调增,min bi 单调减,对于每一个l可以二分,对于区间最值可以RMQ,总复杂度nlogn。(一开始区间最值用线段树平添log)var pr1,pr2:array[0..200050,0..18] of longint; n,i,j,l,r,m:原创 2016-07-07 21:13:03 · 336 阅读 · 0 评论 -
日常训练20161012 醉酒
二分答案+字符串hash(其实写双hash比较好)const p=1000000007;var pow,inv,sum:array[0..100050] of int64; n,m,i,a,b,l,r,mid:longint; st:ansistring;function ksm(x,k:int64):int64; var ans,i:int64; begin原创 2016-10-12 17:06:43 · 344 阅读 · 0 评论 -
日常训练 平均数
题意简述:长度为nn的序列,列出所有子串,求第kk小的平均值。n≤100000n\leq100000 首先二分答案ave,将每个数都减去ave,平均数小于ave的区间在新的数列里平均数小于0,也就是区间和小于0。将区间做一遍前缀和,每有一对逆序对(包括0号位),就有一个小于0的区间,求逆序对归并树状数组都可。#include<bits/stdc++.h>#define ll long long原创 2017-01-10 18:39:11 · 351 阅读 · 0 评论 -
Bzoj4627: [BeiJing2016]回转寿司
原题网址:http://www.lydsy.com/JudgeOnline/problem.php?id=4627 考虑先将从第一项开始的所有子串和求出来,找符合条件的[L,R][L,R]的子串和个数,然后把这些都减去第一项,就是从第二项开始的所有子串和,实际上不用真的减,只要在L,R上加即可。用树状数组维护一个子串和区间内存在的子串和个数,每次找L~R中的即可。#include<bits/std原创 2017-05-01 18:19:16 · 472 阅读 · 0 评论 -
日常训练 20170605 费用流
对于一张给定的运输网络,Alice 先确定一个最大流,如果有多种解,Alice 可以任选一种;之后 Bob 在每条边上分配单位花费(单位花费必须是非负实数),要求所有边的单位花费之和等于 PP 。总费用等于每一条边的实际流量乘以该边的单位花费。需要注意到,Bob 在分配单位花费之前,已经知道 Alice 所给出的最大流方案。现茌 Alice 希望总费用尽量小,而 Bob 希望总费用尽量大。我们想知道原创 2017-06-06 17:06:57 · 1037 阅读 · 0 评论