首页 > TAG信息列表 > 2019.7

2019.7.18 义乌模拟赛 T3 占领

首先第一问的树形换根dp是很显然的。 首先一次dp算出一个点子树内的答案,然后再一次换根把儿子什么的排个序就好了。 考虑第二个怎么做。 我们考虑\(a\)到\(b\)之间的路径,这中间肯定有一条边是不被走到的,然后感性理解一下这个东西具有可二分性。 就是大概要找到一个两边平均的位置

2019.7.17 义乌模拟赛 T2 白兔的旅行

图不连通差评。 可以发现这样建边每个连通块只有一个环。 这样的话环上的点可以任意选择。 但是然后如果你正着这样做不是很好做,考虑反过来。求最长上升就好做了,用一个支持撤销的树状数组维护即可。 时间复杂度\(O(nlogn)\) code: #include<bits/stdc++.h> #define I inline #defi

2019.7.17 义乌模拟赛 T3 白兔的树与白云的序列

这个东西显然可以二分。转化为判定性问题。 我们考虑一个答案怎么被判定合法。 首先我们将大于等于\(mid\)的边去掉,然后得到若干个连通块,每个连通块有一个\(siz\)和\(S\)的总和。 考虑这个有什么充要条件之类的,仔细思考一下会发现就是对于任意\(i\)都有\(siz_i\leq ToTS-S_i\) 这

2019.7.17 义乌模拟赛 T4 白兔的树与白云的序列

这个东西\(80\)分暴力\(O(NQs^2)\)很显然,直接每次询问跑一次树上背包即可。 然后考虑这个随机有什么用 这个东西树高是\(logn\),每个节点的孩子个数期望\(e\) 那么每次修改暴力跳修改,然后每次查询暴力跳询问即可。 但是这个东西还可以不依赖树随机,因为最大只有\(10\),所以跳\(10\)层

2019.7.16 义乌模拟赛 T3 白兔的子序列

卡常题差评。 首先这个东西我们可以枚举中间那个然后扫描线,那么就变成右边不超过某个值的对左边的逆序对个数这个东西可以直接线段树\(O(nlogn)\)搞。 但是这样常数大的和*一样,我们考虑换一种方法。 我们枚举第一个点,那么其实后面的方案数就是大于第一个点随意排列的方案数减去三

2019.7.16 义乌模拟赛 T4 老鼠进洞

很妙的一道题。 首先我们考虑将所有老鼠都进左边能进的且最优的洞。 然后有些老鼠其实是可以反悔的去选右边的洞,如果设第\(i\)只老鼠原来连\(j\),反悔去连\(k\),那么对答案的贡献就是\(p_k-2x_i+p_j\) 可以发现这个东西对\(k\)独立,那么我们用一个堆维护即可。 但是一个洞也可以反悔

2019.7.15 义乌模拟赛 T3 白云的路径

