07 2014 档案
摘要:题目简洁明了,给出矩阵,求前k次方和。不知道这种方法是叫做二分幂还是倍增法,如果有知道的,请告诉我一下。具体思想是这样的,A^1+A^2+A^3+......A^n=(E+A^(n/2))*(A^1+A^2+.....A^(n/2)),如果n为奇数,那么我们只要加上多余的哪一项就可以满足条件了,于是...
阅读全文
摘要:有意思的题目,给出两个自动机,判断这个两个自动机是否是等价的?两个自动机是等价的,那么他们可接受的字符串集合一定是完全一样的。于是我们可以从(0,0)开始bfs,每次看看在两个自动机上走到的两个点儿子指针以及终态信息是否完全一致,是的话就把所有儿子指针都拉到队列中进行后面的判断。由于我们对于每一个二...
阅读全文
摘要:给出5*6的位置,每个位置有一个灯,一开始每个灯有各自的状态,你可以选定一些位置使得所有与这个位置相邻以及位置本身的灯都取反。输出合法方案。本来是找高斯消元找到这个题目的,可是。。。。我发现可以直接状态压缩dfs,于是就水过了,高斯消元还是不会。怒坑。枚举是这样的,当前6位数表示这一行每个灯的状态,...
阅读全文
摘要:给一个无向图,如果第i个点连接第j条边,那么mat[i][j]=1,否则mat[i][j]=0。求mat的转置乘以本身得到的矩阵每个位置的和是多少?理解矩阵的意义就比较好做了。mat[i][j]表示i点可以连接到j边,转置后相乘的意义是第i边和第j边有公共点。这样,我们只需要统计每个点的度数,这样我...
阅读全文
摘要:给出一些数组a[i],每次询问为li,ri,定义f[li]=a[li],f[li+1]=a[li+1],对于其他不超过ri的位置,f[x]=f[x-1]+a[x]*f[x-2] 。题目有着浓浓的矩阵气息。f[x]=f[x-1]+a[x]*f[x-2]f[x-1]=f[x-1]+0根据上面两个我们就可...
阅读全文
摘要:给一棵树,每次每次询问一个点是否是另一个点的祖先?首先,题目的读入就有点坑爹,注意,每个节点的值是说明它下面有多少个儿子节点,直接对于每个下标保存一个值即可。对于查询是否是祖先,我们可以对于每一个节点打上两个dfs标记,如果一个点是另一个点的祖先,那么它的两个标记一定在祖先的范围之内。还要注意,由于...
阅读全文
摘要:给出n个循环位置,每个位置有一定数量的盒子,每次操作可以使一个盒子转移到相邻位置,问最少需要转移多少次使得所有位置上的盒子的数量不会超过1个。简单题。对于每个位置,加边(s,i,a[i],0),(i,t,1,0)。对于相邻的位置加边(i,i+1,inf,1),(i,i-1,inf,1) 。显然最后我...
阅读全文
摘要:给你若干个区间,每个区间有一个权值,你可以选出某些区间,使得在保证没有任何一段的覆盖次数超过k的前提下,总的权值最大。这个建模真的十分神奇,赞一个。对于给出的每一个区间,离散化,最终我们可以知道所有区间的端点的个数不会超过2n,然后我们加边,(i,i+1,k,0),对于每个区间我们加边(li,ri,...
阅读全文
摘要:给出一些词根,问你有多少种长度为L的串包含至少一个词根。去年就在敲这个题了,今年才敲出来,还是内牛满面之中。。。要求包含至少一个的情况,需要求出所有的情况,减去一个都没有的情况就可以了。对于给出的词根,上自动机。然后我们根据tire图可以得出关系状态转移的矩阵。显然就是矩阵求和了,通过二分幂解决即可...
阅读全文
摘要:题意为给一个矩形数字阵,给出一些限制条件,包括每行和每列的和,还有一些位置的数值范围,求出满足情况的一个。首先建图,源点->行和->列和->汇点,显然,行和列之间的边为那个数字的大小,只要我们能够找到一个满足大小条件的,且使的两边的和满流的流量方案就可以了。由于存在下界(上界其实就是边的容量),根据...
阅读全文
摘要:单源点汇点无向图,要阻隔某个点的流量,必须在一个点上消耗一定的价值,问你能否在消耗价值不超过k的前提下,阻隔源点到汇点的流量。直接对于有权值的点拆点,拆后边容量即为点权。其余的点的容量无穷,最大流即可。召唤代码君:#include #include #include #define maxn 555...
阅读全文
摘要:一个单源多汇的有向图,求增大那些边的容量可以使得网络的最大流增加。很简单,直接跑最大流,保留残余网络,然后枚举所有余量为0的边,使其容量增加一个1,看看是否出现新的增广路即可。召唤代码君:#include #include #include #include #define maxn 555#def...
阅读全文
摘要:一个无向图,问你删除多少点后,可以隔断起点到终点的所有路径?输出字典序最小的删点方案。求最小点割,先拆点,容量为1,普通边容量无穷,最大流即为应删点数。需要求出字典序最小的方案,可以从小到大枚举所有的点,如果当前枚举的点是割点,那么进行标记,同时后面的枚举也不再经过这个点。召唤代码君:#includ...
阅读全文
摘要:给一个有向网络,求其1,n两点的最大流量是否不小于C,如果小于,是否可以通过修改一条边的容量使得最大流量不小于C?首先对于给定的网络,我们可以先跑一遍最大流,然后先看流量是否大于C。然后保存跑完第一次最大流后的残余网络容量情况,然后接下来对于每条割,将分别其容量加C-maxflow,看看能否得到满足...
阅读全文
摘要:给一个数组,求区间[l,r]中第k大的数。今天被各种数据结构虐爆了,自己还是需要学习一下函数式线段树的,这个东西好像还挺常用。函数式线段树的思想是这样的,对于每个时间状态,我们都建立一颗线段树,查询两个状态在某个区间的差的话,我们只要找到两个状态分别对应的点相减即可。由于每次我使用线段树更新的时候,...
阅读全文
摘要:给一个无向图,求出两个值,所有点到所有其他点的最短距离和,任意删除一条边后的这个值。数据规模是100点1000边。白书例题,不多说了直接对于每个点求出最短路树,对于每条边,如果它不是最短路树上的边,那么我们不需要对它进行最短路计算了,由于点数只有100,那么树上的边只有n-1,所以我们对于以每个点为...
阅读全文
摘要:无向图。对于两个相连的点,如果A到终点的最短路径大于B到终点的最短路径,那么A可以往B走,求最终从起点到终点有多少种走法?首先我们可以直接预处理所有点到终点的最短路径。然后分别判断所有的边两点是否满足d[U[i]]>d[V[i]],然后把把满足条件的加入到一个新图中即可。由于新图是一个有向无环图,那...
阅读全文
摘要:给一个无向图,有的边是特殊边,最多可以取一条特殊边,求最短路,并且输出路径。这样考虑,加入所有非特殊边,求出每个点到起点和终点的最短路。然后加入特殊边的时候,如果取当前这条特殊边,那么答案会是两点预处理路径长度加上该边长。直接保存最小答案即可。不过注意输出的格式还有一些其他的问题,还有加特殊边的时候...
阅读全文
摘要:有n个宇航员,根据年龄限制,所有宇航员只能从事A或B中的一种任务,所有人都可以从事C的任务。有的宇航员之间相互讨厌,不能分在一组,求出一种满足条件的分配方案。2sat。mark[]中i+i和i+i+1分别表示i从事C工作或者他的特有工作。对于仇恨关系,我们可以知道U和V两个人不能同时从事C工作。于是...
阅读全文
摘要:给一个无向图,外加一些特殊的连接原点的无向边。在不改变原点与所有点的最短路的情况下,最多可以删除多少条特殊边?首先我们把所有的边夹杂在一起。spfa跑出与所有点的最短路。接下来我们通过一次bfs来判断哪些特殊的边是可以删除的。这里面的原理跟迪杰斯特拉算法差不多。首先把原点加入队列,所有的特殊边按照长...
阅读全文
摘要:白书上的例题。每种航班可以选择两种时间降落,如果想任意航班降落时间差的最小值最大,应该如何安排?二分时间,如果两个时间只差小于当前枚举的时间,说明这条边不可选,可以根据2sat的方法构图。然后判断安排方案是否合法即可。召唤代码君:#include #include #include #define ...
阅读全文
摘要:判断能否从一个点同时找出两条不相交的路径到另外两个点。保证路径不相交,那么需要拆点。然后?好像就没什么了,直接最大流即可。不过,,,不需要求出所有的最大流,只要跑两次EK看看能否增广两次就行了。召唤代码君:#include #include #include #include #define max...
阅读全文
摘要:给一个图,某些点需要单独以某一种颜色的线连接到1点,问如何安排能够使得整个图颜色最多的一条路颜色最少。显然,二分枚举然后加以颜色其实就是流量了,相当于对每条边限定一个当前二分的流量值,判断能否满流即可。召唤代码君:#include #include #include #define maxn 555...
阅读全文
摘要:好题,有一些人在河的一边,想通过河里的某些点跳到对岸去。每个点最多只能承受一定数量的人,每人跳跃一次需要消耗一个时间。求所有人都过河的最短时间。看网上说是用了什么动态流的神奇东东。其实就是最大流吧,不过是一个很有意思的模型。每递增一个时间,所有的点增加一层,因为有的人可以站在上一个点不走动,最终每个...
阅读全文
摘要:NBA打比赛。所有的比赛被分为多个团队。有的比赛是团内的,有的是与团外的队伍打的。给出团内每个队伍已得分,以及总共有多少场比赛,还有团内所有队伍之间有多少场比赛?问1队是否可能是分数最高的一个队伍。(题目没说是否唯一最高,枚举题意得知不是唯一)又是一个竞赛图的最大流。团内的比赛,如果有一个队伍是1队...
阅读全文
摘要:给你三种正多面体,正四面体,正六面体,正八面体。求从某一种正多面体中的某一点走到另一个点,且步数不超过k(1018)的方案数。首先说明一下我交题的时候遇到的问题,起点和终点为同一点的时候,算不算走了零步到达了?题目没有算,如果考虑了交上去会wa。题目解法是矩阵。一开始通过观察这三种多面体,得出初始矩...
阅读全文
摘要:题意是给出某个地鼠的出现位置以及出现时间,人有一个移动速度,求此人最多可以打多少个地鼠?我们根据时间把所有的地鼠排序,如果两个地鼠之间的距离不超过时间只差与速度的乘积,那说明打完上一只地鼠还可以打到这一只地鼠。直接f[i]表示打完第i只地鼠且此时在i地鼠位置的期望,DP即可。召唤代码君:/** th...
阅读全文
摘要:无聊的时候看到上一次acdream群赛的一个题目,中间居然是有alice和bob的博弈题目,于是就去做了。给n,m,两人轮流操作,每次操作可以使n+1,或者m+1,谁操作后满足nm>=A,那么此人lose。简单的博弈知识即可解决问题,如果当前状态的所有后继状态都是必胜态,那么该状态就是必败态;如果当...
阅读全文
摘要:给一个图,求从某个点到另一个点的最短路有多少条?所有的路都不共边。首先从终点开始Spfa标记最短距离,然后建图。建图的时候,如果满足两点之间的最短路只差为两点之间的边长,那么在网络流的模型中连接一条边。最终也只需要跑最大流即可。注意此题没有要求不能经过同一个点,所有不需要拆点,由于我们在网络流的模型...
阅读全文
摘要:有一些饮料和食物,每种一个,每个客人喜欢一些饮料和一些食物,每个客人可以选择一种饮料和一种食物,问最多能够同时满足多少个客人同时拥有饮料和食物。这样的,源点连接饮料,汇点连接食物,中间人分别连接饮料和食物。然后这样直接跑最大流。。。。。是错的。因为没有保证每个人只拿一种饮料和一种食物。还需要对每个人...
阅读全文
摘要:这题目,,,真是。。。诶。坑了好久。给一个有向图。U->V表示U可以打败V并得一分。如果一个人的得分最高,或者他打败所有比自己得分高的人,那么此人就是king。现在给出每个人的得分,求最多可能有多少个king同时存在。可以证明,如果有k个人是king,那么至少有一种分配方案使得这k个king都是分数...
阅读全文
摘要:有F个地方,每个地方有一定数量的牛,能够容纳一定数量的牛,某些地方之间有边,表示走两点之间需要消耗的时间。现在求使得所有的牛都被容纳所需要的最少的时间。由于时间是一个不确定的因素,我们需要二分。假设当前二分的时间为t,那么从某一点出发距离不要超过t的点都是可以连边的,于是最后只需要跑最大流验证是否满...
阅读全文
摘要:给一个联通图,有的是单向边,有的是双向边,问是否存在欧拉回路。乍一看毫无思路,可以这样来搞,对于每条无向边,我们随便指定一个方向,看看是否能够做到所有点的度数之和为偶数。接下来,对于我们指定的边,假设指定的是U->V,那么我们也同时在网络中设置一条同样的边,使得流量为1,最后如果某点的出入度只差不为...
阅读全文
摘要:一共有n个猪圈,m个客人,一开始每个猪圈都有一定数量的猪猪。每个客人会打开一些猪圈,带走最多为某一个数量的猪猪,剩下的猪猪可以任意分配在这些开了的猪圈里面,然后重新关上。问所有的客人最多可以带走多少猪猪?网络流建模。其实每个猪圈如果被人开过了,那么下次再有人来访问这个猪圈的时候,相当于从上一个人那里...
阅读全文
摘要:如果一个数字仅由6或者8构成,那么这个数字是幸运数字;如果一个数字是幸运数字的倍数,那么就是近似的幸运数。给定区间,求有多少个近似幸运数字位于这个区间之内。典型的容斥原理。首先,弄出所有的幸运数字,把那些本来就是另外幸运数字的倍数的幸运数字去掉(因为它肯定可以通过前面小的数字统计到)f[n]=sig...
阅读全文
摘要:极大团。即求一个最大点集,使得点集中的任意两个点u,v至少存在u->v,或者v->u的路径。是这样做的,求出所有的联通分量,然后整个图就变成了无环图,把原来若干个点缩点,点权为分量的点数。这样相当于找一条权值最大的路径,因为无环了,所以这个可以通过先拓扑排序然后dp解决。这里重点说一下自己遇到的坑吧...
阅读全文
摘要:题意是告诉你有n个命题,m条递推关系,表示某个命题可以推出另外一个命题。现在问你至少在增加多少个递推关系可以保证所有命题两两互推。命题为点,关系为有向边,题目转化成为至少增加多少条有向边使得整个图强连通。首先对于有向图,求出所有的联通分量,并且将所有的联通分量缩成一个点,最终得出一个无环图。在新图里...
阅读全文
摘要:好题。给一个无向图,求最少染黑多少个点后,使得任意删除一个点,每一个点都有与至少一个黑点联通。一开始的确不知道做。看白书,对于一个联通分量,如果它有两个或以上的割点,那么这个分量中间的任何一个点都是不需要染色的。如果这个联通分量恰好有一个割点,那么这个分量需要对其中任何一个非割点染色,如果分量没有割...
阅读全文
摘要:圆桌骑士。有的骑士之间是相互憎恨的,不能连坐,需要安排奇数个骑士围着桌子坐着,大于3个,求哪些骑士不可能安排到座位。根据给定的关系,如果两个骑士之间没有憎恨关系,那么连边。最终就是求有多少个点无法位于奇圈之内。首先求所有联通分量,对于每个连通分量二分图染色,看看是否存在一个奇圈,如果有一个,那么这个...
阅读全文
摘要:求掷骰子n次,点数之和超过m的概率有多大?分数表示。两种方法:1、直接DP。用两个数组分别表示分子和分母,注意计算过程中时时约分。2、将(x1+x2+x3+x4+x5+x6)n多项式展开,把大于m的幂的系数累加,比上所有项系数的总和就是答案了。这个理解也很容易。召唤代码君:#include #inc...
阅读全文
摘要:给你一个无向图,求至少加入多少条边,使得整个图是双联通的。通过枚举题意,发现重边是不算的,直接去掉。首先把那些边是桥计算出来,把位于同一个连通分量里面的点缩成一个点(并查集),然后计算缩点后有多少个点的度数为1,只要处理这些点就好了。每次处理连接任意两个度数为1的点,增加一个联通分量,这样总共只要连...
阅读全文
摘要:此题不错。给你一些字字符,要求你用这些字符构成一个回文串,求字典序第k大的回文串。首先通过给定的字符,我们可以直接判断能否构成回文串(奇数的字符不超过一种),其次可以统计每个字符在回文串的左边应该出现多少次。然后从左到右判断每一位应该放那个字母,一边放置一遍更新即可。我仅判断奇数次的个数为奇偶就ac...
阅读全文
摘要:感觉这套比赛题目比较容易,没有以前做过的某次codechef那么凶残。题目还是很有意思的,最好的是有中文翻译。CSUB:签到题,直接从左往右扫一遍即可,维护前面出现过多少个1.#include #include #define maxn 100100using namespace std; char...
阅读全文
摘要:题目很好很有意思。告诉你n个序列中,任意一个连续子序列的和与0相比较的结果。构造一个满足条件的序列。对于从x->y这一段的和,如果大于0,那么sum[x]>sum[y-1],显然我们可以得到每一个sum的大小关系。由于这个满足条件的sum关系已经考虑了所有的源系列的大小关系,所以只要我们生成了一个满...
阅读全文
摘要:很简单,求欧拉回路。并且输出。只重点说一下要用栈来控制输出。为啥,如图:如果不用栈,那么1->2->3->1就回来了,接着又输出4->5,发现这根本连接不上去,所以如果用栈的话,就会保存一条完整的路径咯。因为是无向图,只要满足每个点的度数都是偶数的话就一定存在合法的欧拉回路了。召唤代码君:#incl...
阅读全文
摘要:这题。。。。有点奇葩,但是不难。在矩形方阵里,某人可以往前走或者左拐右拐。都需要消耗一个单位时间。问某人从一个点走向另一个点的最短时间,并且走过的路程是5的倍数。由于n,m都小,直接f[n][m][direction][color],表示所有状态,bfs更新即可。召唤代码君:#include #in...
阅读全文
摘要:在一个矩形方阵里面,一个人要从一个位置走向另一个位置,其中某些地方有火源,每过一分钟,火源就会点燃相邻的点,同时相邻的点也变成了火源。人不能通过有火的点。问一个人能够安全地走到目的地去?最短时间多少?氺题不多说,直接预处理每个点的起火时间,然后bfs即可。召唤代码君:#include #includ...
阅读全文
摘要:这场感觉题目确实还算可以,不过,说好的每题10s效果上却不理想。这个时限还算比较紧。因为时间不是按绝对的多出几秒来计算,而是几倍来计算的。比赛做的不好,后面又去做了一下。A:典型的数位DP,一直坑在这里。E:求f(f(f(n)))%p。f()表示斐波那契数。关于求斐波那契数模的循环节是有特定的数学定...
阅读全文
摘要:给出一些人,一些食物,一些饮料,每个人都只喜欢喝某些饮料,吃某些食品,每个食品和饮料都有一定的数量,现在问最多能满足多少人的需求。注意理解题意了,每个人只需要要拿一个食物和一个饮料即可,这题目说得好像不是很明显,坑呐。简单建模。超级源点->食物->人->人'->饮料->超级汇点。除了与源点和汇点的边...
阅读全文
摘要:把L,H,W分别减一就变成上面一个题目了。不多说,也不召唤代码君了。
阅读全文
摘要:题目是给你一个空间,和一个点(n,n,n),求从原点出发能够直接接触多少个点(不经过任何一个点)?典型的mobius反演即可。首先,ans=3,因为(1,0,0),(0,1,0),(0,0,1)这三个点必看。其次别在三个平面内反演一次,算出三个坐标轴面的可见点数。最后在空间反演一次,即可。反演的方法...
阅读全文
摘要:题目的意思是给你一个棵树,每天边上有一个权值,现在要想根节点和每个叶子节点完全隔离开来,删除一些边,求最少需要删除的边权值综合是多少?直接建模,以根节点为汇点,每个叶子节点连接虚拟源点流量无穷,树上的节点按原样建模就可以了。最后跑一遍最大流等于最小割,完美解决。召唤代码君:#include #inc...
阅读全文
摘要:给一个数字方阵,你要从中间取出一些数字,保证相邻的两个数字不同时被取出来,求取出来的最大的和是多少?建立图模型,对于行列的和为奇数的格子,建立一条从原点到达这个点的边,对于行列和为偶数的格子,建立一条从该点到汇点的边,流量均为这个数;对于相邻的格子,建立一条无穷大流量的边,这样要求最大的独立和,我们...
阅读全文
摘要:给一个n*m的数字阵,1表示羊的位置,2表示狼的位置,0表示没有东西,可以通过。在每个格子的4边都可以建立围栏,有围栏的话狼是不能通过的。现在求最少建立多少围栏能够保证狼无法接触到羊。题目的模型很简单,直接建立一个超级源点和超级汇点,狼连接远点流量无穷大,羊连接汇点流量无穷大,每个格子和四周的四个格...
阅读全文
摘要:题意为给你若干个圆,每个圆的颜色对应一个频率,如果两个圆有公共部分,那么这两个圆之间可以走,你可以从起点开始,从频率小的圆走向频率大的圆并且到达终点后,从频率大的圆走向频率小的圆,最终回到起点,路径中每个圆只能走一次,是否存在一个满足条件的方案。这样的,把红点当做起点,把紫点当做终点,如果两个圆相交...
阅读全文
摘要:题目很简单、给一个有向图,求两点间的最大流量与任意一条路中的最大流量的比值。最大流不说了,求出单条流量最大的路径可以用类似Spfa的方法来搞,保存到达当前点的最大流量,一直往下更新即可。召唤代码君:#include #include #include #include #define maxn 10...
阅读全文
摘要:很好的题目。有不多于200个任务,每个任务要在si到ei这个时间段内完成,每个任务的任务量是ti*ni,只有一台机器,且其单位时间内可完成的任务量为m。现在问你,能否使所有的任务全部在规定的时间段内完成。首先把所有的时间都提取出来,排序,得到2*n-1个时间区间。网络流建模。首先创建一个超级源点和超...
阅读全文
摘要:这个题目说,有一个N*N的规格的方格。某些格子里有*号,每次可以消除一行或者一列中所有的*号。最少需要消多少次?新学到的,什么什么定理,最少点覆盖等于最大匹配数。这个定理可以这样来理解(看别人的),对于最大匹配状态下的一条匹配边,不可能两边同时存在可连的未匹配点,因为这样就可以增广了,所以对于一条匹...
阅读全文
摘要:题目是这样的,给定一些人喜欢某只猫或者狗,讨厌某只猫或者狗。求最多能够同时满足多少人的愿望?题目很有意思。建模后就很简单了。对于同一只猫或者狗,如果有一个讨厌,另一个人喜欢,那么这两个连一条边。最终,最大独立集数等于最大匹配数就可以了。。Orz。召唤代码君:#include #include #in...
阅读全文
浙公网安备 33010602011771号