题意 题目链接 给出一个带权有向图,选出n + 1n+1条链,问能否全部点覆盖,如果不能,问不能覆盖的点权最小值最大是多少 Sol TJOI怎么净出板子题 二分答案之后直接二分图匹配check一下. 多读读题就会发现题目要求的就是可相交的最小路径覆盖,那么按照套路先floyd一遍,如果能联通的话就再二分图中加边,然后判一下最大匹配数就行了.刚开始以为因为有的点可以不选,要在匈牙利的时候进行玄学贪心,其实是不用的,因为我们已经求过传递闭包了.所以直接求就是对的 因为\(M \leqslant 50…
题目链接 洛谷P4589 题意可能不清,就是给出一个带权有向图,选出\(n + 1\)条链,问能否全部点覆盖,如果不能,问不能覆盖的点权最小值最大是多少 题解 如果要问全部覆盖,就是经典的可重点的DAG最小路径覆盖,floyd求出传递闭包后跑二分图最大匹配即可 如果不能全部覆盖,就二分答案,看看能否覆盖掉比二分出来的值小的所有点 #include<algorithm> #include<iostream> #include<cstring> #include<cs…
[BZOJ5335][TJOI2018]智力竞赛(二分图匹配) 题面 BZOJ 洛谷 题解 假装图不是一个DAG想了半天,.发现并不会做. 于是假装图是一个DAG. 那么显然就是二分答案,然后求一个最小链覆盖就好了... 然而一开始我以为是不交的链覆盖.... 然而是可以交的... 所以就Floyd求一下连通性再二分图匹配就好了... 读不懂题.jpg #include<iostream> #include<cstdio> using namespace std; #define…
洛谷 P4593 [TJOI2018]教科书般的亵渎 神仙伯努利数...网上一堆关于伯努利数的东西但是没有证明,所以只好记结论了? 题目本质要求\(\sum_{i=1}^{n}i^k\) 伯努利数,\(B_0=1,B_i=-\frac{\sum_{j=0}^{i-1}C_{n+1}^jB_j}{i+1}(i>0)\) 就这玩意(什么鬼)... 然后就神仙的有\(\sum_{i=1}^{n}i^k=\frac{\sum_{i=1}^{k+1}C_{k+1}^{i}B_{k+1-i}(n+1)^{i…
洛谷 题意: 给出一个\(DAG\),现在要选出\(n+1\)条可相交的链来覆盖,最终使得未被覆盖的点集中,权值最小的点的权值最大. 思路: 显然最终的答案具有单调性,故直接二分答案来判断: 直接将小于二分权值的点加入图中,求出最小链覆盖即可. 这个题貌似有点卡常..二分上界设为INF直接T飞了.. /* * Author: heyuhhh * Created Time: 2019/11/6 10:20:13 */ #include <bits/stdc++.h> #define MP mak…
[CodePlus 2017 11月赛&洛谷P4058]木材 Description 有 n棵树,初始时每棵树的高度为 Hi ,第 i棵树每月都会长高 Ai.现在有个木料长度总量为 S的订单,客户要求每块木料的长度不能小于 L ,而且木料必须是整棵树(即不能为树的一部分).现在问你最少需要等多少个月才能满足订单. 输入格式: 第一行 3个用空格隔开的非负整数 n,S,L,表示树的数量.订单总量和单块木料长度限制. 第二行 n 个用空格隔开的非负整数,依次为 H1,H2,...,Hn . 第三行…
https://www.lydsy.com/JudgeOnline/problem.php?id=5335 小豆报名参加智力竞赛,他带上了n个好朋友作为亲友团一块来参加比赛. 比赛规则如下: 一共有m道题目,每个入都有1次答题机会,每次答题为选择一道题目回答,在回答正确后,可以从这个题目的后续题目,直达题目答错题目或者没有后续题目.每个问题都会代表一个价值,比赛最后的参赛选手获得奖励价值等价于该选手和他的亲友团没有回答的问题中的最低价值.我们现在知道小豆和他的亲友团实力非常强,能够做出这次竞赛中…
二分mid,然后用1~mid的操作在差分序列上加减,最后把差分序列前缀和起来,看是否有有超过初始r值的 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N=1e6,INF=1e9; long long n,m,a[N],d[N],x[N],y[N],s[N]; int read() { int r=…
洛谷P1462-通往奥格瑞玛的道路 题目描述 在艾泽拉斯,有\(n\)个城市.编号为\(1,2,3,...,n\). 城市之间有\(m\)条双向的公路,连接着两个城市,从某个城市到另一个城市,会遭到联盟的攻击,进而损失一定的血量. 每次经过一个城市,都会被收取一定的过路费(包括起点和终点).路上并没有收费站. 假设\(1\)为暴风城,\(n\)为奥格瑞玛,而他的血量最多为\(b\),出发时他的血量是满的. 歪嘴哦不希望花很多钱,他想知道,在可以到达奥格瑞玛的情况下,他所经过的所有城市中最多的一次…
LOJ 题目链接 & 洛谷题目链接 题意:商店里有 \(n\) 杯果汁,第 \(i\) 杯果汁有美味度 \(d_i\),单价为 \(p_i\) 元/升.最多可以添加 \(l_i\) 升.有 \(m\) 次询问,每次给出两个数 \(G,L\),你可以将商店里的一些果汁混合起来,使得他们的总体积不小于 \(L\) 升,总价格不超过 \(G\) 元,问:选择的果汁中美味度最小值的最大值是多少. \(1 \leq n,m \leq 10^5\),\(1 \leq d_i,p_i,l_i \leq 10^…
题目链接 洛谷P4593 题解 orz dalao upd:经典的自然数幂和,伯努利数裸题 由题我们只需模拟出代价,只需使用\(S(n,k) = \sum\limits_{i = 1}^{n} i^{k}\)这样的前缀和计算 我不知道怎么来的这样一个公式: \[(n + 1)^{k} - n^{k} = \sum\limits_{i = 1}^{k} {k \choose i}n^{k - i}\] 这玩意怎么来的呢? 左边为\((n + 1)^k - n^k\),\((n+1)^k\)可以看做…
题目链接 洛谷P4591 题解 设\(f[i][j]\)表示前\(i\)个串匹配到位置\(j\)的方案数,匹配一下第\(i\)个串进行转移即可 本来写了\(hash\),发现没过,又写了一个\(KMP\),依旧\(WA\),无奈去翻题解,竟然要取模??!! 题面怎么不讲啊,, #include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cmath&…
题目链接 洛谷P4588 题解 用线段树维护即可 #include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<map> #define Redge(u) for (int k = h[u],to; k; k = ed[k].nxt) #define REP(i,n) for (int i = 1;…
题目链接: 洛谷 P3187 [HNOI2007]最小矩形覆盖 BZOJ 1185: [HNOI2007]最小矩形覆盖 Description 给定一些点的坐标,要求求能够覆盖所有点的最小面积的矩形, 输出所求矩形的面积和四个顶点坐标 Input 第一行为一个整数n(3<=n<=50000) 从第2至第n+1行每行有两个浮点数,表示一个顶点的x和y坐标,不用科学计数法 Output 第一行为一个浮点数,表示所求矩形的面积(精确到小数点后5位), 接下来4行每行表示一个顶点坐标,要求第一行为y坐…
题目描述 国防部计划用无线网络连接若干个边防哨所.2 种不同的通讯技术用来搭建无线网络: 每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫星电话线路的哨所(两边都ᤕ有卫星电话)均可以通话,无论 他们相距多远.而只通过无线电收发器通话的哨所之间的距离不能超过 D,这是受收发器 的功率限制.收发器的功率越高,通话距离 D 会更远,但同时价格也会更贵. 收发器需要统一购买和安装,所以全部哨所只能选择安装一种型号的收发器.换句话 说,每一对哨所之间的通话距离都是同一…
题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡奥格瑞玛 题目描述 在艾泽拉斯,有n个城市.编号为1,2,3,...,n. 城市之间有m条双向的公路,连接着两个城市,从某个城市到另一个城市,会遭到联盟的攻击,进而损失一定的血量. 没经过一个城市,都会被收取一定的过路费(包括起点和终点).路上并没有收费站. 假设1为暴风城,n为奥格瑞玛,而他的血量最多为b,出发时他的血量是满的.…
二分答案,转化成求最少的路径,覆盖住所有权值$\leq mid$的点. 建立二分图,若$i$的后继为$j$,则连边$i\rightarrow j$,求出最大匹配,则点数减去最大匹配数即为最少需要的路径数量. 特别地如果某个点$i$的权值$>mid$,则它可以不经过,连边$i\rightarrow i$表示忽略该点. 因为这是稠密图,用bitset优化匈牙利算法即可. 时间复杂度$O(\frac{m^3\log m}{32})$. #include<cstdio> #include<…
题意 题目链接 Sol 这个题可能是TJOI2018唯一的非模板题了吧.. 考虑LCS的转移方程, \[f[i][j] = max(f[i - 1][j], f[i][j - 1], f[i - 1][j - 1] + (A_i = B_j))\] 也就是说我们如果知道了前一个列向量\(f[i - 1]\)以及\(A_i, B_j\)我们就可以转移了 那么可以暴力dp,\(f[i][sta][0/1/2]\)表示到第\(i\)个位置,当前LCS数组为sta的方案数,但是这个状态显然是\(K^K\…
题解: 这垃圾题意 问题二分之后等价于 可重复路径判断能否覆盖一张图 1.用floyd连边(来保证可重复) 然后拆点跑最大流 然后答案=n-最大流 但这样子做本来复杂度就比较高,边数增加了n倍 2.我们可以直接上下界网络流,那样等价于限制某条边至少是1 然后求网络最小流就可以了…
题目链接:https://www.luogu.org/problemnew/show/P1824 题目描述 Farmer John建造了一个有N(2<=N<=100,000)个隔间的牛棚,这些隔间分布在一条直线上,坐标是x1,...,xN (0<=xi<=1,000,000,000). 他的C(2<=C<=N)头牛不满于隔间的位置分布,它们为牛棚里其他的牛的存在而愤怒.为了防止牛之间的互相打斗,Farmer John想把这些牛安置在指定的隔间,所有牛中相邻两头的最近距离…
题目:https://www.luogu.org/problemnew/show/P1182 题意: 有n个数,要分成连续的m段.将每段中的数相加,问之和的最大值的最小值是多少. 思路: 和P1316丢瓶盖很像,就是反一下而已. 同样是二分答案,然后检查一下当前的答案可不可行,如果可行由于需要得到最小值,所以缩小上界. 要注意的点是,st的初始化应该是num中的最大值而不是随意给一个0 这会影响到分段的计数. 如果当前值是比某一个num要小的话,cnt还是+1了. #include<stdio.…
题目:https://www.luogu.org/problemnew/show/P1316 题意: 给定a个点的坐标(在一条直线上),现在要选b个点,问这b个点的最近距离的最大值是多少. 思路: 感觉数据量大的题目要大胆去考虑二分答案. 题目没有说给定的坐标有序,所以要先排个序. 然后二分答案,贪心的验证这个距离是不是可行的. 统计距离超过当前值的点有多少个,如果少于b说明取不到当前的答案. 这里不需要去考虑他们的最小值是不是刚好是当前值,因为最小值一定是大于等于当前答案的,如果不等于的化,那…
正解:整体二分+树状数组 解题报告: 传送门! 亲这里的建议是用整体二分呢 dbq最近看sd淘宝说话体看多了有点脑抽,,, 首先考虑如果是单组询问怎么做昂QAQ 考虑二分答案 对于所有比mid小的操作都不用管 然后对于大于mid的操作,他们都是不应该存在的 怎么样就不会存在呢,那不然就是已经结束了不然就是经过了故障点嘛 所以如果能通过某种方式算出所有麻油结束的经过了故障点的链数就可以判断是否合法了嘛 然后这个其实是个比较典型的dfn序套路题,,,? 就是对每个修改就改链的两端+1(-1),两端的…
题目传送门 松鼠聚会 题目描述 草原上住着一群小松鼠,每个小松鼠都有一个家.时间长了,大家觉得应该聚一聚.但是草原非常大,松鼠们都很头疼应该在谁家聚会才最合理. 每个小松鼠的家可以用一个点x,y表示,两个点的距离定义为点(x,y)和它周围的8个点(x-1,y)(x+1,y),(x,y-1),(x,y+1).(x-1,y+1),(x-1,y-1),(x+1,y+1),(x+1,y-1)距离为1. 输入输出格式 输入格式: 第一行是一个整数N,表示有多少只松鼠.接下来N行,第i行是两个整数x和y,表…
题目传送门 MRO-Ant colony 题目描述 The ants are scavenging an abandoned ant hill in search of food. The ant hill has nn chambers and n-1n−1 corridors connecting them. We know that each chamber can be reached via a unique path from every other chamber. In othe…
正解:整体二分 解题报告: 传送门! 还有个双倍经验!(明明是一样的题目为什么你们一个紫一个黑啊喂! 这题首先要想到可以二分嘛,然后看到多组询问肯定就整体二分鸭 那就是基本套路啊,发现是区间修改单点查询,于是就树状数组前缀和维护一波,就差不多辣 其实是个板子题,只是刚学整体二分所以还是写下题解QwQ 然后有几个细节分别港下 第一个是注意到它是个环形的,所以在update的时候记得分情况讨论一下 第二个是关于判断NIE,可以在最后增加一次流星雨,保证这次流星雨之后一定所有国家都能得到足够的流星,输…
传送门 好题啊. 题目要求的最大值最小,看到这里自然想到要二分答案. 关键在于怎么检验. 显然对于每个点向根走比向叶节点更优. 因此我们二分答案之后,用倍增将每个点都向上跳到跳不动为止. 这时我们check一下是不是以1连向的点构成的子树都被管辖了. 如果不是我们将可以跳到根节点且还能继续走一截的点记下来,把没有被管辖的与1相连的节点记下来. 然后一个一个判能否合法就行了. 代码: #include<bits/stdc++.h> #define N 50005 using namespace…
题目传送门 Meteors 格式难调,题面就不妨放了. 分析: 一道整体二分的练手题. 就是一般的整体二分的套路,但是要注意,将修改和询问加入队列的时候要先加修改再加询问.另外,博主代码打得太丑,常数贼大,不建议照这么打... Code: //It is made by HolseLee on 5th Oct 2018 //Luogu.org P3527 #include<bits/stdc++.h> #define N 300007 using namespace std; typedef…
题目 发现我们需要最大化最小值,基本是二分了 那么我们二分出来一个值我们将小于等于这个值的都删去,现在的问题变成了如何用\(n+1\)条路径覆盖这张图 这不最小路径覆盖吗 于是我就忘了最小路径覆盖怎么搞了 在慎老师的教育下我终于知道了最小路径覆盖应该先将每个点拆成两个点,放在二分图的左右两边,对于原图的一条边\((x,y)\),我们就连\((x,y')\),之后最小路径覆盖就等于总点数减最大匹配了 其实挺好理解的,先考虑一条匹配边都没有的情况,最小路径覆盖就是总点数,每加入一条匹配边就会让我们少…
P4592 [TJOI2018]异或 题目描述 现在有一颗以\(1\)为根节点的由\(n\)个节点组成的树,树上每个节点上都有一个权值\(v_i\).现在有\(Q\)次操作,操作如下: 1 x y:查询节点\(x\)的子树中与\(y\)异或结果的最大值 2 x y:查询路径\(x\)到\(y\)上点与\(z\)异或结果最大值 输入输出格式 输入格式: 第一行是两个数字\(n,Q\); 第二行是\(n\)个数字用空格隔开,第\(i\)个数字\(v_i\)表示点\(i\)上的权值 接下来\(n-1\…