你看到这种东西就想到树的直径。 然后随便口胡反证一下就可以知道就是两种情况:一种是一条是直径,另一条是除去直径后的子树的最大直径,另一种是直径扣掉一段,然后扣掉的两个端点分别向下挂两条链。 第一种情况跑出直径随便处理,第二种情况预处理前缀\(max\)随便搞搞。时间复杂度\(O(n)

2019.7.14 义乌模拟赛 T3 set

你会发现这个东西看上去很玄学。 然后这个你会发现其实\(2\)和\(3\)是互不影响的。 所以我们对于每个数的后继都找到然后状压一下看看最大值然后最后将所有加起来即可。 注意如果一个数被算过了那么打上标记不再算。 时间复杂度\(O(能过)\) code: #include<bits/stdc++.h> #define

2019.7.13 义乌模拟赛 T2 string

这个东西直接算显然不好算,我们考虑将其中心爆破。 如果我们枚举第三个位置\(l\),再枚举第四个字符\(c0\),那么一二位的方案数是平凡的。 考虑如果时间复杂度允许,我们枚举第五个位置\(r\),设\(S(c,l,r)\)为\([l,r]\)中\(c\)的数量,那么答案就是\(S(c,l,r)\times S(c,r,n)\) 但是这样时

2019.7.12 义乌模拟赛 T2 flip

lxl的分治都场切了这道题的类分治居然没想到 考虑反着做这个东西。 反着做有一个好处就是可以\(O(1)\)用并查集处理一个点在一列中最近的两个坏点。 我们发现每次答案增大就是增大包含正在添加点的矩形。 这个东西很好做,我们将正在处理的点的这一行每个点的上下界都查出来,然后枚举

2019.7.11 义乌模拟赛 T4 D

我觉得这就是个大暴力好吧但是还是比正解跑得快。 首先我们看到形如三个\(Max-Min\)相乘的形式。 这个显然可以拆成8个式子然后分开计算。 这里以三个max相乘为例表明怎么分治计算。 对于没有跨立区间中点的询问,我们递归计算。 对于跨过区间中点的区间,我们对于每个序列双指针出右

2019.7.10 义乌模拟赛 T3 C

一眼就感觉这个东西很APIO。 然后就真那道题的弱化版。 首先我们显然处理出每个点往右边跳能跳到哪里出\(k\) 因为\(a\)非负所以这个东西显然单调可以双指针指出来。 然后发现我们得到的是一个树形结构。于是愉快地树上倍增即可。 时间复杂度\(O((m+n)logn)\) code: #include<bits

2019.7.9 义乌模拟赛 T4 D

我真是tcl居然没有调出来。 首先套路地拆成上行和下行两端。 先考虑上行,对于一个点\(u\)如果满足条件那么它一定满足\(d_l-d_{u}=u\) 移项得到\(d_l=d_u+u\) 这不是链上数一个数的个数吗,dfs的时候差分询问开桶记录即可。 然后下行也是一样的。 总的时间复杂度\(O(mlogn+n)\)时间复

2019.7.9 义乌模拟赛 T2 B

首先根据四色定理这个颜色肯定不超过\(4\) 然后题目中给了\(7\)的样例是4,然后手推一下\(1\)到\(6\)即可。 然后考虑\(4\)怎么构造。 容易发现除了\(2\)其它都是奇数。 然后我们对这个东西奇偶染色容易发现上下只要颜色不同即可。 所以上面\(12\)下面\(34\)就好了。 code: #include

2019.7.9 义乌模拟赛 T3 C

这个显然是最长上升子序列长度。 考虑怎么求这个东西。 我们设\(dp_{i,j}\)表示在\(A\)中到了\(i\),已经使用了\(j\)次的在\(B\)中最大能到达的位置。 然后考虑两种转移,一种是\(A\)后移,一种是\(B\)跳到最近的位置。 时间复杂度\(O(nk)\),然而第二个包最后一个点过不去,特判了qwq code

2019.7.8 义乌模拟赛 T4 D

很妙的题目,考试的时候没做出来我果然是菜。 考虑对这个东西分治。 对于两边的分治下去即可。 然后对于跨越区间中点的特别处理。 对于左边处理出\(Sum_i\)表示\([i,m]\)内的最大前缀长度,\(Maxn_i\)表示\([i,m]\)内的最大子段和。 右边同理,那么对于一对\((i,j)\)答案就是\(\max(\ma

2019.7.8 义乌模拟赛 T3 C

为什么我的\(O(n)\)做法比\(O(nloglogn)\)做法跑得还慢啊! 首先S1的长度为\(i\)的子串有\(n-i+1\)个。 然后全部长度为\(i\)的子串有\(2^i\)个。 \(i\)成为答案长度的一个充分条件为\(2^i>n-i+1\) 带个\(i=log(n+1)\)进去发现成立。这启发我们将长度小于\(i\)的全部打出来然后看那

2019.7.8 义乌模拟赛 T2 B

我们发现每个值的贡献其实是独立的。 所以这启发我们对于每个值单独计算。 题目中真正有意义的合并只有\(O(n)\)次,每次暴力归并所以是\(O(n^2+m)\)的。 但是这个显然不够优。 我们考虑启发式合并。 这样再用个set维护就可以了。时间复杂度\(O(nlog^2n)\) 用线段树合并可以一只log

杭电多校(四)2019.7.31--暑假集训

【HDU 6014】 SOLVED 【题目大意】给定N个节点,两点之间距离是节点编号的与,在这样的前提下,求最小生成树,输出代价和路径 【思路】通过lowbit求第一个0的位置,然后令此位为1的值就是最优解 【总结】1.与或非都要先考虑拆分后二进制的特性                2.检验算法正确性时,验

2019SDSC夏令营游记

 Day 1 2019.7.22 晴 第一天夏令营,是在一所大学举办的。 到之前的我好兴奋,要提前看一下大学到底是什么样的。 ~~聊了一上午的天~~ 坐了一上午的公交终于到了目的地,下午很自由,自己在宿舍里面休息一下然后聊聊天就好了,很友好。 但是老师一走我们就开始了三国杀,我是一个大萌新,而且是

2019.7.31

  目录 1、进程 2、操作系统的结构 3、操作系统的发展历史 4、内核与GNU/Linux系统的版本问题 5、开源体系 6、Linux的安装与命令简介     1、进程 默认的守护进程(开机时就需要启动) 普通进程(程序都会启动自己的进程)                (1)普通进程要依赖于默认进程。  

2019.7.31 Linux 第五章作业 权限及归属管理

1、为主机新增两块30GB的SCSI硬盘 2、划分3个主分区,各5GB,剩余空间作为扩展分区 /dev/sdb1 2048 10487807 5242880 83 Linux/dev/sdb2 10487808 20973567 5242880 83 Linux/dev/sdb3 20973568 31459327 5242880 83 Linux/de

2019.7.31学习内容及笔记

格式化输出 定义:就是符合某种规范的输出,而这里的规范就叫做格式化 三种格式化方式 第一种方式(占位符)是基于python3.0版本的输出方式 这种输出方式的好处是可以对任意类型的字符串进行拼接,占位符有两个表现形式,一个是%s(针对所有数据类型),%d(只针对数字类型),举例: name = 'nick' age =

2019.7.31刷题统计

第一题:1094 这道题没什么可说的,就是链表的标准模板而已。 AC代码: 第二题:1096 这道题唯一需要注意的一点就是cin完之后会有一个回车,根据提示加一个cin.get()就行了。 AC代码:

2019.7.30日笔记

现如今是万物互联时代 *一. IT发展方向* 云计算--------------大数据 大数据运维: 1.Linux操作系统(Windows--桌面工程师) 2.Linux运维 -----(Web架构) -----(搭建自己的网站) 3.虚拟化KVM\XEN