摘要:
##题面 这里 ##思路 果然ATcoder上的都是代码难度小的思维题啊。 这题是一道奇妙的树形背包dp。首先可以考虑容斥,枚举每一条边是否有颜色,有颜色的点构成若干连通块,然后块内点就可以自由配对。易知n为奇数时方案数$p[n]=0$,偶数时$p[n]=(n-1)(n-3)…3*1$。但这样复杂度 阅读全文
摘要:
#CF568E Longest Increasing Subsequence 一道浪费了我一整个晚自习+半个上午的题,不写篇博客简直对不起自己。 其实想清楚思路后实现很简单,还是代码能力太差——写出了n个bug。 • 每个数只能使用一次实际上是个废话。因为在严格的LIS中,同一个数最多只会出现一次 阅读全文
摘要:
2021省选游记 经过此一役清楚认识到了差距,果然自身实力离省队队员差的还是太远,基本两天都是在打暴力中进行,没有用到集训中学习的什么知识,分数难看也就是情理之中的了。接下来的一段时间不仅要弥补冲刺省队落下的一个月常规学习,还要抓紧一切机会弥补差距,前路漫漫,仍需努力啊。 Day 1 t1一开始 阅读全文
摘要:
考虑多边形三角剖分的实际意义,即一条对角线将一个多边形分为两个。很容易想到分治:每次在当前多边形中选出一条对角线使得两部分点数尽可能均匀,直到当前多边形为三角形为止。询问时若两个点在选定的对角线同侧,则递归求解。若在两侧,由于三角剖分的性质,不会有任何一条边穿过此对角线。因此两点间最短路必然穿过对角 阅读全文
摘要:
单调队列优化 当dp[i][j]从一段区间转移而来,且这段区间随i,j的后移而后移/前推时,可以考虑用单调队列扫一遍,可将O(n^2)优化至O(n)。 四边形不等式优化 形如dp[i][j]=min{dp[i][k]+dp[k+1][j]+cost[i][j]}的dp方程,//取max不一定满足四边 阅读全文
摘要:
FFT,NTT 多项式的点值表示法是可以直接进行+,-,*,/等运算的,考虑其定义即可。但一般加减运算都是直接系数相加减,可以少做几次NTT/FFT,降低代码时间复杂度。(甚至有可能掩饰一些代码上的错误,比如有个数组进行了一次NTT+逆NTT后%xn,将大于xn的部分系数清零了,但没有影响你所需的( 阅读全文
摘要:
c++ 常用头文件 输入输出 #include <ios> //基本输入/输出支持#include <iostream> //数据流输入/输出#include <istream> //基本输入流#include <ostream> //基本输出流#include <fstream> //文件输入/输 阅读全文
摘要:
题面 这里 思路 一道很妙的dp题,首先可以发现至多有一种主要食材被选超过t/2次,所以考虑用容斥:合法方案=总方案数-Σ每行的不合法方案数。显然:求出确定的某一列不合法的方案数比求出每一行都合法的方案数要简单得多(范围减小,限制更明确)。 ..................这也是容斥的基本思路: 阅读全文
摘要:
题面 点这里 大意是正整数a,b互素,求最大的k,使得ax+by=k(x>=0,y>=0)无解,即不能用a,b凑出k。 思路 根据上面提取出的公式,可以很快联想到exgcd求不定方程,实际上这也确实是一种解法,但本人太菜,选择了一种更为通俗的方法: ........本文中将一个数能被凑出称为被覆盖. 阅读全文