随笔分类 - 题解。蒟蒻
摘要:FFT模版题。观察题目,我们可以发现,只要把序列b倒过来,再联想一下乘法运算。。。我们会发现,将序列a和序列b当作100进制数,做一次乘法,然后从低到高每一位便是答案了(乘完无需进位)#include #include #include #include #include #include #inc...
阅读全文
摘要:丧心病狂的多项式乘法。。FFT模版题。。#include #include #include #include #include #include #include #include #define rep(i, l, r) for(int i=l; i=r; i--)#define cd comp...
阅读全文
摘要:凸包题。我们先把所有信用卡的四个定点的坐标求出来,然后计算凸包长度,最后加上一个圆的周长就行。#include #include #include #include #include #include #include #define rep(i, l, r) for(int i=l; il=t->...
阅读全文
摘要:树状数组套权值线段树,然后对于每个询问进行二分答案。#include #include #include #include #include #include #include #define rep(i, l, r) for(int i=l; i>1; if (k>1; if (s(l(y))-...
阅读全文
摘要:数据结构模版题【连这么神的题都沦为模版题了Orz对数离散化后树状数组套权值线段树。#include #include #include #include #include #include #include #define rep(i, l, r) for(int i=l; il=t->r=blan...
阅读全文
摘要:欧拉回路。把每个数当作一个节点,能首尾相连的就连接一条有向边。然后从起点跑一遍就行。#include #include #include #include #include #include using namespace std;#define rep(i, l, r) for(int i=l; ...
阅读全文
摘要:同样是道可并堆题。配对堆模版题。#include #include #include #include #include #include #define rep(i, l, r) for(int i=l; i<=r; i++)#define clr(x, c) memset(x, c, sizeo...
阅读全文
摘要:最短路+堆优化。普通的堆还不行,自己用的是配对堆(貌似斐波那契堆也行?毕竟理论复杂度)然后发现自己的配对堆比云神的不知快了多少。。。我照着他的模版打的喂。。然后发现前T条边不理都能A。。。数据啊数据233#include #include #include #include #include #in...
阅读全文
摘要:这道题为树套树,我自己是替罪羊树套权值线段树。此题有三种操作:1.询问K值:可通过替罪羊树提取区间+权值线段树合并+二分答案求得2.修改:可通过权值线段树的删除+添加操作实现3.插入:可通过替罪羊树的插入操作实现#include #include #include #include #include...
阅读全文
摘要:一道BST的练习题。Treap版:#include #include #include #include #include #include #define rep(i, l, r) for(int i=l; i pr[v]) Right(v); } else { Insert(x, r[v])...
阅读全文
摘要:Treap+启发式合并。依旧没什么需要用到脑子的。#include #include #include #include #include #include #define rep(i, l, r) for(int i=l; i pr[u]) Right(u); } else { if (!r[...
阅读全文
摘要:图论中的2-SAT。模板题。#include #include #include #include #include #include using namespace std;#define rep(i, l, r) for(int i=l; in)#define travel2(x) for(ed...
阅读全文
摘要:拓扑排序难题。对于相同排名的玩家,我们将他们组成一个集合。这可以用并查集实现。然后将并查集看成一个点,将所有大于小于的关系转换成集合中的关系,这个过程就可以判断方案是否冲突了。然后拓扑排序求排名,顺便也就可以判断结果是否唯一了。#include #include #include #include ...
阅读全文
摘要:这题是基于一道经典的费用流模型。将每天拆成两个点i和j,新增源和汇并建立六种边:1.从源出发到每个i点,flow为+∞,cost为每条新餐巾的价值,表示这一天所使用的餐巾中来自购买的餐巾2.从源出发到每个j点,flow为每天所需的餐巾数,cost为0,表示这一天最多可使用的餐巾3.从每个i点出发至汇...
阅读全文
摘要:这是道网络流的题怎么样建图呢?我们从每个人 Ai 连边至其所对应的两个设备 Bi Bj,流量为+∞。然后新建一对源汇,源连至每个人,流量为满足此人要求的利润;每个设备连至汇,流量为建造设备的代价。然后求最大流flow,答案就是总利润减去flow。为什么这种建模可以呢?我们可以通过残留网络来观察。我们...
阅读全文
摘要:题意难懂。。。大意上说就是给m个排列P1,P2,P3...Pm,自己求个排列T使得T与Pi的各个数的绝对值差之和最小。其实也就是二分最小匹配了。。。。#include #include #include #include #include #include #include #include #de...
阅读全文
摘要:先对于每种可能的PK情况进行判断胜负,然后求最小改动最大匹配。#include #include #include #include #include #include #include #include #define rep(i, l, r) for(int i=l; i=hp2[y]) ret...
阅读全文
摘要:求二分最大匹配,但还要尽量接近原匹配。。。解决方法:对于N个顶点的二分图,每条边同时乘上一个比N稍微大的数N',然后对于在原匹配的边就都+1。经过这样处理,求得的答案Ans乘除N'即是原图的最大匹配,而Ans对N'取余则是现匹配中原匹配的边数。嗯这种思想以前貌似也有接触过,“乘加除余”?#inclu...
阅读全文
摘要:先根据不同的起点跑最短路,记录距离,从而建立二分图求最小匹配。一开始我求最短路的时候我把港口直接加到图中,然后发现进了港口就不能出来了,所以连接港口的边就要从双向边改成单向边…………这也搞得我n和m分不清了……还不如排除掉港口算最短路后再统计各艘船到各个港口的最短距离……然后我还傻叉地用了Dijks...
阅读全文
摘要:题目只有26个字母,所以我们新建一个二分图,v[i][j]表示字母i对应字母j时能成功匹配的个数,给这个边矩阵v求个最大匹配就是答案。#include #include #include #include #include #include #include #include #include #d...
阅读全文

浙公网安备 33010602011771号