hdu6070】的更多相关文章

/** 题目:hdu6070 Dirt Ratio 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6070 题意:给定n个数,求1.0*x/y最小是多少.x表示一段区间内不同数字的个数,y表示区间长度. 思路:二分+线段树 二分答案x/y. 找一段区间满足 size(l,r)/(r-l+1) <= mid , size(l,r)表示[l,r]内不同数的个数. size(l,r)<=mid(r-l+1) => size(l,r)+mid*l<…
hdu6070 题意 给出 \(n\) 个数, \(\frac{x}{y}\) 表示某个区间不同数的个数除以区间的长度,求 \(\frac{x}{y}\) 最小值. 分析 设 \(size(l, r)\) 表示 \([l, r]\) 这个区间内不同数的个数,那么求得就是 \(\frac{size(l, r)}{r - l + 1}\) 的最小值. 二分答案 \(mid\) ,式子转化成 \(size(l, r) + mid \times l \leq mid \times (r + 1)\) .…
地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=6070 题面: Dirt Ratio Time Limit: 18000/9000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)Total Submission(s): 1599    Accepted Submission(s): 740Special Judge Problem Description In…
size(l,r)表示区间l,r权值的种类数,让你求min{size(l,r)/(r-l+1)}(1<=l<=r<=n). last[r]表示a[r]上一次出现的位置, 就是二分验证mid的时候,先把线段树的每个位置i置成mid*i,然后再枚举右端点r,对[last[r]+1,r]作区间+1,然后check此时的前缀最小值是否小于等于mid*(r+1)即可. 据说这个是“01分数规划”?哪位dalao求解释一下……(我 01分数规划 只做过 最优比率生成树……) #include<…
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6070 题意: 给出一个题目提交序列, 从中选出一个正确率最小的子串. 选中的子串中每个题目当且仅当最后一次提交是正确的. 思路: 分数规划 二分答案, 然后在 check 函数中查找是否存在某个区j间 [l, r] 使得 sum(l, r) / (r - l + 1) <= mid, 即 sum(l, r) + l * mid <= (r + 1) * mid. 可以用个线段树来维护 sum(l…
目录 目录 思路: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 目录 题意:传送门  原题目描述在最下面.  求\(sum/len\)最小值.\(sum\)是一段区间内不同数字的个数,\(len\)是这段区间的长度. 思路:  首先预处理出每个数上一次出现的位置\(pre[i]\)和最后一次出现的位置\(lst[i]\).这个操作在静态求区间内不同数的个数和动态求区间内不同数的个数都有用到. 法一:  二分答案\(mid\).枚举序列,每加入一个数就在\(pre[i]-i\)区间加一…