09 2018 档案

摘要:题解: 第一题:开始想找循环节,但数据很好卡; 后来想小的一直拿,那么另一个就会出现负数,抵消+打表发现就是2^k在mod(n+m)的值; #include<bits/stdc++.h> using namespace std; #define ll long long ll mod, n, m; 阅读全文
posted @ 2018-09-26 16:45 Ed_Sheeran 阅读(146) 评论(0) 推荐(0)
摘要:矩阵取数游戏 链接:https://www.luogu.org/problemnew/show/P1005 对于一个给定的 n \times mn×m 的矩阵,矩阵中的每个元素 ai,j​ 均为非负整数。游戏规则如下: 帅帅想请你帮忙写一个程序,对于任意矩阵,可以求出取数后的最大得分。 n, m < 阅读全文
posted @ 2018-09-25 17:38 Ed_Sheeran 阅读(251) 评论(0) 推荐(0)
摘要:题解: 第一题:T可以写成 b^n * S + ( x1*b^0 + x2*b^1 + x3*b^p2 + …… xn*b^n) * a,; n的大小是logT的,我们就可以枚举n, 然后用a拆分剩下的,a拆分时尽量用大的b^n去拆分; 第二题: 比如ai 向 i 连边,表示ai需要和大小为i的数进 阅读全文
posted @ 2018-09-25 17:33 Ed_Sheeran 阅读(103) 评论(0) 推荐(0)
摘要:第一题:抽屉原理,维护前缀和,出现一样的中间就可以了; 我看成了不能选一样的数(其实我觉得题意有歧义,也可能是我太久没学语文了),难度翻翻,以后要认真审题; #include<bits/stdc++.h> using namespace std; const int M = 1000005; boo 阅读全文
posted @ 2018-09-25 17:20 Ed_Sheeran 阅读(181) 评论(0) 推荐(0)
摘要:题解: 可持久化并查集(今天早上现学习YY的, 启发式合并logN, 就不用路径压缩了, 不然会要N*logN*logN的空间) #include<bits/stdc++.h> using namespace std; const int M = 100005; int n, m; struct N 阅读全文
posted @ 2018-09-22 18:30 Ed_Sheeran 阅读(199) 评论(0) 推荐(0)
摘要:题解: 第一题:类比只有三根,四根的柱子的汉诺塔,柱子越多越好,柱子盘子固定,步数一定,如果我有K个盘子,J个柱子,把P个盘子移到1个柱子的步数为F【P】【J】, 那么剩余K-P个盘子移到1个柱子就是F【K-P】【J-1】, 放P的柱子不能再放了,然后我们又有J个可以自由移动的柱子, 所以f[ i 阅读全文
posted @ 2018-09-22 18:14 Ed_Sheeran 阅读(143) 评论(0) 推荐(0)
摘要:第一题:线段树求最大连续子段和,维护四个信息:区间最大子段和, 区间和, 左边最大子段和, 右边最大子段和; 查询的时候返回的是一个指针,我开始用的zero, 节约空间, 后来发现会同时有多个询问用到zero,zero会不断变化, 所以要tail++,或重新写一个up函数 #include<bits 阅读全文
posted @ 2018-09-21 18:48 Ed_Sheeran 阅读(153) 评论(0) 推荐(0)
摘要:第一题: 插板法,多思考一下应该出得来; #include<bits/stdc++.h> using namespace std; #define ll long long const ll mod = 998244353; const int M = 1000005; ll dp[M], fac[ 阅读全文
posted @ 2018-09-19 16:38 Ed_Sheeran 阅读(148) 评论(0) 推荐(0)
摘要:第一题:O (n*m) 对于查询矩阵xl, yl, xr, yr; 可以变为 sum(x, i) * (i, y) xl <= x <= xr, yl <= y <= yr, 1 <= i <= n; 用一个乘法分配率+前缀和 变为sum ( a[xl - xr][i] * b[i][yl - yr 阅读全文
posted @ 2018-09-19 16:37 Ed_Sheeran 阅读(219) 评论(0) 推荐(0)
摘要:题解: 第一题:每个柱子可以到达的位置是可求的一个区间,我们得到区间,并和下一个柱子的限制取交集,得到一个新区间,这样一直做下去,就可以得到最终答案的区间,我们肯定贪心走到最低点,知道了这个坐标,就可以O(1)得到答案,不用在考虑中间是怎么走的(我就是这点没有想到,然后去暴力DP了);最后在注意一下 阅读全文
posted @ 2018-09-15 17:12 Ed_Sheeran 阅读(327) 评论(0) 推荐(0)
摘要:题解 第一题:水 #include<bits/stdc++.h> using namespace std; const int M = 1e5 + 5; struct Node{ int s, t; }p[M]; bool cmp(Node A, Node B){ return A.t > B.t; 阅读全文
posted @ 2018-09-14 20:05 Ed_Sheeran 阅读(141) 评论(0) 推荐(0)
摘要:题解: 第一题: 这道题达到最终状态就停了,p是甲最终赢的概率,我们最后状态即p=1, 或p = 0;最初p = 0.5; 从0.5到1或0的增量都是0.5,甲还要赢x场, 乙还要赢y场,当x,y发生变动时,p改变,假设增量为q, 我们就应该投入 q/0.5 * 2 ^(2n - 1), (占总共钱 阅读全文
posted @ 2018-09-11 17:46 Ed_Sheeran 阅读(163) 评论(0) 推荐(0)
摘要:一场摸你赛 2018年7月22日 (请选手务必仔细阅读本页内容) 一.题目概况 中文题目名称 开会 围墙 搬砖 英文题目名称 CP gfw bricks 可执行文件名 CP gfw bricks 输入文件名 CP.in gfw.in bricks.in 输出文件名 CP.out gfw.out br 阅读全文
posted @ 2018-09-08 17:05 Ed_Sheeran 阅读(286) 评论(0) 推荐(0)
摘要:第一题:SPFA,最难的还是读入,一般读入接上一行的\n; 第二题:LIS即为答案,一个逆序对一条边,只有LIS里面没有边,应该多想一下,这道题很简单,但我方向完全偏了; 第三题:搜索+剪枝,所有数据都很小,所以可以实际跑的很快,本来想状压没搞出来; #include<algorithm> #inc 阅读全文
posted @ 2018-09-07 18:23 Ed_Sheeran 阅读(154) 评论(0) 推荐(0)
摘要:题解: 第一题:裸的exgcd,注意有很多特判; #include<bits/stdc++.h> using namespace std; #define ll long long const ll P = 65535; ll exgcd(ll a, ll b, ll &x, ll &y){ if( 阅读全文
posted @ 2018-09-02 15:51 Ed_Sheeran 阅读(251) 评论(0) 推荐(0)