inline

LGOJ4299 首都

那年仲夏 提交于 2020-02-28 07:19:28
这题是 \(LCT\) 维护子树信息中的 \(LCT\) 维护重心 Description link 题意概述:给定一个森林,要求支持以下操作 1.链接两个点 2.求一个点所在树的重心 3.求所有重心编号的异或和 Solution \[Begin\] 看到有链接和询问操作的题目,我们想到了 \(LCT\) 首先是一些重心的性质,本题可以用到: \(1.\) 点到树上所有点的距离和最小的那个点就是中心 \(2.\) 重心在添加一条边之后只会移动最多一条边的距离 \(3.\) 如果我们联通森林里的两棵树,那么新树的重心就在原两树重心的路径上 应该都由重心的定义理解啥的易证吧 \(2333\) 然后我们在处理 \(2\) 操作的时候搞个并查集( \(findroot\) 好像很慢) 处理 \(3\) 操作的时候直接在链上进行类似二分查找的东西,看两侧子树的大小关系 \[Q.A.D\] \(P.s.\) 博主知道应该是 \(QED\) Code #include <bits/stdc++.h> using namespace std; #define int long long namespace yspm { inline int read() { int res = 0, f = 1; char k; while (!isdigit(k = getchar())) if (k == '

Is there any good reason for javascript to be inline

不羁的心 提交于 2020-02-28 02:32:02
问题 I've been building a site. At some stage I noticed that IE display was a little broken and Chrome had all but rendered nothing but the body tag (empty), and FF all looked good. After throwing my keyboard around the room and bashing my head against my mouse, I discovered the problem. I had left (don't ask how or why, must have been some lightning speed cut and paste error) an HTML comment unclosed in an inline script block. <script type="text/javascript"> <!-- ... </script> I'm guessing (not

Is there any good reason for javascript to be inline

百般思念 提交于 2020-02-28 02:30:45
问题 I've been building a site. At some stage I noticed that IE display was a little broken and Chrome had all but rendered nothing but the body tag (empty), and FF all looked good. After throwing my keyboard around the room and bashing my head against my mouse, I discovered the problem. I had left (don't ask how or why, must have been some lightning speed cut and paste error) an HTML comment unclosed in an inline script block. <script type="text/javascript"> <!-- ... </script> I'm guessing (not

POJ 3468 A Simple Problem with Integers 线段树

眉间皱痕 提交于 2020-02-27 08:19:40
http://poj.org/problem?id=3468 线段树区间操作...和昨天的题差不多...也是lazy操作... /********************* Template ************************/ #include <set> #include <map> #include <list> #include <cmath> #include <ctime> #include <deque> #include <queue> #include <stack> #include <bitset> #include <cstdio> #include <string> #include <vector> #include <cassert> #include <cstdlib> #include <cstring> #include <sstream> #include <fstream> #include <numeric> #include <iomanip> #include <iostream> #include <algorithm> #include <functional> using namespace std; #define EPS 1e-8 #define DINF 1e15 #define MAXN 105000

线段树入门

拈花ヽ惹草 提交于 2020-02-26 22:19:59
线段树入门 引题 有一个包含 N N N 个数的序列( N ≤ 1 e 6 N \leq 1e6 N ≤ 1 e 6 ),给 Q ( ≤ 1 e 6 ) Q(\le 1e6) Q ( ≤ 1 e 6 ) 个操作,每个操作是下面两种中的一种: 区间加:给定 l , r , x l,r,x l , r , x ,将序列 N N N 下标 ∈ [ l , r ] \in [l, r] ∈ [ l , r ] 的数加上 x x x 区间求和:给定 l , r l,r l , r ,询问下标 ∈ [ l , r ] \in [l,r] ∈ [ l , r ] 的数的和 一种很暴力的想法是对每个操作都一遍循环进行修改、求和,显然会超时;看到区间求和很容易就能想到前缀和,这样可以把区间求和降到常数复杂度,然而区间加还是 O ( N ) O(N) O ( N ) ;这时就需要线段树登场了 介绍 线段树是一种实用的数据结构,它可以快速地处理区间操作,维护区间信息。线段树是一棵二叉树,它的每一个节点存储的是一个区间的信息(如区间和, 左右端点等),如下图所示 笔者个人比较习惯用结构体来定义每一个节点,如果只开 2 N 2N 2 N 个节点,有一些情况是不够的,索性开到 4 N 4N 4 N ,并从上到下,从左向右进行编号,根节点编号为1,其左儿子是2,右儿子是3,一次类推: # define ls

js中级系列三:前端性能优化

随声附和 提交于 2020-02-26 09:15:56
原文链接:http://www.cnblogs.com/xxcanghai/p/5205998.html 链接:http://www.zhihu.com/question/21658448/answer/18903129 前端优化的途径有很多,按粒度大致可以分为两类, 第一类是页面级别的优化,例如 HTTP请求数、脚本的无阻塞加载、内联脚本的位置优化等 ; 第二类则是代码级别的优化,例如 Javascript中的DOM 操作优化、CSS选择符优化、图片优化以及 HTML结构优化等等。 一、页面级优化   1. 减少 HTTP请求数   一个完整的请求都需要经过 DNS寻址、与服务器建立连接、发送数据、等待服务器响应、接收数据这样一个 “漫长” 而复杂的过程。时间成本就是用户需要看到或者 “感受” 到这个资源是必须要等待这个过程结束的,资源上由于每个请求都需要携带数据,因此每个请求都需要占用带宽。另外,由于浏览器进行并发请求的请求数是有上限的 (具体参见此处 ),因此请求数多了以后,浏览器需要分批进行请求,因此会增加用户的等待时间,会给用户造成站点速度慢这样一个印象,即使可能用户能看到的第一屏的资源都已经请求完了,但是浏览器的进度条会一直存在。   减少 HTTP请求数的主要途径包括:   (1). 从设计实现层面简化页面     如果你的页面像百度首页一样简单

