搜索
_beginend
这个作者很懒,什么都没留下…
展开
-
LibreOJ #6043.「雅礼集训 2017 Day7」蛐蛐国的修墙方案 搜索
题意给一个长度为n的排列,要求构造一个长度为n的合法括号序,要求满足,构造一张n个点的图,当且仅当第i个位置是左括号时,点i向点p[i]连边,最后形成的图必须满足每个点的度数均为一。 n≤100n≤100n\le100分析我们在每一个i和p[i]之间连一条双向变,不难发现一条边的两个端点必然恰好有一个是左括号。 是不是看上去就像一道noip普及组naive千里送温暖做好事不求回...原创 2018-06-24 22:07:59 · 261 阅读 · 0 评论 -
bzoj 3033: 太鼓达人 欧拉图+dfs
题意 鼓的主要元件是M个围成一圈的传感器。每个传感器都有开和关两种工作状态,分别用1和0表示。显然,从不同的位置出发沿顺时针方向连续检查K个传感器可以得到M个长度为K的01串。Vani知道这M个01串应该是互不相同的。而且鼓的设计很精密,M会取到可能的最大值。现在Vani已经了解到了K的值,他希望你求出M的值,并给出字典序最小的传感器排布方案。 K<=11分析因为这是一个连通图且每个点入度等于出原创 2017-10-09 20:14:12 · 650 阅读 · 0 评论 -
Codeforces 875C National Property 乱搞
题意给出n个字符串,字符集为[1,m]中的数字。其中数字分大小写,一开始的数字均为小写,且规定大写必然小于小写。设小写数字x的大写为x’,那么有2<3,2′<3′,3′<22<3,2'<3',3'<2。现在你可以选择把某些小写字母变成大写,注意是全部都要变,使得给定的字符串按输入顺序排列后满足字典序递增。 n,m,单词长度的和<=100000分析比赛的时候大概也想到了正解,但最后fst了。 这题原创 2017-10-17 19:50:55 · 643 阅读 · 0 评论 -
bzoj 4032: [HEOI2015]最短不公共子串 后缀自动机+序列自动机+bfs+记忆化搜索
题意在虐各种最长公共子串、子序列的题虐的不耐烦了之后,你决定反其道而行之。 一个串的“子串”指的是它的连续的一段,例如bcd是abcdef的子串,但bde不是。 一个串的“子序列”指的是它的可以不连续的一段,例如bde是abcdef的子串,但bdd不是。 下面,给两个小写字母串A,B,请你计算: (1) A的一个最短的子串,它不是B的子串 (2) A的一个最短的子串,它不是B的子序列 (原创 2017-09-16 10:24:19 · 433 阅读 · 0 评论 -
bzoj 3569: DZY Loves Chinese II dfs树+线性基【神题】
题意给出一个无向图,每次询问删掉给定的k条边后图是否仍然连通。强制在线。 n<=100000,m<=500000,q<=50000,k<=15分析记得之前有位大爷告诉我说无向图的题有时候用dfs树会有奇效。这题的题解十分的巧妙,我们可以先把原图的一棵dfs树求出来,然后对于每条非树边,给其赋一个随机权值;对于每条树边,其权值为所有包含它的非树边的权值异或和。那么图不连通,当且仅当一条树边和所有包含原创 2017-09-04 21:35:31 · 483 阅读 · 0 评论 -
bzoj 1138: [POI2009]Baj 最短回文路 bfs
题意N个点用M条有向边连接,每条边标有一个小写字母。 对于一个长度为D的顶点序列,回答每对相邻顶点Si到Si+1的最短回文路径。 如果没有,输出-1。 如果有,输出最短长度以及这个字符串。 n<=400,m<=60000,D<=100分析一开始设f[i,j]表示i到j的最短回文路径,然后果断T掉。 正解是设f[i,j]表示i到j的最短回文路径,g[i,j,c]表示i到j除了最后一条边外是回文路径原创 2017-08-22 21:11:12 · 465 阅读 · 0 评论 -
bzoj 3990: [SDOI2015]排序 dfs
题意小A有一个1-2^N的排列A[1..2^N],他希望将A数组从小到大排序,小A可以执行的操作有N种,每种操作最多可以执行一次,对于所有的i(1<=i<=N),第i中操作为将序列从左到右划分为2^{N-i+1}段,每段恰好包括2^{i-1}个数,然后整体交换其中两段.小A想知道可以将数组A从小到大排序的不同的操作序列有多少个,小A认为两个操作序列不同,当且仅当操作个数不同,或者至少一个操作不同(种原创 2017-07-24 16:22:40 · 253 阅读 · 0 评论 -
bzoj 4401: 块的计数 dfs
题意小Y最近从同学那里听说了一个十分牛B的高级数据结构——块状树。听说这种数据结构能在sqrt(N)的时间内维护树上的各种信息,十分的高效。当然,无聊的小Y对这种事情毫无兴趣,只是对把树分块这个操作感到十分好奇。他想,假如能把一棵树分成几块,使得每个块中的点数都相同该有多优美啊!小Y很想知道,能有几种分割方法使得一棵树变得优美。小Y每次会画出一棵树,但由于手速太快,有时候小Y画出来的树会异常地庞大,原创 2017-10-19 09:26:57 · 347 阅读 · 0 评论 -
bzoj 3810: [Coci2015]Stanovi 动态规划
题意 n,m<=300分析这题有个结论就是如果一定要靠墙的话,那么一个矩形一定会被横着或竖着切成两个。 这个结论看上去感觉不是那么的显然,我也不会严格的证明。反正能过。。。 那么就可以大力dp了。设f[x,y,a,b,c,d]表示长宽以及上下左右是否为边界即可。 需要卡常。代码#include<iostream>#include<cstdio>#include<cstdlib>#inc原创 2017-10-13 21:51:20 · 376 阅读 · 0 评论 -
Codechef LEBOXES 折半搜索+dp
题意有n个盒子,第iii个盒子有pipip_i的概率开出viviv_i元,其余1−pi1−pi1-p_i的概率开出一颗钻石。有m件物品,购买第iii件物品需要花费cicic_i元和didid_i颗钻石,且每件物品只能购买一次。假设每次开完盒子后会选择最优的方案去购买数量尽量多的物品,问期望购买多少件物品。 2≤n≤30,1≤m≤30,1≤vi,cj≤107,0≤dj≤302≤n≤30,1≤m...原创 2018-04-23 16:21:56 · 285 阅读 · 0 评论 -
uoj #181. 【UR #12】密码锁 搜索
题意给出一张nnn个点的完全图,现在要给这个完全图的每一条边随机定向成一个有向图。对于一条边 (i,j)(i<j)(i,j)(i<j)(i,j)(iiii到jjj的概率是numi,j/10000numi,j/10000num_{i,j}/10000,numi,jnumi,jnum_{i,j} 指这条边旁边的数字,否则就是jjj到iii在随机定向后,设这张有向图的强连通分量数目为xx...原创 2018-04-11 08:06:13 · 338 阅读 · 1 评论 -
Codeforces 864F Cities Excursions dfs
题意给一个n个点m条边的有向图,q次询问,每次询问x到y字典序最小的路径上的第k个点,若字典序最小的路径无限长或不能到达则输出-1。 n,m<=3000,q<=4∗105n,m<=3000,q<=4∗105n,m...原创 2018-03-14 16:43:26 · 354 阅读 · 1 评论 -
bzoj 3206: [Apio2013]道路费用 dfs+最小生成树+并查集
题意有一个n个点m条边的无向图,边都有权值,每个点上有p[i]个人。现在又要新加入k条边,要求给这k条边赋上一个权值,然后在原图中选择任意一个最小生成树,求当所有人都要走到节点1时,k条边中每条边的权值乘上经过该边的人数的最大值。 n<=100000,m<=300000,k<=20分析一开始的想法是,2^k枚举每条边选或不选,然后强制选那些被选定的边。对于原来最...原创 2018-03-06 16:57:31 · 319 阅读 · 0 评论 -
Codeforces 718E Matvey's Birthday bfs
题意给一个长度为n的字符串s,字符集大小为m。 再建立一张n个点的图,其中串中第i个字符就对应图中第i个点。 对这张图连这样两种边: 若对于i,j,满足|i-j|<=1,在点i和点j之间连双向边。 若对于i,j,满足s[i]=s[j],在点i和点j之间连双向边。 定义dis[i,j]表示点i和点j之间的最短路长度。 定义图的直径为max(dis[i,j]),求该图的直径和有多...原创 2018-03-06 11:13:53 · 397 阅读 · 0 评论 -
51nod 1446 限制价值树 矩阵树定理+折半搜索+容斥
题意有N个点(N=0那么这个点为定义为good。现在给这N个点间连上N-1条边,使它们构成一个生成树,定义树中的点为great点当且仅当这个点本身是good点且与其相邻的点中至少有另一个good点。树的价值等于树中所有great点的价值和。定义限制价值树是指价值不大于maxVal的树,问对给定的val[]与maxVal,一共有多少种不同的限制价格树?由于答案太大,可取 modulo 1,0原创 2018-01-16 21:53:44 · 334 阅读 · 0 评论 -
bzoj 4722: 由乃 线段树+倍增+搜索
题意给一个长为n的序列a,每个数在0到v - 1之间,有m次操作。 操作1:每次询问一个区间中是否可以选出两个下标的集合X,Y,满足: 1.X和Y没有交集 2.设集合X中有一个元素是i,则其对集合X的贡献是a[i] + 1,要求集合X的元素的总贡献和集合Y的元素的总贡献相等如果可以选出这两个集合,输出 Yuno否则输出 Yuki 操作2:修改一个区间l,r之间的数,使得所有l <= i <=原创 2017-08-09 21:30:44 · 578 阅读 · 1 评论 -
bzoj 5097: 实时导航 bfs+bitset
题意告别了随机的国度,这回小Q来到了一个陌生的国度。这个国度由n座城市和若干条单向道路构成,城市依次编号为1到n。这个国度的路况变化非常频繁,而充满好奇的小Q想在这里进行许多次旅行,在每次出发之前,他会使用导航系统计算两点间最少需要多少时间。请写一个程序,帮助小Q计算两点间的最短路,你需要支持以下两种操作: C x y z 从x点出发到y结束的单向道路通过时间变为了z(1<=z<=4),z=0表示原创 2017-12-20 20:04:14 · 361 阅读 · 0 评论 -
bzoj 2115: [Wc2011] Xor 线性基+dfs树
题意给出一个带权无向图,求一条1到n的路径使得其路径上边权的异或和最大。 n<=50000,m<=100000分析把dfs树建出来后,所有边要么是树边要么是非树边。显然我们可以通过走一条反祖边来使我们的答案异或上该返祖边所在环的权值。那么就把所有环的权值扔到线性基里面,最后取个最大的即可。代码#include<iostream>#include<cstdio>#include<cstdlib>原创 2017-10-24 08:20:44 · 264 阅读 · 0 评论 -
bzoj 4878: [Lydsy2017年5月月赛]挑战NP-Hard dfs
题意给出一个无向图,要你解决两个问题中的一个:给每个点染色使得每条边两个端点的颜色不同;找出一条长度为k的简单路。 n<=1000,m<=10000,多组数据分析这题在apio讲课的时候讲过。。。 首先找出原图的一棵dfs树,很显然dfs树上只有返租边没有横插边。 那么如果dfs树的深度大于k的话显然可以找到一条长度等于k的简单路,否则的话把每个点的颜色设为其深度即可。代码#include<i原创 2017-05-17 18:16:24 · 541 阅读 · 0 评论 -
bzoj 4800: [Ceoi2015]Ice Hockey World Championship meet in the middle
题意有n个物品,m块钱,给定每个物品的价格,求买物品的方案数。 n<=40,m<=10^18分析傻逼题。代码#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>using namespace std;typedef long long LL;const int N=4原创 2017-04-25 20:22:42 · 545 阅读 · 0 评论 -
bzoj 3522: [Poi2014]Hotel dfs
题意有一个树形结构的宾馆,n个房间,n-1条无向边,每条边的长度相同,任意两个房间可以相互到达。吉丽要给他的三个妹子各开(一个)房(间)。三个妹子住的房间要互不相同(否则要打起来了),为了让吉丽满意,你需要让三个房间两两距离相同。 有多少种方案能让吉丽满意? n≤5000分析一开始yy了一种dfs两边的方法,每个点要开一个大小为n的桶,结果发现被卡空间了。。。 其实可以对每个点为根的情况做一次原创 2017-04-28 12:09:17 · 440 阅读 · 0 评论 -
bzoj 3417: Poi2013 Tales of seafaring bfs
题意一个n点m边无向图,边权均为1,有k个询问,每次询问给出(s,t,d),要求回答是否存在一条从s到t的路径,长度为d,路径不必是简单路(可以自交)。 n,m<=5000,k<=1000000,d<=1000000000分析考虑到若从s可以走d步到达t,则s必然可以走t+2步到达t,所以只要从每个点开始看该点能否通过奇数步或偶数步到达某个点即可。代码#include<iostream>#inc原创 2016-12-14 19:30:32 · 680 阅读 · 0 评论 -
bzoj 4325: NOIP2015 斗地主 dfs
题目传送门分析毫无花哨的dfs,分n多种情况考虑,貌似加了最优化剪枝。 这是在比赛场上码的程序,很开心啊当场就AC了,用的是pascal,不怎么优美不过也就这个样了。 据说正解是dp还有dancing link之类的神奇的东东,表示不太懂。 貌似在ccf上测出来只有95分,不过也够我吹一年了。不懂得就自己看程序吧。var t,n,ans,i,l,x,y:longint; a:array原创 2016-10-24 19:36:50 · 428 阅读 · 0 评论 -
bzoj 1975: [Sdoi2010]魔法猪学院 k短路+A*
题意给出n个点m条有向边,求最多有多少条1到n的不同路径使得每条路劲的权值加起来不超过c。 n<=5000,m<=200000分析很显然题目是要我们找一个最大的k满足1到n前k短的路径和不超过c。 那么我们就要来求k短路。k短路用spfa来实现,每次在优先队列里面取一个估价函数f(i)=g(i)+h(i)的点出来去更新其他的点,若一个点第k次出队则这次必然是第k短路。g(i)表示的是1到i当前的原创 2016-11-14 14:15:57 · 382 阅读 · 0 评论