题意

给出三个已经排好序的数组$a, b, c$

在$100$次询问内找出第$k$小的元素

Sol

一种很显然的$log^2n$的做法:首先在$a$中二分,然后再$b,c$中二分。这样可以得到$60$分的好成绩。

然而这算法就没什么优化的空间了。。。

考虑另一种做法。

我们每次对三个数组询问第$\frac{3}{k}$个数。

然后我们可以直接把最小对应的那一段抛弃。正确性显然吧。或者你可以考虑一下最坏情况

那么$k$就缩小了$\frac{1}{3}$

算一下,查询次数不会超过$99$。

具体可以这么算

边界好难调啊,还是Orz std吧

#include "kth.h"
#include <stdio.h>
#include <assert.h>
#include<algorithm>
using namespace std;
int query_kth(int n_a, int n_b, int n_c, int k) {
int nowa = , nowb = , nowc = , mi;
while(k) {
int cur = (k - ) / ;
int vala = get_a(nowa + cur),
valb = get_b(nowb + cur),
valc = get_c(nowc + cur);
mi = min(vala, min(valb, valc));
cur++;
if(mi == vala) nowa += cur;
else if(mi == valb) nowb += cur;
else nowc += cur;
k -= cur;
}
return mi;
}

UOJ#52. 【UR #4】元旦激光炮(交互)的更多相关文章

  1. UOJ.52.[UR #4]元旦激光炮(交互 思路)

    题目链接 \(Description\) 交互库中有三个排好序的,长度分别为\(n_a,n_b,n_c\)的数组\(a,b,c\).你需要求出所有元素中第\(k\)小的数.你可以调用至多\(100\) ...

  2. Uoj 52. 【UR #4】元旦激光炮 神题+交互题

    Code: #include "kth.h" #include<iostream> int minn(int x,int y){return x<y?x:y;}; ...

  3. [UOJ #52]【UR #4】元旦激光炮

    题目大意:交互题,给你三个有序数组,长度分别为$n\_a,n\_b,n\_c$,都不超过$10^5$.三个函数$get\_a(i),get\_b(i),get\_c(i)$,分别返回$a_i,b_i, ...

  4. #52. 【UR #4】元旦激光炮 (交互式题)

    链接:http://uoj.ac/problem/52 刚刚越过绝境长城,只见天空中出现了炫目的光芒 —— 圣诞老人出现了. 元旦三侠立刻进入战斗.生蛋侠.圆蛋侠和零蛋侠分别有 na,nb,ncna, ...

  5. UOJ 52 元旦激光炮

    http://uoj.ac/problem/52 题意:每次可以得到3个序列中 思路:每次分别取出三个序列的K/3长度的位置,取最小的那个,然后每次减掉它,总复杂度是Nlog3N #include & ...

  6. UOJ52——【UR #4】元旦激光炮

    1.题目大意:就是给你三个数组啦,然后让你找到其中的第K大,但是,不可以直接访问数组,必须通过一种函数,最后的分数 是看调用几次这个函数,100次以内10分,2000以内6分.... 2.分析:最开始 ...

  7. 【uoj#51】[UR #4]元旦三侠的游戏 博弈论+dp

    题目描述 给出 $n$ 和 $m$ ,$m$ 次询问.每次询问给出 $a$ 和 $b$ ,两人轮流选择:将 $a$ 加一或者将 $b$ 加一,但必须保证 $a^b\le n$ ,无法操作者输,问先手是 ...

  8. UOJ 【UR #5】怎样跑得更快

    [UOJ#62]怎样跑得更快 题面 这个题让人有高斯消元的冲动,但肯定是不行的. 这个题算是莫比乌斯反演的一个非常巧妙的应用(不看题解不会做). 套路1: 因为\(b(i)\)能表达成一系列\(x(i ...

  9. UOJ#206. 【APIO2016】Gap(交互,乱搞)

    描述 提交 自定义测试 有 NN 个严格递增的非负整数 a1,a2,…,aNa1,a2,…,aN(0≤a1<a2<⋯<aN≤10180≤a1<a2<⋯<aN≤101 ...

随机推荐

  1. 大整数分解质因数(Pollard rho算法)

    #include <iostream> #include <cstring> #include <cstdlib> #include <stdio.h> ...

  2. EasyUI+Python-flask实现CRUD应用

    1.需求分析 需求:应用easyui制作前端表格数据显示,flask制作后端路由 环境搭建略 2.easyui前端实现 2.1 easyui是前端实用的一个框架,这里我们要实现的是easyui的CRU ...

  3. POJ1860 Currency Exchange —— spfa求正环

    题目链接:http://poj.org/problem?id=1860 Currency Exchange Time Limit: 1000MS   Memory Limit: 30000K Tota ...

  4. eclipse软件启动弹窗端口问题解决

    如果启动eclipse,弹出一个窗口,上面显示,8080 .8009.……等的提示,说明端口有冲突, 解决办法如下: 1.打开cmd 2.输入 netstat   -ano|findstr  8080 ...

  5. 容器之vector

    #include <iostream> #include <vector> #include <string.h> #include <algorithm&g ...

  6. #ifndef <标识> #define <标识> #endif

    头件的中的#ifndef,这是一个很关键的东西.比如你有两个C文件,这两个C文件都include了同一个头文件.而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突. 还是把 ...

  7. 任务48:Identity MVC:Model后端验证

    任务48:Identity MVC:Model后端验证 RegisterViewModel using System; using System.Collections.Generic; using ...

  8. CodeForces 712A Memory and Crow (水题)

    题意:有一个序列,然后对每一个进行ai = bi - bi + 1 + bi + 2 - bi + 3.... 的操作,最后得到了a 序列,给定 a 序列,求原序列. 析:很容易看出来,bi = ai ...

  9. 20170407-ms

    invoke v调用 dismiss v解雇   exclusive adj. 专用的; 高级的; 排外的; 单独的;  n. 独家新闻; 专有物; 独家经营的产品(或项目.设计等); 排外者; ex ...

  10. 3DMAX 8 角色建模2 身体

    身体 20 25 60 分段 3 2 3 位置直接设置到-12.5 0 0,删除内部面,实例镜像出另一半x偏移25 1 身体大体形状 ,,,, 2 背阔肌 , 3腹肌 4 臀部 ,, 5 肩部 调整点 ...