09 2018 档案
摘要:十分钟A掉23333. 为了代码更简单易写,考虑到n*ti也不大(<10^8),n*ti*si也不大(<intmax),可以开一个数组记录每个时刻两人的位置,然后跑一边所有时刻,两个人的位置进行判断就好了. 然而两人还可能在一块跑很长时间,也就是位置一直一样,就不能根据i与i-1的关系直接判断,但是
阅读全文
摘要:好久没写题解了,都怪这道题! 正解好像可以写矩阵乘法,但是! 本题n看似很大,但是考虑最优解一定是跑到一个顶点后在这个边上来回跑,然后看看跑的差不多了再去终点. 这个边一定是最短边么?不一定的,反例可以随便找啦. 这算离散化么...不懂 那么n就可以缩小到T^2了.而且T<=100,每个点有两条边,
阅读全文
摘要:刚开始真的没想到什么好算法,然后就看到了数据规模,小于5000...这不是在逗我么. 那么就可以支持n^2的算法了,对于每个点跑一次dfs,每个到达的点记录flag[i][now]=1,最后找最大值并输出. 明明是n^2为啥有快超时的啊?不懂
阅读全文
摘要:这是一道图论呦. 这怎么和图论相关呢?差分约束不是也看起来和图论无关么2333. 那么本题就类似于差分约束.考虑到矩形的每一条边都有一部分露出来,那么可以m*n的用至少四个点更新每个字母的四个顶角位置.然后对于每个有顶角的字母跑它的四个边,如果有别的字母就说明这个字母再本字母之上,连一条有向边.(在
阅读全文
摘要:我觉得这个评测机和我有仇,写了read+getchar都会超时这么多,最后好像是ios::sync_with_stdio(false);惹的祸... 昨天想找一些水题来写,就看到了这个模拟"水题",想了一下午都不知道怎么搞. 已知一些牛的颜色和位置,求连续相同颜色或连续两种颜色数量相同的区间右端点位
阅读全文
摘要:数论还是恐怖啊. 本题用了两次容斥和多次gcd的应用. 题目要求[x,y]中被8整除且不被a[i]整除的数.枚举[x,y]就gg了,临时处理边界也很麻烦,不如用一次容斥原理:ans[x,y]=ans[1,y]-ans[1,x-1]; 那么求ans[1,y]怎么弄呢. 假如现在n=0,答案就是y/8;
阅读全文
摘要:理解题意就还好吧:刚开始区间内每一个点权值为是s.对于每一个申请,如果能卖就输出yes并卖票,否则输出no. 这不是模拟么?策略都在了.然而c<=30000是会超时的,我们需要一个高级数据结构. 判断能不能卖=询问区间最小值,这个可以用线段树的.而线段树也支持区间修改,这道题就可以开始写了. 输入的
阅读全文
摘要:说起来,齿轮明明是一块转动的. 这道题概括了数论和图论,是一道很好的水题. 先用一个结构体存一下位置,如果遇见了xi==0&&yi==0的记录一下,它是第一个齿轮.看到n<=1080(好奇怪的数),就直接n^2两两比较齿轮连不连,同时sum[i]++,sum[f]++.最后sum[i]表示第i个齿轮
阅读全文
摘要:看了一眼题后认为是一个数论,写了写输入后又思考了一下得知第一个值一定是1,扔掉.后面的值全部减1,答案是这些数的一个什么因数个数. 为了避免被坑就去看了讨论,然后就看到了CDC学长的一番话,这个特性是知道的,但是这是怎么和图论扯上关系的啊. 首先,答案小于等于n. 其次,考虑到每个奶牛来的周期越小就
阅读全文
摘要:上数学课突然联想到了俩小毒瘤题,来与大家分享. 1. (-1,+∞) 2. (-1,3) 第一道题,f(x1)+2随f(x1)减小而减小.那么左边表示f(x)的最小值+2大于左边 这个式子的右边-f(x)随f(x)减小而增大,那么它就要求最小值的相反数小于右边 综上,上式可以转化为 min(f(x)
阅读全文
摘要:哎就很惨,对着数据模拟改了半个小时后多拿了5分。 这道题要A是要log级别的算法的,这就让我想到了lca。 求路径最小值的最大值,那么那些小边如果不是没了就连不到某个点了是不是就不需要了啊?这样删一条边再删一条边就形成了一个最大生成树。 那么本题的思路最大生成树+lca就出现了。 先按照边权sort
阅读全文
摘要:嗯~ o(* ̄▽ ̄*)o lca是树上两点的最近公共祖先。如果在同一个分支上就是更靠近根的那个点,否则就是大家一起向上走,第一次能都经过的那个点。 根据这两个性质,我们对于每次询问可以把一个向上走到根节点,标记走过的点。然后从另一个点向上走,直到遇到第一个标记过的点即为lca。 如果整个树是一个长链
阅读全文
摘要:看到n,m<=100000可以想到这是一个考高级数据结构的题,这个区间修改区间查询让我想到了线段树和树状数组。 然而看了一遍题后眉头一皱,发现并不简单。 它要求输出区间上炸弹种类数,那么维护区间和也不对,维护区间最大值也不对,看来不能直接套模板了。 这个时候需要重新综合考虑修改和查询的内容了。经过思
阅读全文
摘要:线段树也是一种高级数据结垢,经典的log型。 树状数组能做的事它都能做(单点修改区间求和与区间修改单点查询),它能做的事树状数组不一定能做(区间修改区间查询或查询最大值)。 这里有俩例题,代码风格也不太一样,大家将就一点。 这道题需要单点修改区间查询最大值,用树状数组事维护不了的,只好上一个线段树。
阅读全文
摘要:本题需要输出对于所有函数值当x取正整数的时候最小的前m个 装作每次询问函数值复杂度为1,直接算的话需要算好多次啊(我承认刚开始以为0<=x<=n)。然后还要排序,复杂度爆炸。 考虑到本题只关注前m个,那我可以从对称轴出发,向左右算m/2个,这样计算的复杂度变成了m*n了,然后还要对数组更改什么的。
阅读全文
摘要:这个状态压缩还是好看出来的吧?后三个操作决定了所有的状态都是六个六个一循环的。 然后怎么写呢?书上说完压缩之后就不谈了,说让自己写搜索??这咋搜啊,还不是4^C?总之我是不会的。 今天又下定决心来看这题,发现和前几天做的动态规划很像,转移方程如下 初状态是flag[0][1][1][1][1][1]
阅读全文
摘要:蛤省真的坑,这里跟风学长婊一下。 然后就还算简单吧,一个拓扑排序的事。 记录每个点的入度和出度,写一个栈,把入度为0的放进去。然后开始循环,取出一个点,更新这个点所连点的ans和入度,如果入度也变成0了就把该所连点放进栈里,然后把那个点扔掉。 栈空的时候循环结束,这时所有点都被更新了(吧)。我们需要
阅读全文
摘要:这是一道二维树状数组模板题。 需要注意的可能只有这些xy有可能为零。那每次输入之后全部++,相当于全部向右下角移了一位。 那就直接给代码了呦。
阅读全文
摘要:开学啦!又开始了苦逼的生活,完全没有放假够啊。 还是来看题吧…… 一道正常的树上dp。 为什么是树呢?题目中提示的非常清楚了,n个节点n-1条边,每个点都有边,不是树还能是什么? 为什么是dp呢?假如我知道了子节点们的各种数据,那我可以在很短时间内计算出这个节点的数据,叶子节点的数据还巨好求。 怎么
阅读全文