08 2017 档案

摘要:Problem 1001 考虑到直接搜肯定TLE。 我们从起点开始搜10步,再从终点开始搜10步。 其中,从终点开始搜10步通过预处理完成,因为每一次的终点都是一样的。 存状态的时候我把0变成6(为了调试方便),把所有数字写在一行。 然后把这个大数看成一个7进制数,刚好在long long的范围内。 阅读全文
posted @ 2017-08-27 23:21 cxhscst2 阅读(212) 评论(0) 推荐(0)
摘要:Problem 1001 Problem 1002 考虑把每个询问拆分成2个单独的询问。 拆分后的询问为(s, t, x)。 也就是询问从s到t的最短路上所有权值小于等于x的点的权值总和。 我们把(s, t, a, b)拆成(s, t, a - 1) 和(s, t, b)。 那么第二个询问减去第一个 阅读全文
posted @ 2017-08-27 23:16 cxhscst2 阅读(205) 评论(0) 推荐(0)
摘要:Problem 1001 Problem 1002 如果不考虑必须互质的条件 那么可以通过递归求出所有的数 现在考虑必须互质 先用筛法预处理出每个数的质因数 由于每个数的质因数不会很多 所以直接容斥原理即可 1 #include<iostream> 2 #include<cstdio> 3 #inc 阅读全文
posted @ 2017-08-27 23:12 cxhscst2 阅读(195) 评论(0) 推荐(0)
摘要:Problem 1002 因为是完全K叉树 所以这棵树的所有孩子最多只有一个不是满K叉树 对这个孩子进行递归处理即可注意K=1时要特判 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int inf=(1<<30)-1; 4 cons 阅读全文
posted @ 2017-08-27 22:56 cxhscst2 阅读(178) 评论(0) 推荐(0)
摘要:Problem 1001对于每个询问,根据后缀{前缀插入到AC自动机内 然后每个单词写2遍,中间用{隔开,统计有那几个前缀和后缀 最后对于每个前缀和后缀 输出方案数 注意:单词可能有重复,可以用vector记录一下end数组 1 #include<iostream> 2 #include<algor 阅读全文
posted @ 2017-08-27 22:52 cxhscst2 阅读(256) 评论(0) 推荐(0)
摘要:Problem 1001 先预处理出一个数组,记录每个数对(x,y),y是x的倍数 用一个bitset A把a数组记录下来 然后用一个数组统计b数组 再用s数组维护一个后缀,s[x]表示大于x所有出现的数的个数的奇偶性 然后对于每一个未出现过的询问k,每个b数组中有的大于k的数,用bitset B记 阅读全文
posted @ 2017-08-27 22:46 cxhscst2 阅读(162) 评论(0) 推荐(0)
摘要:Problem 1004 直接用数组模拟 为了避免memset 可以一遍正着统计,一遍倒着统计 注意统计的时候不能出现乘除法 不然会T 然后记录一个cnt cnt大于2e8就跳出 同时有效数字的位数够了也跳出 当然所有的数都不同以及只有2个数相同要特殊处理 #include<iostream> #i 阅读全文
posted @ 2017-08-27 22:39 cxhscst2 阅读(192) 评论(0) 推荐(0)
摘要:Problem 1003 维护一个链表 链表中记录大于等于x的数 一开始链表中插入所有的数 从小到大枚举x 用双指针从左到右跳k次 做完一个x删除这个节点 1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<cst 阅读全文
posted @ 2017-08-27 22:38 cxhscst2 阅读(240) 评论(0) 推荐(0)
摘要:Problem 1002 这个Hash好难……其实要用到抽屉原理。 这道题当时做出的队伍很少。 我们取出1000*1000矩阵的所有8*8的矩阵,放到一个map里面。 然后我们去大矩阵里分块去找这些map里存过的东西……如果找到了那就有了答案。 也就是说根据原来map里存下的信息判断位置即可。 因为 阅读全文
posted @ 2017-08-27 22:37 cxhscst2 阅读(228) 评论(0) 推荐(0)
摘要:Problem 1001 其实就是求$2^{m}$有几位 那么答案就是$m * \log_{2}10$ Problem 1002 这道题的关键就是求出每个字母的价值。 那么我们对所有出现过的字母进行排序,排在越前面的字母价值越大。 那么关键字是什么呢? 令a[ch][N]表示字母ch对整个答案的贡献 阅读全文
posted @ 2017-08-27 11:03 cxhscst2 阅读(264) 评论(0) 推荐(0)
摘要:题目链接 Valid Sets 题目要求我们在一棵树上计符合条件的连通块的个数。 满足该连通块内,点的权值极差小于等于d 树的点数满足 n <= 2000 首先我们先不管这个限制条件,也就是先考虑d为正无穷大的时候的情况。 我们要求出树上所有连通块的个数。 这个时候我们令f[i]为以i为根的子树中的 阅读全文
posted @ 2017-08-23 16:24 cxhscst2 阅读(374) 评论(0) 推荐(0)
摘要:题目链接 Restaurant 题目意思就是在$n$个区间内选出尽可能多的区间,使得这些区间互不相交。 我们先对这$n$个区间去重。 假如有两个区间$[l1, r1],[l2, r2]$ 若满足$l1 >= l2$且 $r1 <= r2$,那么$[l2, r2]$就是可以被去掉的。 因为这两个区间里 阅读全文
posted @ 2017-08-23 16:07 cxhscst2 阅读(239) 评论(0) 推荐(0)
摘要:题目链接 Drazil and Park 中文题面 传送门 如果他选择了x和y,那么他消耗的能量为dx + dx + 1 + ... + dy - 1 + 2 * (hx + hy). 把这个式子写成这个形式 (d1 + d2 + ... + dy - 1 + 2 * hy) + (2 * hx - 阅读全文
posted @ 2017-08-23 15:39 cxhscst2 阅读(294) 评论(0) 推荐(0)
摘要:题目链接 LOJ6165 题目意思其实就是求LCM(1, 2, 3, ..., n) 直接用线性筛求出1到1e8之间的所有质数 然后对于每个质数p,他对答案的贡献为$p^{i}$ 其中$p^{i}$小于等于n且要最大。 c数组可能很大,所以我开了bitset... 阅读全文
posted @ 2017-08-23 15:05 cxhscst2 阅读(345) 评论(0) 推荐(0)
摘要:题目链接 楼房重建 解题思路:我们可以把楼房的最高点的斜率计算出来。那么问题就转化成了实时查询x的个数,满足数列x的左边没有大于等于x的数。 我们可以用线段树维护 设t[i]为如果只看这个区间,可以看到的楼房数量有多少。 f[i]为这个区间的x的最大值 更新的时候我们递归讨论。 计算t[i]时,区间 阅读全文
posted @ 2017-08-16 15:14 cxhscst2 阅读(173) 评论(0) 推荐(0)
摘要:题目链接 The Bakery 题目大意:目标是把$n$个数分成$k$组,每个组的值为这个组内不同的数的个数,求$k$个组的值的和的最大值。 题目分析: 这道题我的解法可能和大众解法不太一样……我用主席树求$ask(l, r)$——$l$到$r$之间有多少个不同的数。 然后就是$DP$了。 这道题的 阅读全文
posted @ 2017-08-14 21:47 cxhscst2 阅读(300) 评论(0) 推荐(0)
摘要:题目链接 Vanya and Brackets 题目大意是给出一个只由1-9的数、乘号和加号组成的表达式,若要在这个表达式中加上一对括号,求加上括号的表达式的最大值。 我们发现,左括号的位置肯定是最左端或者某个乘号右边,右括号的位置肯定是最右段或者某个乘号左边。 而乘号最多只有15个,那么暴力枚举就 阅读全文
posted @ 2017-08-14 21:40 cxhscst2 阅读(196) 评论(0) 推荐(0)
摘要:题目链接 Gold miner 目标是要在规定时间内获得的价值总和要尽可能大。 我们先用并查集把斜率相同的物品分在同一个组。 这些组里的物品按照y坐标的大小升序排序。 如果组内的一个物品被选取了,那该组排在他前面的所有物品肯定被选取了。 那么我们对每个组的所有物品,对价值和代价分别求前缀和。 那么选 阅读全文
posted @ 2017-08-14 21:32 cxhscst2 阅读(198) 评论(0) 推荐(0)
摘要:题目链接 Matrix multiplication 求矩阵A和B相乘的结果。 因为答案只要对3取模,所以我们可以通过一些方法来加速计算。 我们对两个矩阵各开两个bitset,分别存储模3余1和模3余2的数。 然后相乘的时候and一下就好了。 c[i][j] = f(a_one[i] & b_one 阅读全文
posted @ 2017-08-14 21:22 cxhscst2 阅读(179) 评论(0) 推荐(0)
摘要:题目链接 Permutation 题目大意:给出n,和m个关系,每个关系为ai必须排在bi的前面,求符合要求的n的全排列的个数。 数据规模为n <= 40,m <= 20。 直接状压DP空间肯定是不够的。 考虑到m <= 20,说明每个连通块的大小不超过21。 那么我们分别对每个连通块求方案数,并且 阅读全文
posted @ 2017-08-14 21:14 cxhscst2 阅读(405) 评论(0) 推荐(0)
摘要:题目链接 字符串折叠 区间DP。$f[l][r]$为字符串在区间l到r的最小值 正常情况下 $f[l][r] = min(f[l][r], f[l][l+k-1]+f[l+k][r]);$ 当$l$到$r$以$k$为周期时 $f[l][r] = min(f[l][r], 2+sz(k)+f[l][l 阅读全文
posted @ 2017-08-01 22:57 cxhscst2 阅读(247) 评论(0) 推荐(0)
摘要:题目链接 pog loves szh III 题意就是 求一个区间所有点的$LCA$。 我们把$1$到$n$的$DFS$序全部求出来……然后设$i$的$DFS$序为$c[i]$,$pc[i]$为$c[i]$的反函数。 区间的$LCA$其实就是,$DFS$序最大和最小的两个点的$LCA$。 (话说$2 阅读全文
posted @ 2017-08-01 20:34 cxhscst2 阅读(275) 评论(0) 推荐(0)