上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 29 下一页
摘要: 完了不会dp了 设f[i][j]为以i结尾,有j个时的最优值,辅助数组g[i][j]为s选了i和j,i~j中的误差值 转移是f[j][i]=min(f[k][i 1]+g[k][j]) cpp include include include using namespace std; const lo 阅读全文
posted @ 2018-07-04 17:32 lokiii 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 废了废了,一个小dp都想不出来 把c数组倒序一下,变成1在最下,设f[i][j]为某一人取完j个之后还剩1~i的硬币,转移的话应该是f[i][j]=max(s[i] f[i k][k]),就是1~n的硬币价值和减去上一手能拿到的最大值,但是这样一来就是O(n^3)的了 仔细观察发现f[i][j]和f 阅读全文
posted @ 2018-07-04 15:30 lokiii 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 参考:https://blog.csdn.net/u012288458/article/details/50830498 有点神啊 正难则反,考虑计算不符合要求的三角形。具体方法是枚举每个点,把这个点和(0,0)连线,然后连线左边的点两两组合和连线右边的点两两组合再和当前枚举的点组成三角形都是不符合 阅读全文
posted @ 2018-07-04 14:56 lokiii 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 和poj 2409差不多,就是k变成3了,详见 还有不一样的地方是记得特判n==0的情况不然会RE cpp include include using namespace std; long long n,ans; long long ksm(long long a,long long b) { l 阅读全文
posted @ 2018-07-04 11:17 lokiii 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 根据polya定理,答案应该是 $$ \frac{1}{n}\sum_{i=1}^{n}n^{gcd(i,n)} $$ 但是这个显然不能直接求,因为n是1e9级别的,所以推一波式子: $$ \frac{1}{n}\sum_{i=1}^{n}n^{gcd(i,n)} $$ $$ =\frac{1}{n 阅读全文
posted @ 2018-07-04 11:01 lokiii 阅读(247) 评论(2) 推荐(1) 编辑
摘要: 两种置换 旋转:有n种,分别是旋转1个2个……n个,旋转i的循环节数位gcd(i,n) 翻转:分奇偶,对于奇数个,只有一个珠子对一条边的中点,循环节数为n/2+1;对于偶数个,有珠子对珠子和边对边,循环节个数为n/2+1个和n/2个 然后用polya定理 即可 cpp include include 阅读全文
posted @ 2018-07-04 09:51 lokiii 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 啊啊啊无脑背过果然不可取 比如这道题就不会写 参考:https://blog.csdn.net/iamzky/article/details/41317333 cpp include include include using namespace std; const int N=55; const 阅读全文
posted @ 2018-07-03 16:41 lokiii 阅读(171) 评论(0) 推荐(1) 编辑
该文被密码保护。 阅读全文
posted @ 2018-07-03 11:00 lokiii 阅读(6) 评论(0) 推荐(1) 编辑
摘要: 非常迷的一道题啊 我觉得挺对的版本只得了30 总之就是Floyd·改,开两个数组,一个是d[i][j]就是普通的只有边权的最短路,a[i][j]是题目要求的那种 具体改的地方是把枚举中转点的地方把中转点按从小到大的顺序枚举,d[i][j]按照套路更新即可,然后a[i][j]从a[i][j]原数和d[ 阅读全文
posted @ 2018-07-02 17:32 lokiii 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 真是简单粗暴 把矩阵树定理的运算当成黑箱好了~~反正我不会~~ 这样我们就可以在O(n^3)的时间内算出一个无向图的生成树个数了 然后题目要求每个工程队选一条路,这里可以考虑容斥原理:全选的方案数 不选工程队1能修的路的方案数 不选工程队2能修的路的方案数……+不选工程队12能修的路的方案数+不选工 阅读全文
posted @ 2018-07-02 11:54 lokiii 阅读(161) 评论(0) 推荐(1) 编辑
摘要: 是板子题,因为mod不是质数所以需要辗转相除~~然而并不知道为啥~~ 高斯消元部分还不知道原理呢……先无脑背过的 cpp include include using namespace std; const int N=105,dx[]={ 1,1,0,0},dy[]={0,0, 1,1},mod= 阅读全文
posted @ 2018-07-02 10:39 lokiii 阅读(91) 评论(0) 推荐(1) 编辑
摘要: 参考:https://www.cnblogs.com/ACShiryu/archive/2011/08/09/poj2356.html 鸽巢原理??? 其实不用map但是习惯了就打的map 以下C c自参考博客: 我们可以依次求出a[0],a[0]+a[1],a[0]+a[1]+a[2],..... 阅读全文
posted @ 2018-07-01 16:14 lokiii 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 其实我没看懂题~~不如说根本没看~~……都说是excrt板子那就写个板子吧 注意开long long cpp include include using namespace std; const long long N=100005; long long n,r[N],m[N]; void exgc 阅读全文
posted @ 2018-07-01 13:22 lokiii 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 1 include using namespace std; const int N=105; const long long inf=1e18; long long T,n,m; struct qwe { long long a[N][N]; qwe operator (const qwe &b) 阅读全文
posted @ 2018-07-01 09:41 lokiii 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 有一个性质就是组成最小生成树总边权值的若干边权总是相等的 这意味着按边权排序后在权值相同的一段区间内的边能被选入最小生成树的条数是固定的 所以先随便求一个最小生成树,把每段的入选边数记录下来 然后对于每一段dfs找合法方案即可,注意dfs中需要退回并查集,所以用不路径压缩的并查集 然后根据乘法定理, 阅读全文
posted @ 2018-06-30 23:05 lokiii 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 不知道该叫贪心还是dp 倒着来,记f[0][i],f[1][i]分别为先手和后手从n走到i的最大值。先手显然是取最大的,当后手取到比先手大的时候就交换 cpp include include using namespace std; const int N=700005; int n,a[N],w= 阅读全文
posted @ 2018-06-30 16:13 lokiii 阅读(122) 评论(0) 推荐(0) 编辑
摘要: n+1个坐标可以列出n个方程,以二维为例,设圆心为(x,y),给出三个点分别是(a1,b1),(a2,b2),(a3,b3) 因为圆上各点到圆心的距离相同,于是可以列出距离方程 $$ (a1 x)^2+(b1 y)^2=(a2 x)^2+(b2 y)^2 $$ $$ (a1 x)^2+(b1 y)^ 阅读全文
posted @ 2018-06-30 14:17 lokiii 阅读(164) 评论(0) 推荐(1) 编辑
摘要: 按结束时间排序,然后开个线段树,按照排序后的牛群贪心的选 贪心的依据是选哪头牛都是选,不如给后面的多省一点空间 cpp include include include using namespace std; const int N=50005; int m,n,c,ans; struct xds 阅读全文
posted @ 2018-06-30 08:57 lokiii 阅读(107) 评论(0) 推荐(0) 编辑
摘要: cdq复健.jpg 首先列个n方递推,设sf是f的前缀和,st是t的前缀和: $$ f[i]=min(f[j]+s (sf[n] sf[j])+st[i] (sf[i] sf[j])) $$ 然后移项: $$ f[i]=f[j]+s sf[n] s sf[j]+st[i] sf[i] st[i] s 阅读全文
posted @ 2018-06-28 22:51 lokiii 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 直接跑最短路就行了……还不用判负环 cpp include include include using namespace std; const int N=25005,inf=1e9; int n,r,p,s,h[N],cnt,dis[N]; bool v[N]; struct qwe { int 阅读全文
posted @ 2018-06-27 22:35 lokiii 阅读(215) 评论(0) 推荐(0) 编辑
摘要: C Minimization 枚举就可以了 因为最后一定会变成1,所以第一次操作的区间就包含1会比较优,然后枚举1在第一次操作区间里排第几个取min即可 D Snuke Numbers 卡死在这道题上了,思路比较迷 首先打表发现,Snuke数只会出现在结尾为9,99,999,9999……的数中,9的 阅读全文
posted @ 2018-06-27 21:39 lokiii 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 意识流虚树 首先考虑只有一个党派,那么可以O(n)求树的直径,步骤是随便指定一个根然后找距离根最远点,然后再找距离这个最远点最远的点,那么最远点和距离这个最远点最远的点之间的距离就是直径 那么考虑多党派,也这样做,假如有一棵只有这个党派的牛构成的虚树,那么求直径也可以按照上面的做法 但是实际上并不用 阅读全文
posted @ 2018-06-23 11:44 lokiii 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 真是神奇 根据斐波那契数列,这个a[i] include using namespace std; const int N=1005; int n; long long a[N],b[N],tot,s[N],c,ans; void dfs(int w,long long v) { if(v+s[w 阅读全文
posted @ 2018-06-23 09:52 lokiii 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 原来强行转int可以避免四舍五入啊 cpp include include using namespace std; int r,y; double m; int main() { scanf("%d%lf%d",&r,&m,&y); double l=1.0+(double)r/100.0; fo 阅读全文
posted @ 2018-06-22 22:23 lokiii 阅读(140) 评论(0) 推荐(0) 编辑
摘要: i的初始化写成2了于是成功查错2h……怕不是个傻子 设f[i][j]为第i根高为j,转移是 $$ f[i][j]=min(f[i 1][k]+abs(k j) c+(j h[i])^2)(j =h[i],k =h[i 1]) $$ 时间复杂度是1e5\ 1e2\ 1e2,空间复杂度是1e5\ 1e2 阅读全文
posted @ 2018-06-22 22:13 lokiii 阅读(143) 评论(0) 推荐(0) 编辑
摘要: bfs预处理出每个点s和t的距离d1和d2(无法到达标为inf),然后在若干灌木丛格子(x,y)里取min(d1[x][y]+d2[x][y]) cpp / 0:贝茜可以通过的空地 1:由于各种原因而不可通行的区域 2:贝茜现在所在的位置 3:骑士们的位置 4:长着贝茜需要的灌木的土地 / incl 阅读全文
posted @ 2018-06-20 22:24 lokiii 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 思路还是挺好玩的 首先简单粗暴的想法是dfs然后用离散化权值树状数组维护,但是这样有个问题就是这个全局的权值树状数组里并不一定都是当前点子树里的 第一反应是改树状数组,但是显然不太现实,但是可以这样想,就是现在统计子树之前把查到的答案减去,然后再查子树最后加上查到的答案,这样相当于去重了 方便起见, 阅读全文
posted @ 2018-06-19 18:27 lokiii 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 参考:http://www.cnblogs.com/lidaxin/p/5240220.html 虽然splay会方便很多,但是~~懒得写~~,于是写了cdq 首先要想到贪心的思路,因为如果在某天买入是能得到最大收益的,那么应该用所有钱去买,相对的如果在某天卖出能得到最大收益,那么应该全部卖出 方便 阅读全文
posted @ 2018-06-19 17:24 lokiii 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 裸的最大生成树,注意判不连通情况 cpp include include include using namespace std; const int N=20005; int n,m,f[N],con; long long ans; struct qwe { int u,v,w; }a[N]; b 阅读全文
posted @ 2018-06-16 22:07 lokiii 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 差分约束裸题,用了比较蠢的方法,先dfs_spfa判负环,再bfs_spfa跑最短路 注意到“奶牛排在队伍中的顺序和它们的编号是相同的”,所以\\( d_i d_{i 1} =0 \\),连(i,i 1,0);然后对于\\( d_i d_j=D d_j d_i include include inc 阅读全文
posted @ 2018-06-16 21:55 lokiii 阅读(91) 评论(0) 推荐(0) 编辑
上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 29 下一页