11 2018 档案
摘要:link 其实网络流就是再考你如何去建边。 先见S,T为源点与汇点,然后将S连向每一个单位,流量为每个单位的人数,然后将每一个单位连向每一个餐桌,流量为1,最后在将每一个餐桌与T相连,流量为每个餐桌容量,然后跑一边Dinic最大流就行,只需要优化一点点,每次dfs增广多条
阅读全文
摘要:link 其实就是一道二分图匹配板子,我们建立S,T为源点与汇点,然后分别将S连向所有正驾驶员,边权为1,然后将副驾驶员与T相连,边权为1,将数据中给出的(a,b),将a连向b,边权为1,然后把反向边记好以后就跑一遍最大流就行 #include<iostrea
阅读全文
摘要:笔记--最大流 EK Dinic EK: 运用反向边可以给当前图一次反悔的机会,就是其实现在的增广路并不是最优的,然后就bfs找增广路即可 Dicnic: 我们发现其实每一次先bfs一下分层,然后dfs会更快一些,这就是Dinic的思想 然后优化此算法: 发现每一次可
阅读全文
摘要:link 设颜色为i的个数为ai 我们可以发现[l,r]里面的答案为 ∑xi=1ai×(ai−1)∑xi=1ai 化简得 $\frac{\sum_{i=1}^x a_i^2-(r-l+1)}{(r-l+1)\t
阅读全文
摘要:link 第一次写可持久化线段树,可以很明显的想到二分一个美味度,因为很明显此题具有单调性。 然后就可以随便乱搞了,按照美味度排序,然后按照每升价格建一个可持久化线段树,然后主要是check函数 当我们要判断一个美味度是否可行的时候,我们先可以将其下标得到,然后贪心去先选择价格最小的,然后就是个模拟
阅读全文
摘要:第一次考NOIP的我已经自闭了 CCF告诉我们了一件事情,要对自己写的程序有信仰,相信CCF的数据是水的 普及组: 分数:100+100+30+100=330 1.titile: cin,scanf都试了试,却没有A掉第二个样例,最后getchar()5次$A
阅读全文
摘要:题目 官方题解 T1: 单调栈,单调队列因为认为考场上会写崩所以写了一个十分暴力的方法(线段树) 然后做一做区间覆盖即可 #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<algorithm>
阅读全文
摘要:题目 官方题解 T1: 一道水题 #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<algorithm> #include<stack> using namespace std; inline
阅读全文
摘要:题目 官方题解 T1: 我们可以把问题化简为a×b×c≤n中的有序(a,b,c)有多少组。分三种情况考虑 当a=b=c时,答案十分好统计 当a<b<c时,统计完答案×6 当a=b and a<c时,答案×3
阅读全文
摘要:题目pdf 官方题解 T1: 我们可以发现此题若要求[L,R]区间的答案,其实就是再求前缀和,我们设b为当前出现次数最多的字符,c为最小,所以答案为s[b]r−s[c]r−(s[b]l−1−s[c]l−1),其实我们可以用一个数组minv[b][c]记录这个式子$
阅读全文
摘要:link 我们可以很容易的推断出−1是单调不降的,若i>j且a_i与a_j都没有填数,若填完之后a_i>a_j或者a_i<a_j,则对答案产生影响的只在[i,j]之间,则a_i<a_j对答案产生的贡献更小,则其实每个不同位置的-1其实是互不影响的,所以就可以用$d
阅读全文
摘要:题目 这是NOIP模拟赛( ) T1: 想的太复杂了,开头1个小时认为此题不可做,所以到最后也懒得打O(n)的方法,只打了O(n^2)的东西 我的做法: 先把数据的图建出来,然后查看对于每个列是否没产生矛盾 #include<iostream> #include<cstring> #
阅读全文
摘要:题目 题解 T1: 简单bfs或者跑个最短路即可 #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<queue> #include<algorithm> using namespace s
阅读全文
摘要:主要是怎么处理矛盾 矛盾的条件有2种: 第一种是当把所有相等的a都全部找到后,他们并没有全联通,所以矛盾,因为没有两个是相同的 第二种是在2组(l,r,a),(l1,r1,a1)中,a<a1并且(l,r) 包含在(l1,r1),矛盾 所以怎么去维护,第一种直接暴力查询,第
阅读全文