解题报告
文章平均质量分 56
samjia2000
I swear...
We are INFINITE.
展开
-
JZOJ3745
给初中的讲题,顺便打下练手题,然而发现我已经是老年选手了,平时口胡太多打题会死的。。。竟然把dep打成dfn,本来是区间修改单点查询的线段树,为了常数改成单点修改区间询问,然而我打了单点询问。题目我们有一个树,大小为n。考虑树上的一条路径,如果一个边的两个点都在这路径上,我们称这个边属于这个路径,如果一个边有且只有一个点在这路径上,我们称这个边与这个路径相邻。现在每个边要么是黑色的要么是白色的,一开原创 2017-04-02 21:31:48 · 481 阅读 · 0 评论 -
BestCoder Round #93酱油记
今天请假逃了晚修来打BC,真的爽(晚上不用6:50去教室: ))A题目大意就是一个序列,然后每次覆盖掉一个没有相同元素的连续区间,不能覆盖已经覆盖掉的格子。 直接dp过去,用个map存一下某个元素上一次出现的位置。B题目大意:给出一个n位合法十进制,然后要求删掉恰好k个位置上的数,使得剩下的数模3等于零。 1<=n<=1051<=n<=10^5 好麻烦的题目 先枚举最高位的位置i,那就是说这原创 2017-04-01 22:34:01 · 656 阅读 · 0 评论 -
[bzoj4293][PA2015]Siano
于是就此成为了权限狗2333题目大意有n棵草,第i棵草每天长高a[i],有m次操作每次会在某一天将所有超过某个高度的部分都砍掉,初始草的高度都是0,对于每次操作输出砍掉了多少。题解由于初始都是0,那么画一下图发现草高度的相对顺序是永远不会变的,于是可以直接用线段树维护,操作时先在线段树上二分,然后修改比较trick,懒标记维护的是这个区间的草上一次被砍掉是什么时候以及上次剩下的是多高,然后就可以直接原创 2017-03-15 15:36:56 · 654 阅读 · 0 评论 -
Atcoder Grand 011 E- Increasing Numbers
题目大意定义s-num为从高位到低位的数不下降的数,比如1558是,而1221不是 给出n,将n分解成k个s-num的和,问k最小是多少 n<=10^500000题解起码也是我想了一小会的题啊2333 只是好久没有写博客刷刷存在感而已。 将n转化成一个十进制数a[1..k] (最高位为k,最低位为1) 设f[1]=1f[1]=1,f[i]=f[i−1]×10+1f[i]=f[i-1]\原创 2017-03-14 22:42:03 · 458 阅读 · 0 评论 -
JSOI2017滚粗记
今年去jsoi成功滚粗了啊,本来想在GDOI前练练自己状态的,没想到啊,唉:-(,竟然成功滚粗。 DAY1 看完三题,感觉第一题可做,然后就去做第一题,由于没有发现单调性,然后打了个treap,测了发大数据,好像会被卡常?然后没有管了,接着好像第三题比较可做,然后就去打了个很显然的DP,第二题直接打暴力了。 最后成绩出来的时候,发现t1果然被卡常了,然后t3没有分是什么回事?后来晚上的时候dh原创 2017-04-10 09:54:14 · 1809 阅读 · 0 评论 -
[codechef MARCH17]SUMDIS
题目大意有一个一行上有n个点的图 第i个点向i+1连长度为a[i]的有向边,向i+2连长度为b[i]的有向边,向i+3连长度为c[i]的有向边 问两两间最短路长度之和 1≤n≤1051\le n\le10^5水法先来说说我的水法: 考虑从后往前枚举起点,那么设当前到i,如果在分别以i+1,i+2,i+3为起点的最短路树中x点的父亲都是一样的,那么在后来枚举的i里面x的父亲是一样的。对于这样的原创 2017-03-20 22:44:15 · 565 阅读 · 0 评论 -
[Hackerrank Week of Code 30]A Graph Problem
题目大意定义一个无向图的价值为图中无序三元组(x,y,z)满足x,y,z两两之间有边的三元组数 给出一个n个点的无向图,求一个非空子图使得子图的价值除以子图的点个数最大。 1≤n≤501\le n\le 50题解失败失败,一开始一直在想01分数规划怎么加上meet in the middle 然后后来发现就是一个最小割模型 二分答案,然后根据答案见图,变成类似最大获利的模型,跑网络流之后判获原创 2017-03-20 16:55:31 · 654 阅读 · 1 评论 -
[Hackerrank Week of Code 30]Range Modular Queries
题目大意给出一个序列a[1..n] q个询问形如”l r x y”问a[l..r]中a[i]modx=ya[i]\mod x=y的个数 1≤n,a[i]≤400001\le n,a[i]\le 40000题解对于x≤200x\le200,将a[]分成n√\sqrt n块,预处理s[i][x][y]s[i][x][y]表示前i块中模x等于y的数的个数,然后询问时可以直接用s和暴力查询多出的部分,一原创 2017-03-17 22:13:01 · 456 阅读 · 0 评论 -
hihocoder 1381 Little Y's Tree
Problem有一棵有n个节点的树,每次询问删掉k条边后剩下的k+1个联通块里的直径的和。Solution虚树典型套路,考虑怎么维护每个联通块的直径,显然把树看成有根树的话,每棵树因为子树的边被删掉从而在dfs序上变成了若干块,但是由于删掉一条边只会对其直接的父亲产生1的影响,所以加起来是有O(k)块的,那么就只要用线段树维护一下直径,打起来挺快的,一次过掉。Code#include<iostrea原创 2017-02-22 15:35:05 · 412 阅读 · 0 评论 -
hihcoder 1117 战争年代
Problem有一棵有n个节点的树,每一轮会等概率随机一个[0,di][0,d_i]内的数uu,然后与xix_i距离不超过uu的点都会被涂成一个新的颜色,相邻的同颜色的点视为同一联通块,问m轮后联通块的期望个数。 1≤n≤20001\le n\le 2000Solution联通块个数=两边的点的颜色不同的边的个数+1 于是我们可以对每条边维护一下两边的点颜色不同的概率,假设有边(u,v)(u,v原创 2017-02-23 15:27:09 · 667 阅读 · 0 评论 -
hackerrank w29 Megaprime Numbers
Problem找出区间[l,r][l,r]之间由{2,3,5,7}四种数字组成的质数的个数 1≤l≤r≤10151\le l\le r\le10^{15} 0≤r−l≤1090\le r-l \le 10^9Solution设由{2,3,5,7}四种数字组成的数为A类数,A类数中的质数为B类数,我们要求的是B类数的个数。 由于有条件0≤r−l≤1090\le r-l \le 10^9,那么区间原创 2017-02-23 17:21:03 · 446 阅读 · 0 评论 -
hihocoder 1455 : Rikka with Tree III
Problem给出一个有n个节点的树,每个节点i有权值v[i](1≤v[i]≤n)(1\le v[i]\le n),对于三个不同的点x,y,z,如果y一定出现在x到z的路径上且满足v[z]-v[y]=v[y]-v[x]>0,则称公差d(d=v[z]-v[y]=v[y]-v[x])出现过。问有多少不同的公差出现过。 1≤n≤500001\le n\le 50000Solution这样的题一眼就知道要原创 2017-01-01 12:46:31 · 377 阅读 · 0 评论 -
2017.1.13训练总结
Problem 0给出一个长度为n的序列a[1..n],将其变成序列b[1..n]的代价为∑ni=1|a[i]−b[i]|\sum_{i=1}^n|a[i]-b[i]|,要使b[1..n]成为一个不下降序列,问最小的代价 1≤n≤1041\le n\le 10^4Solution这道题和之前做过的一道题很像,我的做法是用splay维护dp的数组,打了二十多分钟,还挺顺的。Problem 1要求动态原创 2017-01-13 23:41:24 · 546 阅读 · 0 评论 -
TopCoder SRM 561 Orienteering 题解
作者:钟知闲 关键字:图论 数学 概率与期望 题目简述以网格图的形式给出一个无根树,以及树的点集的一个子集 CC。现从 CC 的所有大小为 KK 的子集中等概率选取一个子集 SS,记 length\mathrm{length} 为树中经过所有 SS 中的点的最短路径长度(路径长度定义为经过的边数,可以重复经过同一条边,此时长度需要被计算多次)。给定无根树、点集 CC 以及整数 KK,求 leng转载 2016-12-20 17:18:40 · 711 阅读 · 0 评论 -
【GDOI2017模拟二试4.12】石子游戏
题目大意给出n个数a[i],将x改为y的代价为|x-y|,求将a变成xor和为零的最小代价。 1≤n≤15,0≤a[i]≤1091\le n\le 15,0\le a[i]\le 10^9题解考虑动态规划,按二进制从高到低,用3n3^n的状态表示每个数是在k位之前是增加/不变/减少,设f[k][i][S][0/1]表示当前做到第k位,当前考虑第i位,S为每个数的状态,然后转移有: 1、若k位之前原创 2017-04-12 20:38:47 · 558 阅读 · 0 评论 -
Topcoder SRM583
题目大意有一个n*m的01矩阵,每次等概率的选择一个1,然后将其标记(可能将已经标记的再标记),求每一行与每一列都至少有一个被标记的期望次数。 n×m≤200n\times m \le 200O(2n+m2^{n+m}nm)做法设f[r][c]表示当前局面为行的二进制状态是r列的二进制状态是c的期望,g[r][c]类似的,表示其概率。 考虑转移,枚举一个当前行或列没有其他点被标记的点,然后转移式原创 2016-11-02 22:24:04 · 520 阅读 · 0 评论 -
【SDOI2017】硬币游戏
题目大意有n个长度为m的字符集大小为2的串,随机生成字符串,每次以两种字符同样的概率随机多一位放在最后,如果出现了n个串中的一个就结束,对于每个串,输出以当前串为结尾的概率。 1≤n,m≤3001\le n,m\le 300Solution这题列方程真的很精妙啊。 直观做法是建出AC自动机,然后根据AC自动机来得到nm个方程。 但是这样显然不可以,因为有nm个变量。 我们要求的其实只有n个变原创 2017-04-21 22:21:17 · 1342 阅读 · 0 评论 -
codeforces 906E Reverses
Description给你两个串s和t,其中t是由s中选择若干个不相交的区间翻转得到的,现在要求求出最少的翻转次数以及给出方案。 1≤|s|=|t|≤5000001\le |s|=|t|\le 500000Solution先将s和t串合并成一个新的串a,其中若i为奇数,那么a[i]=s[(i+1)/2]否则a[i]=t[i/2] 然后问题就变成了将a分解成最少的长度为偶数的回文串,跟将字符串分解原创 2017-12-29 09:12:59 · 1154 阅读 · 0 评论 -
【NOI2017模拟6.23】回转寿司
题目大意有n个人排成一个圆环,每个人初始有一个数字a[i],有m轮操作,每轮操作选择一段连续的人并给出一个数字x,按顺时针顺序比较x和a[i],如果x小于a[i],就那么交换a[i]和x 1≤n≤4×1051\le n\le 4\times 10^5 1≤m≤2.5∗1041\le m\le 2.5*10^4解法考虑分块,那么对于一个块来说,如果当前某个数x进去了,那么出来的要不是x要不就是这个原创 2017-06-23 21:30:10 · 774 阅读 · 0 评论 -
SRM 664 hard BearSorts题解搬运
Div1 Hard: BearSortsFirst, we must understand what is probability of getting some sequence. It is equal to 0.5k0.5^kwhere kk is number of comparisons made by mergesort to get this sequence. To see why,转载 2017-06-11 21:45:49 · 392 阅读 · 0 评论 -
【NOI2017模拟6.22】没有上司的舞会
题目大意只有加点操作,动态维护树的最大独立集题解考虑LCT,对于一个点x,s[x][0/1]表示x选或不选时不与他在同一条链上的儿子的DP值,f[x][0/1][0/1]表示splay中x维护的这一个区间最左端选或不选以及最右端选或不选的DP值,只要在切掉splay的边或连接时维护s就好了代码#include<iostream>#include<cstring>#include<cstdio>原创 2017-06-22 22:36:44 · 771 阅读 · 0 评论 -
【NOI2017模拟6.22】排列问题
题目大意有n种球,每种球有不同的颜色,第i种球有a[i]个,现在将这些球排成一排,给出q组询问,每组询问给出一个数x,询问满足相邻的球颜色相同的个数为x的排列个数。 设m为所有球的个数和,数据满足:1≤n,m≤2×1051\le n,m\le 2\times 10^5题解设g[i]表示所有球总共被分成i段的方案数(注意,g[i]所描述的每一段的颜色一定是一样的,但是相邻的段的颜色是可能一样的)原创 2017-06-22 22:32:03 · 569 阅读 · 0 评论 -
CSA Beta Round Cycle Tree
题目A cycle tree is a connected undirected graph that respects one of the following: It’s an elementary cycle of length greater than or equal to 3. It’s a graph resulted by attaching an elementary cycl原创 2017-06-21 15:43:33 · 487 阅读 · 0 评论 -
2016 TCO Algorithm 1B SettingShield
题目大意有h个普通栅栏,一个特殊栅栏和n棵植物 第i棵植物位于第i个单位 对于第i个普通栅栏有其保护的区间l[i]到r[i],特殊栅栏的保护区间是1到n 每个栅栏有一个非负整数s[i],表示它的强度 对于代价,普通栅栏需花费s[i],特殊栅栏需花费t*s[i] 对于第i棵植物有protection[i],需满足:对于所有保护了植物i的栅栏的强度总和大于等于pretection[i] 求最原创 2017-06-21 15:41:46 · 376 阅读 · 0 评论 -
SRM713 hard CoinsQuery
题目大意给出n种物品,每种物品有无数个,物品i有其价值v[i]及其体积w[i],给出q个询问,每个询问给出一个数S,求所有选择物品的方案中总体积恰好为S的方案的最大价值,以及其方案数 一种方案可以描述成一个长度为k序列t,满足t[i]表示选择了第t[i]种物品 若两方案的k不同,两方案被视为不同 若两方案的k相同且存在i使得t1[i]!=t2[i],两方案被视为不同 1<=n,q,w[i]<原创 2017-06-21 15:39:02 · 429 阅读 · 0 评论 -
CF228D Fox and Perfect Sets
题目大意定义一个集合是完美的,当且仅当∀a,b∈S,a⊕b∈S\forall a,b\in S,a\oplus b\in S 给出k,求出最大的数不超过k的完美集合个数解法显然一个完美集合可以由一组线性基表示: 对于集合S有线性基:α1,α2⋯αk\alpha_1,\alpha_2\cdots\alpha_k 考虑如何唯一表示一个集合(即如何唯一表示一组线性基) 首先假定一组线性基,符合:∀原创 2017-06-21 15:36:05 · 605 阅读 · 0 评论 -
【NOI2017模拟6.20】树形图求和
题目解法一首先对于树形图的个数这样算: a[i][i]表示i号点的出度,a[i][j]表示从i到j的边个数的相反数 去掉第n行第n列后剩下的矩阵的行列式即为树形图个数 考虑枚举每条边并计算这条边的影响。 就是说我们枚举一条边(x,y)然后a[x][x]–,a[x][y]++重新计算行列式 对于如下矩阵: A=[a1,1......a1,n]A=\begin{bmatrix} a_{1,原创 2017-06-20 21:00:25 · 855 阅读 · 0 评论 -
【NOI2017模拟6.29】呵呵
题目 1≤n≤20001\le n\le2000解法考虑一个特定形态的树的贡献,设点i的度数为d[i],那么答案就是: ∑(∏wdii⋅di)\sum(\prod w_i^{d_i}\cdot d_i) 考虑prufer序,一个度数为d[i]的点出现的次数是d[i]-1,那么就可以得到一个很显然的DP,f[i][j]表示前i个点的度数为i+j: fi,j=∑d=0jfi−1,j−d⋅(d原创 2017-06-29 16:42:51 · 927 阅读 · 0 评论 -
THUPC2017 I题 Sum
前言今年跟着Jason和栋栋去了thupc,做完g题之后我就一直一边吃东西一边看着他们玩2333,最后还莫名有奖金(赚大了; )哈哈哈)题目大意给出长度为n的数组a[] 设fk=∑i=1naikf_k=\sum_{i=1}^n{a_i}^k 求f[1..n] 1≤n≤4×1051\le n\le 4\times 10^5解法这题竟然是生成函数,我竟然没有去写!!(虽然好像很少写多项式求逆来着)原创 2017-05-19 11:36:02 · 2095 阅读 · 0 评论 -
Atcoder Regular Contest 072 E Alice in Linear Land
题目大意在最开始Alice离终点的距离为D,第i天,Alice会有一个行走距离a[i],如果当前距离s>abs(s-a[i]),那么s就更新为abs(s-a[i]),s变为0时到达终点。 先给出若干询问,每次询问一个位置x,问能否通过改变a[x]的值,来使得Alice经过n天后不能到达终点 1≤q,n≤1051\le q,n\le 10^5题解显然我们可以预处理出pre[i]表示经过前i天之后的原创 2017-04-25 22:41:45 · 682 阅读 · 0 评论 -
【GDOI2017第四轮模拟day2】绝版题
题目大意对于一棵树,q个操作可以新增节点或改变一个点的权值,或询问整棵树的带权重心,强制在线 1≤q≤3×1051\le q\le 3\times 10^5题解考虑如何找带权重心,显然是每次往最大权的子树走,条件是这个子树的权×2大于整棵树的权值和。 那么就很明显了,我们要做的是维护以每个点为根的子树的权值和,以及每个点的儿子中的最大权。 由于一条链上的信息更改会影响很多点,那么我们可以用LC原创 2017-04-25 22:17:21 · 533 阅读 · 0 评论 -
THUWC2017 bipartite
【问题描述】某人在玩一个非常神奇的游戏。这个游戏中有一个左右各 nn 个点的二分图,图中的边会按照一定的规律随机出现。为了描述这些规律,某人将这些边分到若干个组中。每条边或者不属于任何组 (这样的边一定不会出现),或者只属于一个组。有且仅有以下三类边的分组:这类组每组只有一条边,该条边恰好有 50%50\% 的概率出现。这类组每组恰好有两条边,这两条边有 50%50\% 的概率同时出现,有 50转载 2017-05-26 11:56:36 · 838 阅读 · 0 评论 -
Codechef DEC16 SEAINCR
ProblemU are given an array AA consisting of NN integers.There are MM queries(Li,Ri)(L_i,R_i)and u are required to find the length of the longest increasing subsequence in the array A[Li...Ri]A[L_i...R原创 2016-12-14 21:54:09 · 615 阅读 · 1 评论 -
[NCR CodeSprint]Points and Fences
Problem有n个点在平面上,给出q个询问或操作,每个操作加入或删除一个矩形方框(保证任何时刻都不会有点在矩形的边上,不会有矩形接触或相交),询问每次询问两个点能否不经过矩形方框的边互相到达。 1≤n≤1051\le n\le 10^5Solution我们要解决的问题在于判断两个点是否被同样的矩形集合覆盖。 于是我们可以给每个矩形随机一个(0,264−1](0,2^{64}-1]的权值,然后每原创 2016-11-17 16:58:57 · 470 阅读 · 0 评论 -
Hackerrank 101 Hack 42 Array Pairs
题目来源:https://www.hackerrank.com/contests/101hack42/challenges/array-pairs题目大意给出长度为n的序列a,求有多少点对(i,j)满足1≤i<j≤n且ai×aj≤max(ai,ai+1,...,aj)1\le i<j\le n且a_i\times a_j \le max(a_i,a_{i+1},...,a_j) 1≤n≤5×105原创 2016-11-01 17:23:59 · 648 阅读 · 0 评论 -
【HNOI2015】开店
题目大意给出一棵有n个节点的树,每条边有个边长,每个节点有个权值a[i],有q个询问形如”u l r”询问点u到所有权值在l到r之间的点的路径长度和一眼解法一个点与多个点之间的距离和,显然我们可以用点分治来做,对于每个分治中心,我们将其所有该层的点都记录下来,那么每层共有n个,最多nlog2nnlog_2n个,同时,在我们计算答案时要计算每个分治中心对其父亲的影响。 询问时我们就直接在重心树上跳,原创 2016-07-03 21:25:46 · 679 阅读 · 0 评论 -
【NOIP2016A组模拟7.13】搬运干草捆
题目题解做模拟赛时我就想了出来,然而删除节点时没有更新father,于是GG…… 首先可以列出一个DP的式子f(i,j)=min(f(i−1,k))+|j−hi|∀k≥jf(i,j)=min(f(i-1,k))+|j-h_i|\forall k\ge j 于是我们设g(i,j)=min(f(i−1,k)),∀k≥jg(i,j)=min(f(i-1,k)),\forall k\ge j则f(i,j原创 2016-07-14 15:57:41 · 471 阅读 · 0 评论 -
【NOI2010】超级钢琴
题目大意给出一个长度为n的序列,求所有长度在L到R之间的连续子序列的权值和的前k大的和解法首先将以每个点为开头的长度在L到R之间的序列的权值和最大的区间扔进堆里,每次拿出堆顶,然后再放入以当前点为开头的次大,如此类推,就可解决该问题了。 那么如何维护k大,下面介绍几种方法: 1、可持续化treap,每次移动一个点,相当于是一个框在移动,即加入一个,删除一个,每次直接查找就好了 2、可持续化线段原创 2016-07-14 11:45:44 · 922 阅读 · 0 评论 -
Tjoi2016&Heoi2016 求和
题目 求f(n)f(n)模998244353(7×17×223+1)998244353(7×17×2^{23}+1)看到模数这么奇怪的模数,很容易想到ntt啦正解首先我们看第二类斯特林数的意义S(n,m)S(n,m):将n个不同的元素拆分成m个集合的方案数。 那么乘上m!m!即(S(n,m)×m!)(S(n,m)×m!)的意义不过就是让每个集合有了区别而已。 然后那么根据意义,我们可以用容斥原原创 2016-07-14 08:31:17 · 1427 阅读 · 0 评论 -
[Hnoi2010]Bounce 弹飞绵羊
题目大意从左到右有n个位置,在第i个位置会被弹到第i+a[i]个位置,超出范围则挂掉,有q个操作,一种是更改某一位置上的a[i],一种是询问第i个位置什么时候会挂掉分块设f(i)为i在其块内最少跳多少次会跳出这个块,而g(i)表示他跳出块后会跳到哪个点,于是修改时我们可以重构块,询问时就一个一个块跳。时间复杂度O(nn√)O(n\sqrt n)LCT很容易发现,如果我们把跳出去都记为跳到n+1,那么原创 2016-06-30 15:30:59 · 382 阅读 · 0 评论