上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 29 下一页
摘要: 网格图黑白染色,然后能互相攻击到的点之间连边,跑匈牙利算法最大匹配,答案是好点个数 最大匹配(最大独立集) 注意pao的时候只从一种颜色的格子统计即可 cpp include include using namespace std; const int N=205,dx[]={2,2, 2, 2, 阅读全文
posted @ 2018-08-05 21:55 lokiii 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 设n m,答案是\\( C_n^m \\),然后高精就行了 具体做法是先把指数筛出来,然后对每个数因数分解,记录质因子个数,最后被除数减去除数质因子个数,把剩下的质因子乘起来就行了 阅读全文
posted @ 2018-08-05 21:02 lokiii 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 同1801 注意到一行只能放012个炮,我们只需要知道列的状态,不用状压行 所以设f[i][j][k]表示前i行有j列有1个炮,有k列有2个炮的方案数 然后分情况讨论转移就行了 阅读全文
posted @ 2018-08-05 20:17 lokiii 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 设s为前缀和,首先显然的条件是$$ s_{bi} s_{ai 1} =c $$,然后隐含的是$$ s_i s_{i 1} =0 s_i s_{i 1} include include using namespace std; const int N=500005,inf=1e9; int n,s=i 阅读全文
posted @ 2018-08-05 19:48 lokiii 阅读(79) 评论(0) 推荐(0) 编辑
摘要: 感觉我的智商可能不够写题解,就直接截了hzwer的blog 地址http://hzwer.com/2656.html cpp include include include using namespace std; const int N=1000005; int n,a[N],c[N],p; lo 阅读全文
posted @ 2018-08-04 14:25 lokiii 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 两遍dfs一遍向下,一边向上,分别记录子树内人数a,当前点到所有点的距离b,最大值c和次大值d,最大值子树p 然后答案是2b c cpp include include using namespace std; const int N=1000005; int n,m,h[N],cnt,p[N]; 阅读全文
posted @ 2018-08-04 10:58 lokiii 阅读(407) 评论(1) 推荐(0) 编辑
摘要: 先从后到前做一个最长下降子序列的dp,记录f[i],我这里用的是二分(其实树状数组比较显然) 然后对于询问,超出最长上升子序列的直接输出;否则从前到后扫,f[i] =x&&a[i] la(上个选的)就选,因为这时第一个出现的一定是符合条件的中最小的最小的 阅读全文
posted @ 2018-08-03 22:47 lokiii 阅读(154) 评论(0) 推荐(0) 编辑
摘要: ~~没有复杂结构甚至不长但是写起来就很想死的代码类型~~ 原理非常简单,就是用先用单调队列处理出mn1[i][j]表示i行的j到j+k 1列的最小值,mx1[i][j]表示i行的j到j+k 1列的最大值 然后就变成求单列最大最小值,用上面同样的方法处理出对于列的mn2mx2即可 cpp includ 阅读全文
posted @ 2018-08-02 23:29 lokiii 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 设f[i][j]表示数列到i为止最后一项第j位为1的最大子序列长度,每次从i 1中1 include using namespace std; int n,f[35],ans; int read() { int r=0,f=1; char p=getchar(); while(p '9'||p='0 阅读全文
posted @ 2018-08-02 22:10 lokiii 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 第一想法是按照结束时间贪心,但是这样有反例 所以先按照t贪心,能选则选,把选的楼的持续时间放进大根堆里,当当前的楼不能选的时候如果当前的持续时间比大根堆里最大的要小,就用这个替换最大,这样总数不变但是时间缩短了 cpp include include include include using na 阅读全文
posted @ 2018-08-02 18:38 lokiii 阅读(106) 评论(0) 推荐(0) 编辑
摘要: ~~为什么早年的题总是从0开始标号啊……又zz了一次WA~~ 分层图的题只有这一个套路吧,建分层图,然后优化时间是分层跑spfa然后层与层之间单独跑即可 cpp include include include include using namespace std; const int N=5000 阅读全文
posted @ 2018-08-01 23:44 lokiii 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 又犯了zz的错误…… 需要注意的是,被毁掉的星球是不算一个联通块的(可能只有我这么算吧= =) 离线下来时间倒流,就变成了向图里加星球,也就是用并查集维护联通,在用tot变量记录当前答案,每加一个星球就tot++,每合并一个联通块就tot 注意始终没有被毁掉的星球应该在时间倒流前就加进图里 阅读全文
posted @ 2018-08-01 23:34 lokiii 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 忘记limit不能记WA了一发…… 典型数位dp,变成work(r) work(l 1),然后dfs的时候记录w当前位置,la上一个数选的什么,lm当前位是否有上限,ok当前位是否可以不考虑差大于等于2的情况(前面全是0) 然后对于lm和ok都为0的情况记忆化一下即可 啊bzoj不知道为啥给cmat 阅读全文
posted @ 2018-08-01 22:51 lokiii 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 今天真是莫名石乐志 一眼矩阵乘法,但是这个矩阵的建立还是挺有意思的,就是把sum再开一列,建成大概这样 然后记!得!开!long!long!! cpp include include using namespace std; const int N=20; long long n,b[N],c[N] 阅读全文
posted @ 2018-08-01 22:17 lokiii 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 和合并果子类似(但是是第一次听说哈夫曼树这种东西) 做法也类似,就是因为不用知道树的形态,所以贪心的把最小的k个点合为一个节点,然后依次向上累加即可,具体做法同合并果子(但是使用优先队列 注意这里可能不能被k 1整除,需要补一些出现次数0的单词 cpp include include include 阅读全文
posted @ 2018-07-31 23:07 lokiii 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 先tarjan缩成DAG,然后答案就变成了最长链,dp的同时计数即可 就是题面太唬人了,没反应过来 阅读全文
posted @ 2018-07-31 19:21 lokiii 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 参考:https://blog.csdn.net/sunshinezff/article/details/51049132 非典型数位dp 首先预处理,设f[i][j]为以0开头的i位数中1的个数为j的数的数量,g[i][j]为以1开头的i位数中1的个数为j的数的数量;转移是 f[i][j]=f[i 阅读全文
posted @ 2018-07-30 18:42 lokiii 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 我是zz吗这么简单都写错…… 一眼二分,然后判断的话是枚举点,然后计算这个点到已有联通块的最小距离,如果这个点到一些联通块的距离小于当前二分的val,则把这些联通块合并起来,这里用并查集维护,最后看这样得出的部落数是否大于k(多出来的可以直接合并) 有个非常小的优化就是不用double二分,直接把点 阅读全文
posted @ 2018-07-30 00:11 lokiii 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 显然是状压,设f[i][j][k]为1到i行选j个king,并且第i行状态为k的方案数,判断是否可行然后枚举转移即可 先把可行状态预处理出来会变快 cpp include include using namespace std; const int N=2005; long long n,kk,a[ 阅读全文
posted @ 2018-07-29 21:17 lokiii 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 先tarjan找割点和点双连通分量,然后对一个点双,如果没有割点,那么需要建立两个出口(割掉一个另一个备用);如果只有一个割点,出口可以设立在任意一个非割点的地方;如果有两个及以上个割点,就不用建出口(可以直接到达其他联通块) cpp include include include using na 阅读全文
posted @ 2018-07-29 14:23 lokiii 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 对于一个lr,每个颜色贡献的是在(1,r)区间里出现的最右位置,所以记录一个b数组表示当前点这个颜色上一个出现的位置 然后把询问离线,按r升序排序 每次把右端点右移,把这个点在树状数组上+1,并且在当前这个点的b位置上 1(表示没用了),然后树状数组前缀和减一下即可 ~~我写的~~莫队会T cpp 阅读全文
posted @ 2018-07-29 10:08 lokiii 阅读(136) 评论(0) 推荐(0) 编辑
摘要: m是5000,就想到了直接枚举比例 具体做法是是先把边按照边权从小到大排序,然后先枚举最小边权,再枚举最大边权,就是从最小边权里一个一个加进并查集里,每次查st是否联通,联通则退出,更新答案 阅读全文
posted @ 2018-07-29 08:58 lokiii 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 没啥可说的,就是一边属性一边道具建二分图,把两个属性都连到道具上,然后枚举匹配,如果无法匹配就输出,时间戳优化 cpp include include include using namespace std; const int N=1000005; int n,x,y,h[N],cnt,lk[N] 阅读全文
posted @ 2018-07-28 22:39 lokiii 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 设[f[i][j]为1到i,开头数字是j并且是山峰的方案数 注意到当数字j和j 1不相邻时,交换它们会得到一个新的符合要求的序列,所以f[i][j]+=f[i][j 1]; 如果相邻,那么j是山峰,j 1是山谷,这样就是求1到i 1,开头数字是j 1并且是山谷的方案数,也就是f[i][j]+=f[i 阅读全文
posted @ 2018-07-28 22:18 lokiii 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 是贪心 先把两个数组排序,然后贪心的选让a数组占优的(如果没有就算输),这是最大值,最小值是2n 贪心选b数组占优 cpp include include include using namespace std; const int N=100005; int n,a[N],b[N],w,ans1, 阅读全文
posted @ 2018-07-28 21:50 lokiii 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 总之就是找前面所有点的斜率都严格小于这个点的这样的点的个数 不管是询问还是修改都非常线段树啊,而且相当眼熟~~是不是和hotel有点像啊~~,大概就是区间内记一个len一个max,分别是当前区间答案和区间最大斜率,然后合并区间的时候用右区间递归,分情况讨论更新左区间 这样是两个log…… cpp i 阅读全文
posted @ 2018-07-28 21:41 lokiii 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 一眼最大权闭合子图,然后开始构图,画了画之后发现~~我其实是个智障~~网络流满足不了m,于是发现正确的打开方式应该是一眼树上dp 然后仔细看了看性质,发现把依赖关系建成图之后是个奇环森林,这个显然不能直接dp 发现这个环要选的话只能选整个环,所以tarjan缩一下点,然后再跑树上背包就行了 cpp 阅读全文
posted @ 2018-07-28 20:40 lokiii 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 常数巨大,lg上开o2才能A 首先预处理出运输计划的长度len和lca,然后二分一个长度w,对于长度大于w的运输计划,在树上差分(d[u]+1,d[v]+1,d[lca] 2),然后dfs,找出所有覆盖所有边的边的边权最大值,然后用最长运输计划减去最大值看是否符合要求即可 upt:我怕不是个傻子…… 阅读全文
posted @ 2018-07-28 20:36 lokiii 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 对于第一问二分然后贪心判断即可 对于第二问,设f[i][j]为已经到j为止砍了i段,转移的话从$$ f[i][j]=\sigema f[k][j 1] (s[j] s[k 1] include using namespace std; const int N=50005,mod=10007; int 阅读全文
posted @ 2018-07-27 23:04 lokiii 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 设f[i][j]为掉到f[i][j]时的概率然后分情况随便转移一下就好 主要是要手写分数比较麻烦 cpp include include using namespace std; const int N=55; int n,m; char a[N][N]; long long gcd(long lo 阅读全文
posted @ 2018-07-27 22:29 lokiii 阅读(225) 评论(0) 推荐(0) 编辑
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 29 下一页