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

题目链接 \(Description\) 交互库中有三个排好序的,长度分别为\(n_a,n_b,n_c\)的数组\(a,b,c\).你需要求出所有元素中第\(k\)小的数.你可以调用至多\(100\)次询问某个数组中的第几个数的函数. \(n_a,n_b,n_c\leq 10^5\). \(Solution\) 显然的做法是先枚举这个数在哪个数组中,再在三个数组中二分.这个次数是\(log^2\)的. 我们如果每次确定一些数比第\(k\)个数小,那我们可以直接将这些数删掉. (可以假设数组是无限…
题意 给出三个已经排好序的数组$a, b, c$ 在$100$次询问内找出第$k$小的元素 Sol 一种很显然的$log^2n$的做法:首先在$a$中二分,然后再$b,c$中二分.这样可以得到$60$分的好成绩. 然而这算法就没什么优化的空间了... 考虑另一种做法. 我们每次对三个数组询问第$\frac{3}{k}$个数. 然后我们可以直接把最小对应的那一段抛弃.正确性显然吧.或者你可以考虑一下最坏情况 那么$k$就缩小了$\frac{1}{3}$ 算一下,查询次数不会超过$99$. 具体可以…
Code: #include "kth.h" #include<iostream> int minn(int x,int y){return x<y?x:y;}; int query_kth(int n_a, int n_b, int n_c, int k) { int pa=0,pb=0,pc=0,tmin; while(k) { int l=(k-2)/3; int t1=get_a(pa+l); int t2=get_b(pb+l); int t3=get_c(…
题目大意:交互题,给你三个有序数组,长度分别为$n\_a,n\_b,n\_c$,都不超过$10^5$.三个函数$get\_a(i),get\_b(i),get\_c(i)$,分别返回$a_i,b_i,c_i$. 现在要你编写一个函数$query\_kth()$,求出三个数组中第$k$大的元素. 题解:每次求$\Big\lfloor\dfrac k 3\Big\rfloor$的$a,b,c$,把最小的舍去 卡点:下标移动时写错 C++ Code: #include "kth.h" #in…
链接:http://uoj.ac/problem/52 刚刚越过绝境长城,只见天空中出现了炫目的光芒 —— 圣诞老人出现了. 元旦三侠立刻进入战斗.生蛋侠.圆蛋侠和零蛋侠分别有 na,nb,ncna,nb,nc 个激光炮.生蛋侠的激光炮的威力分别为 a0,a1,…,ana−1a0,a1,…,ana−,圆蛋侠的激光炮的威力分别为 b0,b1,…,bnb−1b0,b1,…,bnb−,零蛋侠的激光炮的威力分别为 c0,c1,…,cnc−1c0,c1,…,cnc−. 元旦三侠的激光炮的威力已经按从小到大…
http://uoj.ac/problem/52 题意:每次可以得到3个序列中 思路:每次分别取出三个序列的K/3长度的位置,取最小的那个,然后每次减掉它,总复杂度是Nlog3N #include "kth.h" #include<algorithm> ]; int query_kth(int n_a, int n_b, int n_c, int k) { int Len=k; ,lb=,lc=; ; ){ ,vb=,vc=; ,n_a-la+); ,n_b-lb+); ,…
1.题目大意:就是给你三个数组啦,然后让你找到其中的第K大,但是,不可以直接访问数组,必须通过一种函数,最后的分数 是看调用几次这个函数,100次以内10分,2000以内6分.... 2.分析:最开始,并不会100分啦,所以就敲了一个六十分的代码, 就是二分一个值,然后再套一个二分验证一下,这样就过了60分(可还是憋了one hour) #include <cstdio> #include <cstdlib> #include <cstring> #include &l…
题目描述 给出 $n$ 和 $m$ ,$m$ 次询问.每次询问给出 $a$ 和 $b$ ,两人轮流选择:将 $a$ 加一或者将 $b$ 加一,但必须保证 $a^b\le n$ ,无法操作者输,问先手是否必胜. $n\le 10^9$ ,$m\le 10^5$ ,$a\ge 2$ ,$b\ge 1$ ,$a^b\le n$ 题解 博弈论+dp 显然可以想到预处理 $f[i][j]$ 表示 $a$ 为 $i$ ,$b$ 为 $j$ 时先手能否胜利.显然由 $f[i+1][j]$ 和 $f[i][j+…
[UOJ#62]怎样跑得更快 题面 这个题让人有高斯消元的冲动,但肯定是不行的. 这个题算是莫比乌斯反演的一个非常巧妙的应用(不看题解不会做). 套路1: 因为\(b(i)\)能表达成一系列\(x(i)\)的和,所以我们尝试通过反演将\(x(i)\)表达成一系列\(b(i)\)的和的形式,那么就可以解出来了. 然后一个简单的化简:\(gcd(i,j)^c\cdot lcm(i,j)^d=i^d\cdot j^d\cdot gcd(i,j)c-d\). \[ \displaystyle b_i=\…
描述 提交 自定义测试 有 NN 个严格递增的非负整数 a1,a2,…,aNa1,a2,…,aN(0≤a1<a2<⋯<aN≤10180≤a1<a2<⋯<aN≤1018).你需要找出 ai+1−aiai+1−ai(0≤i≤N−10≤i≤N−1)里的最大的值. 你的程序不能直接读入这个整数序列,但是你可以通过给定的函数来查询该序列的信息.关于查询函数的细节,请根据你所使用的语言,参考下面的实现细节部分. 你需要实现一个函数,该函数返回 ai+1−aiai+1−ai(0≤i≤…
题目链接 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.php?id=4732 (UOJ) http://uoj.ac/problem/268 题解 首先考虑,给定一条路径,如何计算与其相交的所有路径的权值和?显然一条路径和另一条路径相交,当且仅当这条路径的LCA在另一条路径上,或者另一条路径的LCA在这条路径上.那么我们考虑维护两个数组\(a\)和\(b\), 分别表示以某点为LCA的路径权值和以及覆盖这个点但不以该点为LCA的路径权值和,则…
LINK:#22. UR #1 外星人 给出n个正整数数 一个初值x x要逐个对这些数字取模 问怎样排列使得最终结果最大 使结果最大的方案数又多少种? n<=1000,x<=5000. 考虑一个排列真正的有效取模只有当 \(x\geq a_i\)时才行 所以x通过一个排列真正有效的数字必然是从大到小排列的. 求第一问 不难想到将模数从大到小排列 设f[i][j]表示到达第i个模数此时值为j是否可行. 这样dp下来我们只需要取出小于minn的那个可行值最大的即可. 考虑方案数 这样dp同样有效.…
原文链接www.cnblogs.com/zhouzhendong/p/UOJ24.html 题解 我们将 C 型车站称为 左括号 '(', D 型车站称为右括号 ')' ,设括号 i 的位置为 p[i] . 首先,我们用点 0 把所有位置都询问一遍,那么距离最近的那个点一定是在 0 右边的第一个 ')' . 设 0 位置为 x ,距离 0 最近的 )为 y,那么在 x 与 y 之间只可能有( . 现在我们可以将所有括号分成 3 类: x 左侧的, x 与 y 之间的,y 右侧的. 对于一个括号…
题意: 给出一个排列$A$,问是否能够经过以下若干次变换变为排列$B$ 变换:若${A_i> A_i+1}$,可以${swap(A_i,A_i+1)}$ 考虑一个数字从A排列到B排列连出来的路径与其他数字是否相交,相交就表示大小关系需要判断,(类似于二维偏序)用线段树维护区间最小值即可. 权值为1,2的线分别与权值为4的线相交,而且4在它们左边,所以需要判断它们的大小关系,发现${4>1}$,${4>2}$,所以满足条件. #include<iostream> #includ…
Preface 菜鸡HL终于狗来了他的省选停课,这次的时间很长,暂定停到一试结束,不过有机会二试的话还是可以搞到4月了 这段时间的学习就变得量大而且杂了,一般以刷薄弱的知识点和补一些新的奇怪技巧为主. 偶尔也会打一些比赛找找手感(比如HHHOJ的比赛,Luogu比赛,以及comet OJ上之前的CCPC题) CF和CC看情况,主要是我真的不太喜欢读英文题的恐怖感觉233 希望这段时间的努力可以让我不跪省选吧 2-26 早上晨跑完了就和杨浩讲了停课的事,不出意外地很轻松就通过了. 然后回班拿了点东…
一.介绍  通知和推送是应用程序中很重要的组成部分.本地通知可以为应用程序注册一些定时任务,例如闹钟.定时提醒等.远程推送则更强大,提供了一种通过服务端主动推送消息到客户端的方式,服务端可以更加灵活地控制通知逻辑,例如广告的推送.定时任务的提醒.即时通信类应用离线消息的提醒等.本文先着重着介绍本地通知,由于iOS系统的不断更新,本地通知的API也需要根据设备的系统来进行选择和兼容. 在iOS10之前,开发者需要使用UILocalNotification类来实现本地通知: 在iOS10之后,苹果为…
[UOJ#51][UR #4]元旦三侠的游戏(博弈论) 题面 UOJ 题解 考虑暴力,\(sg[a][b]\)记录\(sg\)函数值,显然可以从\(sg[a+1][b]\)和\(sg[a][b+1]\)推过来. 发现可以从\(sg[a][b]\)推到\(sg[a][b+1]\)的值很少,所以可以直接把这些值全部提前计算出来,这部分大概有\(\sqrt n\)个,剩下的可以推到\(sg[a+1][b]\)而不能推到\(sg[a][b+1]\)的位置可以通过\(a\)以及最大的满足\(x^b\le…
传送门 线段树好题. 维护区间加,区间取最大值,维护区间最小值,历史区间最小值. 同样先考虑不用维护历史区间最小值的情况,这个可以参考这道题的解法,维护区间最小和次小值可以解决前两个操作,然后使用历史标记的常规维护方式合并标记更新就行了. 代码: #include<bits/stdc++.h> #define lc (p<<1) #define rc (p<<1|1) #define mid (T[p].l+T[p].r>>1) #define N 5000…
题目大意:给$n$,一个游戏,给$a,b$,两个人,每人每次可以把$a$或$b$加一,要求$a^b\leqslant n$,无法操作人输.有$m$次询问,每次给你$a,b$,问先手可否必胜 题解:令$f_{i,j}$表示$a=i,b=j$使得胜负,$f_{i,j}$可由$f_{i+1,j},f_{i,j+1}$推出,但这样会$MLE(b=1)$,发现若$a>\sqrt n$,可以直接奇偶性判断. 卡点:原来写的东西不知道为什么锅,换成题解的方式就过了 C++ Code: #include <c…
题目大意:给你一个有$n$个盘子的汉诺塔状态$S$,问有多少种不同的操作方法,使得可以在$m$步以内到达状态$T$.$n,m\leqslant100$ 题解:首先可以知道的是,一个状态最多可以转移到其他的$3$个状态,然后发现若$m\leqslant100$的话,每个柱子最多移动$7$个盘子,所以最多状态只有$3^{21}$次,这个数可能有点大,但是通过更严密的分析的话,最后状态数只有$10^5$级别,可以通过记忆化搜索通过. 卡点:妈啊,我怎么又把柱子上的顺序弄反了 C++ Code: #in…
#33. [UR #2]树上GCD 有一棵$n$个结点的有根树$T$.结点编号为$1…n$,其中根结点为$1$. 树上每条边的长度为$1$.我们用$d(x,y)$表示结点$x,y$在树上的距离,$LCA(x,y)$表示$x,y$的最近公共祖先(即树中最深的既是$v$的祖先也是$u$的祖先的结点). 对于两个结点$u,v(u≠v)(u≠v)$,令$a=LCA(u,v)$,定义$f(u,v)=gcd(d(u,a),d(v,a))$. 其中$gcd(x,y)$表示$x,y$的最大公约数,特别地,$gc…
#118. [UR #8]赴京赶考 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/118 Description 高中,高中,短暂的三年.NOI是高中结业考试,而高考在每年暑假举行. 高二暑假,这是你最后一次参加高考的机会.你已经为了高考停课很久了,OI的知识很久没管了.你并没有能力用一年时间补起别人三年的OI课程.这是你的最后一战,如果你失败了,可能就不能工地搬砖只能去清华了. 这天你背上行囊赴京赶考.此时…
#31. [UR #2]猪猪侠再战括号序列 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/31 Description 大家好我是来自百度贴吧的_叫我猪猪侠,英文名叫_CallMeGGBond. 我不曾上过大学,但这不影响我对离散数学.复杂性分析等领域的兴趣:尤其是括号序列理论,一度令我沉浸其中,无法自拔.至于OI算法竞赛,我年轻时确有参加,虽仅获一枚铜牌,但我素性淡泊,毫不在意,毕竟那所谓FFT.仙人掌之类…
UOJ 241. [UR #16]破坏发射台 题意:长度为 n 的环,每个点染色,有 m 种颜色,要求相邻相对不能同色,求方案数.(定义两个点相对为去掉这两个点后环能被分成相同大小的两段) 只想到一个奇怪的线性递推,无法写成矩乘的形式... 正解用状态记录了颜色是否相同 奇环,只考虑相邻,确定第一个的颜色,\(f[i][0/1]\)表示i个与第一个不同/同色的方案数 偶环,再考虑相对,分成两段,同时递推\(i,\frac{n}{2}+i\),\(f[i][0..6]\)来表示 构造矩阵讨论好烦啊…
1.0.0 Summary Tittle:[UML]NO.52.EBook.1.UML.1.012-[UML 大战需求分析]- 交互概览图(Interaction Overview Diagram) Style:DesignPattern Series:DesignPattern Since:2017-11-08 End:.... Total Hours:... Degree Of Diffculty:2 Degree Of Mastery:2 Practical Level:2 Desired…
[UOJ#50][UR #3]链式反应(分治FFT,动态规划) 题面 UOJ 题解 首先把题目意思捋一捋,大概就是有\(n\)个节点的一棵树,父亲的编号大于儿子. 满足一个点的儿子有\(2+c\)个,其中\(c\in A\),且\(c\)个儿子是叶子,另外\(2\)个存在子树,且两种点的链接的边是不同的,求方案数. 那么就考虑一个暴力\(dp\),设\(f[i]\)表示有\(i\)个节点的树的个数. 那么枚举它两个有子树的子树大小,然后把编号给取出来,得到: \[f[i]=\frac{1}{2}…
[UOJ#242][UR#16]破坏蛋糕(计算几何) 题面 UOJ 题解 为了方便,我们假定最后一条直线是从上往下穿过来的,比如说把它当成坐标系的\(y\)轴. 于是我们可以处理出所有交点,然后把它们从上往下排序. 相邻的两个点就构成了一个相交的平面(可以认为正无穷和负无穷位置还有一个点) 那么,这个区间是有限的,当且仅当过这个两点的直线在左侧都还能找到一个交点,在右侧也还能找到一个交点. 于是考虑怎么找交点,两侧基本等价,所以拆开考虑,比如考虑右侧. 我们从上往下依次扫每一个过每一个交点的直线…
[UOJ#82][UR #7]水题生成器(贪心) 题面 UOJ 题解 把\(n!\)的所有约数搜出来,这个个数不会很多. 然后从大往小能选则选就好了. #include<iostream> #include<cstdio> #include<algorithm> #include<vector> using namespace std; #define ll long long int n;ll m; vector<ll> ys; int p[2…
[UOJ#76][UR #6]懒癌(动态规划) 题面 UOJ 题解 神....神仙题. 先考虑如果是完全图怎么做... 因为是完全图,所以是对称的,所以我们只考虑一个有懒癌的人的心路历程. 如果只有一只狗有懒癌:第一天,看了看,似乎其他的狗都没有,但是村子里至少有一只狗有,然后就确定了. 如果有两只狗:第一天,看了看,有一只别的狗有懒癌,不确定:第二天,昨天有懒癌的那只狗还活着,证明他不能确定,所以他还看到了别的狗有懒癌,而除了自己的未知和那个有懒癌的人,别的人的狗都没有懒癌,所以自己的狗有懒癌…
[UOJ#75][UR #6]智商锁(矩阵树定理,随机) 题面 UOJ 题解 这种题我哪里做得来啊[惊恐],,, 题解做法:随机\(1000\)个点数为\(12\)的无向图,矩阵树定理算出它的生成树个数,然后找到四张图不拼接直接放在一起,也就是找到四个图,假设其生成树个数是\(f(G)\),那么就找到\(f(G_1)f(G_2)f(G_3)f(G_4)\equiv k\),然后预处理两两的乘积,丢到哈希表/\(\text{map}\)里,枚举另外一半直接查... 无向图的生成方式是每条边出现的概…