随笔分类 - 解题报告
摘要:今天突然做一道LCT的染色问题的时候突然想到一个两个月前一道没有AC的题目。 链接 大意是,给一个长度为10^4的序列,最多有255个不同的数字,有最多10^5次方个询问,对于每个询问 l,r 输出[l,r]中不同数字的数目。 记得最初的想法是 用f[i][j],存下数字i的第j次出现位置的下标,...
阅读全文
摘要:题意: 给出一颗树,有4种操作: 1、如果x和y不在同一棵树上则在xy连边 2、如果x和y在同一棵树上并且x!=y则把x换为树根并把y和y的父亲分离 3、如果x和y在同一棵树上则x到y的路径上所有的点权值+w 4、如果x和y在同一棵树上则输出x到y路径上的最大值动态树入门题:#includ...
阅读全文
摘要:题意: 给一棵树,树的每条边有一种颜色,黑色或白色,一开始所有边均为黑色,有两个操作: 操作1:将第i条边变成白色或将第i条边变成黑色。 操作2 :询问u,v两点之间仅经过黑色变的最短距离。树链剖分+树状数组学习树链剖分:/* 树链剖分: 划分轻重链,效果是将一颗树变成...
阅读全文
摘要:直接精确覆盖开始逐行添加超时了,换成了单点添加#include #include #include #include #include using namespace std;#define FOR(i,A,s) for(int i = A[s]; i != s; i = A[i])#define...
阅读全文
摘要:2分答案+DLX判断可行不使用的估计函数的可重复覆盖的搜索树将十分庞大#include #include #include #include #include using namespace std;#define FOR(i,A,s) for(int i = A[s]; i != s; i = ...
阅读全文
摘要:用树状数组和线段树会比较简单,这里用这道题来学习Splay。第一次写,代码比较丑/* 初始化添加一个key值足够大的结点 保证每个需要的结点都有后继*/#include #include #define ll long longusing namespace std;cons...
阅读全文
摘要:时间限制:0.25s空间限制:4M题意: 在n(n#include #include #include #include using namespace std;const int INF = 409, Maxn = 0x3f3f3f3f;struct node { int u, v, t...
阅读全文
摘要:时间限制:0.5s空间限制:4M题意: 有一个由管道组成的网络,有n个节点(n不大于100),1号节点可以制造原料,最后汇集到n号节点。原料通过管道运输。其中有一些节点有管道连接,这些管道都有着最大的流量限制,其中有一些管道必须充满。求1号节点最小的制造原料速度。如果原料不能运输到n,输出“Imp...
阅读全文
摘要:实际上是求最短的避雨时间。首先将每个点拆成两个,一个连接源点,一个连接汇点,连接源点的点的容量为当前单的奶牛数,连接汇点的点为能容纳的奶牛数。floyd求任意两点互相到达的最短时间,二分最长时间,最大流判断是否可行。注意路径时间会超过int/* 最大流SAP 邻接表 思...
阅读全文
摘要:网络流,关键在建图建图思路在代码里/* 最大流SAP 邻接表 思路:基本源于FF方法,给每个顶点设定层次标号,和允许弧。 优化: 1、当前弧优化(重要)。 1、每找到以条增广路回退到断点(常数优化)。 2、层次出现断层,无法得到新...
阅读全文
摘要:网络流关键是建图,思路在代码里/* 最大流SAP 邻接表 思路:基本源于FF方法,给每个顶点设定层次标号,和允许弧。 优化: 1、当前弧优化(重要)。 1、每找到以条增广路回退到断点(常数优化)。 2、层次出现断层,无法得到新流(...
阅读全文
摘要:时间限制:2s空间限制:30M题意: 有K台挤奶机(编号1~K),C头奶牛(编号K+1~K+C),给出各点之间距离。现在要让C头奶牛到挤奶机去挤奶,每台挤奶机只能处理M头奶牛,求使所走路程最远的奶牛的路程最短的方案。Solution: 先Floyd求最短路,然后最大流二分答案ans。 ...
阅读全文
摘要:时间限制:0.25s空间限制:4MSolution n=10000,m=100000,显然不能用矩阵乘法乘出来。 S= ATA 对于矩阵S的一行,所有在A矩阵中1位置的元素都相等,并且都等于这一行1的个数之和。假设有k个1,这一行的和显然是k*k 由此只要统计每一行有多...
阅读全文
摘要:时间限制:0.75s空间限制:4M题意: 在一颗树(最多500000个节点)中,可以对节点染色,但是一个节点染了色后,它的父节点和兄弟节点都不能再染了,求最大的染色节点数,并输出所有染色节点。Solution: 一开始写了一个树形DP 后来看到有人说题目的输入是从上到下的。。。直接倒过来...
阅读全文
摘要:模拟code#include #include #define LEN 1000using namespace std;int n, t;int pos[30], last[30], v[30];int ans[30];int main(){ cin >> n >> t; for (in...
阅读全文
摘要:简要题解: 意在判断哪些点在一个图的 奇环的双连通分量内。 tarjan求出所有的点双连通分量,再用二分图染色判断每个双连通分量是否形成了奇环,记录哪些点出现在内奇环内 输出没有在奇环内的点的数目code/* 求有向图的点双连通分支tarjan算法 ...
阅读全文
摘要:首先要强连通缩点,统计新的图的各点的出度和入度。第一问直接输出入度为0的点的个数第二问是要是新的图变成一个强连通图,那么每一个点至少要有一条出边和一条入边,输出出度和入度为0的点数大的那一个注意特判,输入已经是一个极大强连通图的情况,输出 1 0code/* 无向图强连通的Garbow算...
阅读全文
摘要:强连通缩点,统计入度为1的缩点后的点的个数个数1的话输出这个强连通分量的点的数量否则输出0;code/* Kosaraju算法,无向图的强连通分量,时间复杂度O(n+m) 思路: 按照图G的深度遍历序列,在G的反图上进行深搜 能够搜到的点集就是一个强联...
阅读全文
摘要:Floyd 最小环模板题code/* floyd最小环,记录路径,时间复杂度O(n^3) 不能处理负环*/#include #include using namespace std;const int INF = 109, maxn = 252645135;int g[INF...
阅读全文
摘要:/* 实际上就是求一个k,满足kusing namespace std;string s;void div2() { string t; int l = s.size() - 1, tem = s[0] - '0'; if (tem > 1) t += '0' + tem / 2; te...
阅读全文

浙公网安备 33010602011771号