题目描述 输入 输出 样例输入 4 5 1 3 2 5 1 2 1 3 2 4 4 2 4 1 2 4 2 3 4 3 1 4 1 4 1 4 样例输出 16/3 6/1 提示 对于所有数据满足 1<=N<=50,000 1<=M<=50,000 1<=Ai<=10^6 1<=D<=100 1<=U,V<=N 前三个操作都很简单了,LCT就能维护,重点是第四个操作. 求一个区间所有子区间的区间和之和,直接求所有区间和不好求,我们换一种角度去做.…
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=3091 题解 调了整个晚自习才调出来的问题. 乍一看是个 LCT 板子题. 再看一眼还是个 LCT 板子题,不过需要考虑两个区间的结果的合并. 首先考虑到期望可以转化为每一个区间的权值和.那么对于每一个区间,我们维护一个 \(s, ls, rs, sum\) 分别表示整个区间的和,所有前缀的和,所有后缀的和,整个区间的子区间权值和. 那么在区间合并的时候,\(rs\) 会被计算右区间大小次,\…
题目描述 输入 输出 样例输入 4 5 1 3 2 5 1 2 1 3 2 4 4 2 4 1 2 4 2 3 4 3 1 4 1 4 1 4 样例输出 16/3 6/1 题解 LCT区间合并 前三个操作都是LCT的基本操作,可以LCT水过:重点在于第四个操作. 考虑一个长度为n的序列,它的子区间个数为$\sum\limits_{i=1}^ni=\frac{n(n-1)}2$,只需要维护每个子区间的长度之和即可. 考虑如果已经知道了左右子树的信息以及当前节点信息,如何更新当前子树的信息.需要解决…
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ3091 题意概括 鉴于本人语文不好,此题的描述原题很清晰,废话不多,请看原题. 可怕,原题是图片,不可以复制题目+删掉废话了…… 题解 http://blog.csdn.net/popoqqq/article/details/40823659 这位大佬写的很好. 我的代码在找错的时候一边找,一边该,然后发现和他改的好像…… 代码 #include <cstring> #include <c…
Description Input Output Sample Input 4 5 1 3 2 5 1 2 1 3 2 4 4 2 4 1 2 4 2 3 4 3 1 4 1 4 1 4 Sample Output 16/3 6/1 解题思路: 大爷比我讲得好到不知道哪里去了PoPoQQQ的博客 就是考虑一个点会被经过多少次*多少贡献,感觉这个好套路,线性求解不是问题,不会动态维护QAQ. 考虑一个点代表的子树信息内部处理完毕,处理左子树对右子树或右子树对左子树的影响,像分治的想法QAQ. 最后…
[BZOJ3091]城市旅行 Description Input Output Sample Input 4 5 1 3 2 5 1 2 1 3 2 4 4 2 4 1 2 4 2 3 4 3 1 4 1 4 1 4 Sample Output 16/3 6/1 HINT 对于所有数据满足 1<=N<=50,000 1<=M<=50,000 1<=Ai<=10^6 1<=D<=100 1<=U,V<=N 题解:做过不少在线段树上推式子的,但是头一…
3091: 城市旅行 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1927  Solved: 631[Submit][Status][Discuss] Description Input Output Sample Input 4 5 1 3 2 5 1 2 1 3 2 4 4 2 4 1 2 4 2 3 4 3 1 4 1 4 1 4 Sample Output 16/3 6/1 HINT 对于所有数据满足 1<=N<=50,000 1&l…
题目: http://www.lydsy.com/JudgeOnline/problem.php?id=3091 题解: 首先前三个操作就是裸的LCT模板 只考虑第四个操作. 要求我们计算期望,所以我们考虑计算出所有情况的和然后在除以情况的数目. 这样我们就找到分子分母了. 我们很容易发现分母即为\(\frac{n*(n+1)}{2}\) 对应到我们的Splay树上即\(\frac{siz*(siz+1)}{2}\) 所以我们现在考虑维护分子: 对于首先我们考虑在一个长为n的序列上统计这些东西…
3091: 城市旅行 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1454  Solved: 483[Submit][Status][Discuss] Description Input Output Sample Input 4 5 1 3 2 5 1 2 1 3 2 4 4 2 4 1 2 4 2 3 4 3 1 4 1 4 1 4 Sample Output 16/3 6/1 HINT 对于所有数据满足 1<=N<=50,000 1&l…
Description Input Output Sample Input 4 5 1 3 2 5 1 2 1 3 2 4 4 2 4 1 2 4 2 3 4 3 1 4 1 4 1 4 Sample Output 16/3 6/1 HINT 对于所有数据满足 1<=N<=50,000 1<=M<=50,000 1<=Ai<=10^6 1<=D<=100 1<=U,V<=N   恶心的动态树上维护各种信息. 不难发现ans=ΣAi*i*(len-…
https://www.lydsy.com/JudgeOnline/problem.php?id=3091 https://blog.csdn.net/popoqqq/article/details/40823659 看题解吧,没什么好解释的....板子题, 我觉得以后我写lct都可以像这样专门写个rev和add的函数出来,很好用. #include<iostream> #include<cstdio> #include<algorithm> #include<c…
嘟嘟嘟 好题,好题 刚开始突发奇想写了一个\(O(n ^ 2)\)暴力,结果竟然过了?!后来才知道是上传题的人把单个数据点开成了10s-- 不过不得不说我这暴力写的挺好看的.删边模仿链表删边,加边的时候遍历其中一棵树,使两棵树染上相同的颜色,这样判联通就能达到\(O(1)\)了. 所以我决定先放一个暴力代码 #include<cstdio> #include<iostream> #include<cmath> #include<algorithm> #inc…
传送门 题意:转换成斜率然后维护区间的上升序列(从区间第一个数开始的单调上升序列) 区间保存这个区间的最长序列的长度$ls$和最大值$mx$ 如何合并两个区间信息? 左区间一定选择,右区间递归寻找第一个大于左区间最大值$v$的位置 具体来看,如果右区间的左最大值$<v$那么左面不可能选递归右面 否则这个区间所选的右面一定选,减去左面的$ls$再递归左面 合并复杂度$O(logn)$,总复杂度$O(nlog^2n)$ #include <iostream> #include <cst…
题目链接:https://vjudge.net/problem/SPOJ-GSS1 GSS1 - Can you answer these queries I #tree You are given a sequence A[1], A[2], ..., A[N] . ( |A[i]| ≤ 15007 , 1 ≤ N ≤ 50000 ). A query is defined as follows: Query(x,y) = Max { a[i]+a[i+1]+...+a[j] ; x ≤ i…
yii2通过foreach循环遍历在一个用户组中取出id去另一表里查寻信息并且带着信息合并元数组信息---案例 public function actionRandomLists(){ //查询到了所有用户的信息 $UserInfo=UserOperate::find()->select('id,username,sex,signature,lng,lat,imgs')->asArray()->all(); //循环遍历取出来所有的用户信息中想要的id,然后去另一数据表查询想要的内容 f…
定位实现代码: <span style="font-size:14px;">import java.io.IOException; import java.util.List; import android.content.Context; import android.location.Address; import android.location.Criteria; import android.location.Geocoder; import android.lo…
1 这个信息比较多 https://api.ipdata.co/?api-key=test <script> $.get("https://api.ipdata.co?api-key=test", function (response) { alert(response.country_code); }, "jsonp"); </script> 2 这个信息稍微少一些,但可以直接获取用户的IP等信息也可以查询指定的IP地址的信息 https:…
http://www.lydsy.com/JudgeOnline/problem.php?id=3091 (题目链接) 题意 给出一棵无根树,维护四个操作.link,cut,路径加法,路径期望查询. Solution 右转题解→_→:PoPoQQQ 对于无法直接维护的值,我们可以考虑做差,或者是用别的比较好维护的值来加减乘除得到. 细节 全程LL,先翻转再打标记. 代码 // bzoj3091 #include<algorithm> #include<iostream> #incl…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3091 [思路] 膜Popoqqq大爷的题解 click here [代码]是坑... #include<cstdio> #include<cstring> #include<iostream> #define FOR(a,b,c) for(int a=b;a<=c;a++) #define trav(u,i) for(int i=front[u];i;…
1018: [SHOI2008]堵塞的交通traffic Time Limit: 3 Sec  Memory Limit: 162 MBSubmit: 3064  Solved: 1027[Submit][Status][Discuss] Description 有一天,由于某种穿越现象作用,你来到了传说中的小人国.小人国的布局非常奇特,整个国家的交通系统可以被看成是一个2行C列的矩形网格,网格上的每个点代表一个城市,相邻的城市之间有一条道路,所以总共有2C个城市和3C-2条道路. 小人国的交通…
Tree Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=93850#problem/F Description You are given a tree with N nodes which are numbered by integers 1..N. Each node is associated with an integer as the w…
[题意]参考PoPoQQQ. 给定一棵树,每个点有一个点权,提供四种操作: 1.删除两点之间的连边 不存在边则无视 2.在两点之前连接一条边 两点已经联通则无视 3.在两点之间的路径上所有点的点权加上一个数 两点不连通则无视 4.询问两点之间路径上任选两点路径上的点权和的期望值 [算法]Link-Cut Tree [题解]第四步操作相当于路径所有区间点权和/区间总数. 假设链有n个点,区间总数就是n*(n+1)/2.假设点权分别为a1~an,则: $$ans=\sum_{i=1}^{n}a_i*…
题目链接 题意分析 首先存在树上的删边连边操作 所以我们使用\(LCT\)维护 然后考虑怎么维护答案 可以发现 对于一条链 我们编号为\(1,2,3,...,n\) 那么期望就是 \[\frac{a_1* 1* n+a_2* 2* (n-1)+a_3* 3* (n-2)+...+a_n* n* 1}{\frac{n*(n+1)}{2}}\] 很显然的 对于当前点\(i\) 穿过\(i\)的区间的左端点有\(i\)个 右端点有\(n-i+1\)个 乘法原理组合一下就可以了 总共的路径就存在\(\f…
熟悉老一代QQ的小伙伴可能都知道,很早以前的QQ,鼠标滑到头像的位置,你的位置和IP会在详情页显示,那么这个是如何做到的呢?下面我们就来玩一玩这个东西 首先,需求分析: 1.拿到客户端IP 2.通过IP拿到客户端所在地区 3.通过地区拿到当地天气 4.整合功能,展示给用户 第一步,如何拿到用户IP 我们以Django环境为例 # 客户端的请求,IP信息会在请求头中 request.META['REMOTE_ADDR'] # 或 request.META.get('HTTP_X_FORWARDED…
题目描述 分析 我们要找的是一段区间的和减去该区间的最大值能否被 \(k\) 整除 那么对于一段区间,我们可以先找出区间中的最大值 然后枚举最大值左边的后缀与最大值右边的前缀之和是否能被 \(k\) 整除 显然暴力枚举肯定会超时 所以我们可以用启发式合并的思想,只枚举长度较小的那一半,而在某种数据结构中查询另一半对应的值 查询的过程可以用主席树,但是常数巨大 其实我们可以对于每一个 \(\%k\) 后的前缀和开一个 \(vector\) \(vector\) 中存放该值出现的位置 然后大力二分即…
在网上找到一篇非常不错的树状数组的博客,拿来转载,原文地址. 树状数组 最新看了一下区间的查询与修改的知识,最主要看到的是树状数组(BIT),以前感觉好高大上的东西,其实也不过就这么简单而已. 我们有一个动态连续和查询问题:给定一个n个元素的数组A1,A2,A3,-An,你的任务是设计一个数据结构,使得其支持以下两个操作: 1:Add(x,d)操作:让Ax增加d: 2:Query(L,R)操作:计算AL+AL+1+⋯+AR. 第一种思路就是循环累加,这样每次的时间复杂度都是Θ(n)级别的.这样在…
Description Input Output Sample Input 4 5 1 3 2 5 1 2 1 3 2 4 4 2 4 1 2 4 2 3 4 3 1 4 1 4 1 4 Sample Output 16/3 6/1 HINT 对于所有数据满足 1<=N<=50,000 1<=M<=50,000 1<=Ai<=10^6 1<=D<=100 1<=U,V<=N Source 维护方法我就不再赘述了,见我博客的 BZOJ 2572 高…
tree Time Limit: 30 Sec  Memory Limit: 128 MBSubmit: 4962  Solved: 1697[Submit][Status][Discuss] Description 一棵n个点的树,每个点的初始权值为1.对于这棵树有q个操作,每个操作为以下四种操作之一:+ u v c:将u到v的路径上的点的权值都加上自然数c:- u1 v1 u2 v2:将树中原有的边(u1,v1)删除,加入一条新边(u2,v2),保证操作完之后仍然是一棵树:* u v c:将…
//By SiriusRen #include <cstdio> #include <cstring> #include <algorithm> using namespace std; ; ],lson[N*],rson[N*]; int first[N],next[N],v[N],w[N],tot,root[N],fa[N],deep[N],f[N]; ];}node[N]; void dfs(int x){ dfn[x]=++cnt; for(int i=firs…
public class Solution { public static ArrayList<Interval> merge(ArrayList<Interval> intervals) { ArrayList<Interval> result = new ArrayList<Interval>(); if(intervals == null || intervals.size()==0) return result; Collections.sort(i…