题面 有一个长度为n 的排列,现在有一些位置的数已经模糊不清了,你只知道这个排列的逆序对个数是K,你能计算出总共有多少可能的排列吗? 对于100% 的数据,n <=10^3,K<=10^9,0 的个数不超过14. 100 折半搜索. 先用\(C_{14}^7\)把\(14\)个\(0\)分成两组,然后分别用\(7!\)来算出两组内部的贡献, 然后在用桶之类的统计两组相互之间的贡献.…
平民比赛 这场比赛的暴力分非常友好. 但是我并没有拿到全部的暴力分. 1(暴力分\(60/100\)) 暂时我可以拿的暴力分为\(30/100\),直接mst模拟即可. 然而当时打了个辣鸡莫队,结果爆零. 膜隔壁ddddddpppppp,一眼切,我氪了一万年没氪出来,理应说第一题是本场比赛的套路题. 2(暴力分\(60/100\)) 我打了暴力,结果只拿了40分,已经很感动了. 结果这道题是可以打表的,就能拿60分. 3(暴力分\(60/100\)) 觉得打得比较好,暴力分全拿. 4(暴力分\(…
题面 有一张n个点m条边的有向图,每条边有一个互不相同的边权w,有q个询问,要求你从点a经过不超过c条边到点b,要求经过的边权递增并和尽量小,求出最小的边权和,如果没有合法方案则输出-1. 对于100%的数据,n≤150,m≤5000,q≤1000,w≤5000. 100 为了去除递增的条件, 我们先给边按边权从大到小排序,然后逐一加入图中. 现在为了去除边数要求,发现最优路径经过的边最多为\(n\)条,那么我们开一个\(f_{i,j,k}\)表示: 从\(i\)到\(j\)至多走\(k\)条边…
题面 在Byteland一共有n 个城市,编号依次为1 到n,它们之间计划修建m条双向道路,其中修建第i 条道路的费用为ci. Byteasar作为Byteland 公路建设项目的总工程师,他决定选定一个区间[l, r],仅使用编号在该区间内的道路.他希望选择一些道路去修建,使得连通块的个数尽量少,同时,他不喜欢修建多余的道路,因此每个连通块都可以看成一棵树的结构. 为了选出最佳的区间,Byteasar 会不断选择q 个区间,请写一个程序,帮助Byteasar 计算每个区间内修建公路的最小总费用…
总的来说这场比赛,只能说是勉强正常发挥. 实在是知识水平有限,最后没能突破瓶颈. 有几个做得好的地方: 1.想好了在写题: 2.暴力也会拍 3.适当地放弃题. 要学习的东西: 1.Sg,线性基: 2.Sa 3.折半搜索…
题目链接: 咕 闲扯: 这题暴力分似乎挺多,但是一些奇奇怪怪的细节没注意RE了,还是太菜了 分析: 首先我们考虑最naiive的状压DP ,\(f[u][v][state]\)表示u开头,v结尾是否存在一条表示为state的路径,这个好转移不讲了,但是由于d的范围时间复杂度过大,于是考虑折半搜索 我们把一条最终路径的路径分成两部分\(p=(d+1)/2\)(其实就是上取整),\(q=d-p\),显然\(p>=q​\) 于是我们可以把一条路径长度看成两部分,一条从1开始,长度为p的路径,另一条以某…
冒泡排序:  重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来. var arr = [5,0,-56,900,12]; //大的排序次数 for(var i=0; i<arr.length-1; i++){ //小的排序 for(var j=0; j<arr.length-1-i; j++){ //交换 if(arr[j] > arr[j+1]){ temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } }…
折半搜索(meet in the middle) ​ 我们经常会遇见一些暴力枚举的题目,但是由于时间复杂度太过庞大不得不放弃. ​ 由于子树分支是指数性增长,所以我们考虑将其折半优化; 前言 ​ 这个知识点曾经在模拟赛中出现过,所以这里稍微提一下; ​ 讲的很浅显,但是不要D讲者; 入门 ​ dfs搜索树是指数性增长,如果将指数减少一半,就将会有量的飞跃,所以在遇见暴力枚举太大时,我们可以考虑这种算法; ​ 总体思想即,dfs搜素通常从一个点出发,遍历所有深度,那么我们考虑将深度减半,从两个点出…
[LOJ#6072]苹果树(矩阵树定理,折半搜索,容斥) 题面 LOJ 题解 emmmm,这题似乎猫讲过一次... 显然先\(meet-in-the-middle\)搜索一下对于每个有用的苹果数量,满足权值小于\(lim\)的方案数 ,那么只需要考虑它们构成生成树的方案数就好了. 显然有用的可以和所有的有用的或者是坏的连边,好的但不有用的只能和坏的连边,而坏的随意. 但是这样子算出来的结果是至多,因此还需要额外容斥一下计算生成树的个数. #include<iostream> #include&…
传送门 直接折半搜索,把所有和装到unorderedmapunordered_mapunorderedm​ap里面最后统计答案就行了. 然后考试的时候读优并没有处理有负数的情况于是爆零了 代码…