思路题
Icefox_zhx
这个作者很懒,什么都没留下…
展开
-
bzoj 2079 [Poi2010]Guilds(思路题)
对于每个连通块可以把它先做成一棵生成树,然后分层染色,就可以满足题意。唯一不满足的情况就是存在大小为1的连通块。也就是存在没有边相连的孤点。原创 2017-09-05 14:26:32 · 292 阅读 · 0 评论 -
CF348C Subset Sums(分块)
给定一个n个数的序列a,m个下标集合,记Sk={Sk,i}S_k=\{S_{k,i}\}。两种操作: 1. ? k 求集合k的和,即∑i=1|Sk|aSk,i\sum\limits_{i=1}^{|S_k|}a_{S_{k,i}} 2. + k w 给集合k的所有下标代表的数加w。 3. 记n=∑i=1m|Si|n=\sum\limits_{i=1}^{m}|S_i| 我们把集合大小大于n√原创 2018-03-02 09:41:35 · 388 阅读 · 0 评论 -
CF103D Time to Raid Cowavans(分块)
对于b>n√\sqrt n的,暴力跳即可。其他的可以O(n)先类似dp的求出sum[i],表示以i为a的答案,然后O(1)回答询问。于是我们先把所有询问按b排序即可。复杂度O(nn√)O(n\sqrt n)原创 2018-03-02 10:32:32 · 424 阅读 · 0 评论 -
CF475D CGCDSSQ(数学+map)
我们记xi=gcd(xi−1,a[i])x_i=gcd(x_{i-1},a[i]),则x中不同的数值最多有1+loga[i]1+log a[i]个。因此我们就可以直接暴力统计答案。用map即可。从n到1枚举左端点,更新答案。原创 2018-03-02 16:39:02 · 289 阅读 · 0 评论 -
CF276D Little Girl and Maximum XOR(思路题)
不知道该说些什么。。。原创 2018-03-11 15:15:30 · 388 阅读 · 0 评论 -
bzoj5187 [Usaco2018 Jan]Sprinklers(数学+计数+前缀和)
这题真是神orz 首先我们发现原问题可以转化为:问你有多少对点对(x1,y1),(x2,y2)满足x1<x2,y1<y2x1<x2,y1<y2x1x1<x2,y1<y2,lowx2<=y2<=topx2,lowx1<=y1<=topx1x1<x2,y1<y2,lowx2<=y2<=topx2,lowx1&原创 2018-03-13 23:00:18 · 689 阅读 · 0 评论 -
bzoj5277 [Usaco2018 Open]Out of Sorts(智商题)
首先我们注意到,对一个序列按分割点分开以后分别冒泡其实就相当于对整个序列进行冒泡。每一个元素都会对复杂度贡献1,除非一个元素两边的分割点都出现了。因此我们可以完全忽略快排的递归过程。只需考虑每个元素在经历几趟冒泡排序之后两边的分割点都出现了。考虑一个分割点,不妨就是在i,i+1之间的这个分割点,他在几趟冒泡排序之后会出现呢?出现了这个分割点,说明前i小的元素都已经在前i个了,我们记前i小的元素一开始原创 2018-04-20 23:16:29 · 888 阅读 · 0 评论 -
bzoj5278 [Usaco2018 Open]Out of Sorts(智商题+BIT)
双向冒泡排序,问你需要跑几趟。 定义MiM_i表示前i个数中排序后不在前i个的数的个数。 则MiM_i就是答案的一个下界,因此所有MiM_i的最大值就是答案。 可以用一个BIT来维护。 为啥呢?考虑i,i+1之间的分割点,你每一趟双向冒泡,实际上是使得一个在分割点左边的本应在右边的跑到了右边,同时让一个在分割点右边的本应在左边的跑到了左边。也就是说每一趟最多使得MiM_i-1,因此需要MiM原创 2018-04-21 13:50:10 · 871 阅读 · 0 评论 -
CF963B Destruction of a Tree(树+构造)
给定一棵树,每次删掉一个偶数度数的点及他的边,问能否把这棵树全删掉。 可以证明偶数个点的树一定不行。(每次一定是删掉偶数条边,而偶数个点的树有奇数条边。) 奇数个点的树一定可以。为啥呢,你只要会证就好啦。 证明具体参见Visjiao 博客:portal#include &lt;bits/stdc++.h&gt;using namespace std;#define ll long l...原创 2018-05-23 10:23:40 · 524 阅读 · 0 评论 -
bzoj2456 mode(思路题)
好神?假设众数a出现了x次,则要想now最后不是a,至少需要x个其他的数,则一共至少2x个数,而x>n/2。不成立。原创 2018-01-11 16:29:10 · 366 阅读 · 0 评论 -
AtCoder Regular Contest 068
AtCoder Regular Contest 068 题目链接: https://arc068.contest.atcoder.jp/ C.X: Yet Another Die Game(结论题) D.Card Eater(结论题) E.Snuke Line(思路+主席树) 我们考虑怎样的区间内不含k的倍数,显然就是0,k,2k,3k,…m之间的区间,即[1,k-1],[k+1,2k-原创 2017-12-20 09:59:58 · 438 阅读 · 1 评论 -
AtCoder Grand Contest 008
AtCoder Grand Contest 008 题目链接: https://agc008.contest.atcoder.jp/ A.Simple Calculator(模拟) B.Contiguous Repainting(贪心+枚举) C.Tetromino Tiling(奇偶性)D.K-th K (贪心+构造)E.Next or Nextnext (组合数学+dp+图论+置换)原创 2017-11-22 16:59:13 · 1420 阅读 · 1 评论 -
CF853B Jury Meeting(dp)
把航班按出发时间从小到大排序。从前往后扫,求出dp[i]表示i时刻全都已出发的最小花费(i时刻全部已出发,也就是说可选航班是一个时间均小于i的前缀,在这些航班中选择n个人的最小花费,具体处理见代码)。类似的,从后往前扫,求出dp1[i]表示i时刻开始走,全部返回的最小花费(也就是说可选航班是一个时间均大于i的后缀)。然后枚举i时刻全部出发,则i+k+1时刻开始返回,更新答案。原创 2017-09-06 22:37:53 · 394 阅读 · 0 评论 -
poj1062 [ZJOI2002]昂贵的聘礼(spfa+枚举)
思路见神犇http://gisyhy.blog.163.com/blog/static/12939034320099883715624/ 这题比较麻烦的地方在于等级限制,让我们很不好下手,突破口:1一定在最短路上,所以区间最大为[lev[1]-m,lev[1]+m],但是这样还不满足每两个点的等级之差均在m以内,因此我们枚举[lev[1]-m,lev[1] ],[lev[1]-m+1,lev[1]原创 2017-09-07 13:08:49 · 280 阅读 · 0 评论 -
CF384E Propagating tree(线段树+思路题)
首先把子树通过dfn化为连续的区间。然后看操作: 1.对x加val,对他的儿子们-val,对他的儿子的儿子们+val,直到叶子。 2.求一个位置的数是多少。 第一个操作比较难搞,我们发现它是隔层做的,也就是说把每个点按照深度分成两组,做x点时,他的子树中与他同组的都+val,不同组的都-val。我们可以维护两棵线段树,分别维护每组加了多少,最后问pos是多少时,他的答案就是a[pos]+同组一原创 2017-09-24 22:03:50 · 266 阅读 · 0 评论 -
CF343D Water Tree(线段树+dfs序+思路)
首先对于操作一,我们按照老套路把树上结点用dfs序变成序列,每个结点的子树均为in[x]~out[x]连续的一段,段修改即可。对于操作2,往上找父亲肯定不好实现,怎么办呢?我们只改这一个点,把他改为0,然后在询问x点的时候,我们查询x的子树中是否有0,有的话他一定也是0(他一定是那个点的父亲)。这样就很巧妙的把一个点会影响他的所有祖先转化成了单点修改,查询子树。需要注意的是,这样做的话,做操作1时要原创 2017-10-07 22:39:49 · 359 阅读 · 0 评论 -
AtCoder Grand Contest 010
%%%leoly %%%Visjiao %%%Elijahqi 题解可以去看VisJiao大佬的:传送门 AtCoder Grand Contest 010 A.Addition(数学,奇偶性) B.Boxes (数学) C.Cleaning(树+结论) D.Decrementing(数论+gcd+奇偶性) 都是思维题,这我哪会啊。。。Visjiao大佬的题解写的很详细orz原创 2017-10-26 21:53:06 · 475 阅读 · 0 评论 -
agc012E Camel and Oases(状压dp+思路题)
这题神啊。状压dp你敢信?思维难度爆表还有一堆细节要注意???orz Visjiao 原题链接:http://agc012.contest.atcoder.jp/tasks/agc012_e 大神题解:http://blog.csdn.net/vicjiao/article/details/78405844tips:dp数组大小要开到2*V,因为最多可以飞log2v+1log2v+1次,所以是2原创 2017-11-09 14:38:05 · 620 阅读 · 0 评论 -
NOIP模拟11.1
Poetize9 A.communicate (部分分搞了90,仙人掌我哪会啊。。) B.queue 暴力(被我暴力水过了???) C.signal 位运算+瞎搞?(ll加错地方,爆0滚粗(还好有暴力40分)原创 2017-11-01 14:37:08 · 541 阅读 · 0 评论 -
bzoj4719 [Noip2016]天天爱跑步(树+lca+树上差分+思路题)
进入bzoj法眼的noip(lus)题hh。题解太麻烦啦。。。不写啦。。。就体会一下思想:要是对于每条路径操作,看他会影响哪些点的贡献,铁铁的会t。所以考虑怎样的一条路径会对一个点产生贡献,先讨论简化版的链的情况,发现要讨论左右。结合另外两个部分分,感觉就是把路径分成两半,x->lca,lca->y。分别讨论,然后进行神奇的树上差分,用vector来维护删除操作。题解去观摩这里吧原创 2017-11-01 21:47:38 · 452 阅读 · 0 评论 -
bzoj5285 [Hnoi2018]寻宝游戏(思路题+Hash)
这题真是神orz 我们每一位单独考虑,注意到|0和&1对最终的结果是没有影响的。因此最终的结果只在于最后一个是|1,&0的哪一个。 对于第i位,我们搞出一个b[i],如果第j个数第i位为1,那么b[i]+=bin[j]。 这样我们就得到了一个左边为低位的二进制数。 我们考虑把操作序列也变成一个二进制数,如果第i个数前面的操作为|,那么第i位就是0,否则就是1,记这个二进制数...原创 2018-06-07 17:17:38 · 442 阅读 · 0 评论