LGOJ4172 WC2006水管局长

拥有回忆 提交于 2020-02-26 09:09:10
首先声明,这份代码空间复杂度 \(O(n^2)\) ,瓶颈在给边打标记 由于博主太菜,懒得再改成低复杂度的打标记了,所以 \(BZOJ\) 的数据过不去 Description link 给一张图,会有删边操作,求当前图路径 \((x,y)\) 的最大边权 \(n \leq 10^3 ,m \le 10^5\) 或 \(BZOJ\) 版: \(n\le 10^5,m\le10^6\) Solution \[Begin\] 明确两点: 1.这个题要 \(LCT\) (因为有删边的操作) 2.这个题把询问离线下来,然后逆序加边更可做 这个题中LCT维护的是“边权” 这里有一个点边转化: 把每一个边拆成点,对端点连两条边(边权就是 \(e[i].dis\) ),这样就可以维护点权了,在 \(link\) 和 \(cut\) 操作中有点点不同 如下: cut(e[tmp - n].from, tmp); cut(e[tmp - n].to, tmp); link(x[i], id[x[i]][y[i]] + n); link(y[i], id[x[i]][y[i]] + n); 先给出图的最终态,然后求一个最小生成树 每个操作先打通链,也就是 \(split\) 然后对于询问操作,直接给 \(s[y]\) 对于改边的操作 每一次加边,都会在生成树上面添加一个环,然后我们找到环上最大边 \

洛谷P3348 [ZJOI2016]大森林 [LCT]

和自甴很熟 提交于 2020-02-24 16:28:42
传送门 刷了那么久水题之后终于有一题可以来写写博客了。 但是这题太神仙了我还没完全弄懂…… upd:写完博客之后似乎懂了。 思路 首先很容易想到 \(O(n^2\log n)\) 乘上 \(O(\frac{n}{\log n})\) 的巨大常数的暴力做法(雾 然后可以发现这题支持把询问抽离出来最后做,那么我们可以先只关注修改操作。 可以发现一个点在 \([l,r]\) 的树上连上去和在所有树上都连上去其实没有太大区别,只是修改生长节点时要判一下是否存在,其他时候其实可以每一棵树上都连一个,因为不存在的点并不会被询问到。 发现这题主要恶心在1操作(也就是更换生长节点),如果没有1操作那么所有树的形态就都一样了。 考虑用某种方法使得我们可以只维护一棵树,然后在这一棵树上面实现从 \(1\) 到 \(n\) 的灵活转换。 其实也不用太过灵活,只需要能够从 \(i\) 快速推到 \(i+1\) 即可。 既然1操作恶心,那么我们重点分析1操作。 考虑 \([l,r],x\) 的这样一次操作,对 \(l,l-1\) 这两棵树会造成什么差异。假设 \(l-1\) 的生长节点为 \(y\) 。 那么这就相当于把接下来所有连在 \(y\) 上面的节点以及它们的子树全都接到 \(x\) 上。( 注意:不管它们是否真的有在 \(x\) 树上,这对答案没有影响 ) 同理, \(r,r+1\)

Custom equality of types with statically resolved type parameters

笑着哭i 提交于 2020-02-21 23:57:33
问题 How to implement custom equality methods in F# types with statically resolved type parameters? I've tried doing it this way: [<CustomEqualityAttribute>] type Fraction< ^a when ^a: equality and ^a : (static member (*): ^a * ^a -> ^a) > (nominator: ^a, denominator: ^a) = member inline this.Nominator = nominator member inline this.Denominator = denominator member inline this.IsEqualTo(other: Fraction< ^a >) = this.Nominator * other.Denominator = other.Nominator * this.Denominator override inline

【Dwango Programming Contest 6th】C - Cookie Distribution(DP)

南笙酒味 提交于 2020-02-21 01:10:11
传送门 系数直接是乘起来的不好处理 考虑把系数 C C C 看做每个人在自己有的里面再选出一个作为特别的 然后 D P DP D P 特别的 设 f [ i ] [ j ] f[i][j] f [ i ] [ j ] 表示前 i i i 天已经有 j j j 个人拿了特别的的方案数 直接枚举这一天几个人拿了特别的乘两个组合数即可 显然这个转化是等价的 复杂度 O ( n 2 k ) O(n^2k) O ( n 2 k ) # include <bits/stdc++.h> using namespace std ; # define cs const # define re register # define pb push_back # define pii pair<int,int> # define ll long long # define fi first # define se second # define bg begin cs int RLEN = 1 << 20 | 1 ; inline char gc ( ) { static char ibuf [ RLEN ] , * ib , * ob ; ( ib == ob ) && ( ob = ( ib = ibuf ) + fread ( ibuf , 1 , RLEN , stdin ) ) ; return