[洛谷P3567][POI2014]KUR-Couriers】的更多相关文章

传送门 简单主席树啊. 但听说有随机算法可以秒掉%%%(本蒟蒻并不会) 直接维护值域内所有数的出现次数之和. 当这个值不大于区间总长度的一半时显然不存在合法的数. 这样在主席树上二分查值就行了. 代码: #include<bits/stdc++.h> #define N 500005 using namespace std; inline int read(){ int ans=0; char ch=getchar(); while(!isdigit(ch))ch=getchar(); whi…
题意:给一个数列,每次询问一个区间内有没有一个数出现次数超过一半 题解: 最近比赛太多,都没时间切水题了,刚好日推了道主席树裸题,就写了一下 然后 WA80 WA80 WA0 WA90 WA80 ?????? 结果重新审题发现没有数据范围???? 哦,原来是500000,我是真的菜 因为必须要一个数出现超过一半 所以这个数肯定会在左子树和右子树中总个数和较大的那个里. 显然这样二分找到树底复杂度是logn的 如果此时树底这个点的数值大于一半,那么就输出这个解,否则puts("0") 以…
题目大意:给一个数列,每次询问一个区间内有没有一个数出现次数超过一半.有,输出这个数,否则输出$0$ 题解:主席树,查询区间第$\bigg\lfloor\dfrac{len+1}{2}\bigg\rfloor$大,并判断它出现次数是否大于$\Big\lfloor\dfrac{len}{2}\Big\rfloor$ 卡点:无   C++ Code: #include <cstdio> #define maxn 500010 #define N (maxn * 22) int n, m; int…
挺裸的,没啥可讲的. 不带修改的主席树裸题 Code: #include<cstdio> #include<algorithm> using namespace std; const int maxn = 500000 + 5; int n, m ,root[maxn]; struct Chair_Tree{ int cnt_Tree; int lson[maxn * 50], rson[maxn * 50], sumv[maxn * 50]; void build(int l,…
洛谷题目链接:[POI2014]KUR-Couriers 题目描述 Byteasar works for the BAJ company, which sells computer games. The BAJ company cooperates with many courier companies that deliver the games sold by the BAJ company to its customers. Byteasar is inspecting the coope…
洛谷题面传送门 考虑一个平凡的 DP:我们设 \(dp_i\) 表示前 \(i\) 辆车一来一回所需的最小时间. 注意到我们每次肯定会让某一段连续的火车一趟过去又一趟回来,故转移可以枚举上一段结束位置,设为 \(j\),那么有转移 \[dp_i=\min\limits_{j}\{\max(dp_j+i-j-1,a_i)+2s+i-j-1\} \] 在这里我们不妨假设 \(a_i<a_{i+1}\),这个可以通过从左到右扫一遍并执行 \(a_i\leftarrow\max(a_{i-1}+1,a_…
[POI2014]KUR-Couriers 思路: 卡空间,sb题: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 500005 #define maxn_ maxn*19 int n,m,lc[maxn_],rc[maxn_],dis[maxn_],ans; int ai[maxn],bi[maxn],root[maxn],tot,size; inline void in(int &now) { ; ')…
正解:主席树/莫队 解题报告: 传送门! 这题好像就是个主席树板子题的样子,,,? 毕竟,主席树的最基本的功能就是,维护一段区间内某个数字的个数 但是毕竟是刚get到主席树,然后之前做的一直是第k大,这个是维护区间内数字个数,题目类型不一样,所以还是积累一下这个题型和对应的方法QAQ 顺便也水一发题解 所以还是写下这题 首先不难想到对于[l,r]的点直接把r的树和l-1的树做差就可以得到 这样现在就相当于是得到了一棵线段树 那肯定就是维护这个区间的所有数字的出现次数(,,,我发现我这里出现了两个…
3524: [Poi2014]Couriers Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 2895  Solved: 1189[Submit][Status][Discuss] Description 给一个长度为n的序列a.1≤a[i]≤n. m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2.如果存在,输出这个数,否则输出0. Input 第一行两个数n,m. 第二行n个数,a[i]. 接下…
P3573 [POI2014]RAJ-Rally 题意: 给定一个\(N\)个点\(M\)条边的有向无环图,每条边长度都是\(1\). 请找到一个点,使得删掉这个点后剩余的图中的最长路径最短. 输入输出格式 输入格式: 第一行包含两个正整数\(N\),\(M\),表示点数.边数. 接下来\(M\)行每行包含两个正整数\(A_i,B_i\),表示\(A_i\)到\(B_i\)有一条边. 输出格式: 包含一行两个整数\(x,y\),用一个空格隔开,\(x\)为要删去的点,\(y\)为删除x$后图中的…