05 2018 档案

摘要:题目大意: 给你一个 n阶方阵 An,判断它是否满足: 其中n<=2500 题解:两个特判题目中给的比较清楚很简单的可以判定掉 考虑如何构造ai,j<=max(ai,k,ajk) 显然的我们索性让i,j之间连一条ai,j的边 然后跑一遍最大生成树 求出两点之间的最大值,看看是否与给定的ai,j矛盾即 阅读全文
posted @ 2018-05-31 19:33 longint 阅读(227) 评论(0) 推荐(0) 编辑
摘要:题解:显然这是一个无限背包的问题 有一个套路 显然关于a进行排序 我们用dis[i]表示用a[2],a[3]...a[n]构成的最小的值%a[1]==i 然后求解问题就很简单了考虑[l,r]相当于前缀(r)-前缀(l-1)显然一个前缀很好求因为构成的和%a[1]意义下只可能是0~a[1]-1所以枚举 阅读全文
posted @ 2018-05-31 19:21 longint 阅读(95) 评论(0) 推荐(0) 编辑
摘要:题目大意:给定n个数,问有多少子序列使得子序列中的数&起来=0 做法:显然的容斥题目 ans=2^n-1-(至少1位为1-至少两位为1+至少3位为1......) 我们考虑用dp[i]表示包含i这个状态的数有多少个 显然我们可以枚举所有可能的有1的状态 for i=1 to 1e6 do begin 阅读全文
posted @ 2018-05-26 12:34 longint 阅读(137) 评论(0) 推荐(0) 编辑
摘要:题目大意: 给定n个点的一棵树 每次操作随机选任意一个点,把这个点和这个点的子树删去。 当把所有点删去则停止。 问操作次数的期望。 做法: 我是sb,我是sb,我是sb。。。。 这种没有智力的题目都要想这么久,没希望了 显然期望次数=sigma(每个点自己把自己删除的期望) 显然一个点自己把自己删除 阅读全文
posted @ 2018-05-26 11:42 longint 阅读(110) 评论(0) 推荐(0) 编辑
摘要:题目大意: 给你一棵树,根节点为1 有2种操作,第一种是给u节点所在的子树的所有节点的权值+x 第二种是询问,假设v是子树u中的节点,有多少种质数p满足av = p + m·k 做法:维护子树信息显然dfs序,考虑用线段树维护一个区间内有哪些值 每个区间用一个bitset维护 这里有一个小技巧,bi 阅读全文
posted @ 2018-05-13 20:45 longint 阅读(251) 评论(0) 推荐(0) 编辑
摘要:题目大意:给定n个数,有Q次询问,每次询问由两个数l,x组成,表示前缀[1,l]构成的子序列有多少异或起来为x,个数%1e9+7 做法:考虑一个由x个数构成的线性基,如果这个线性基由Y个数构成,可以通过线性基得到z,那么x个数得到z的方案为2^(Y-x),不在线性基中的数随便选 然后就变成斯波题了, 阅读全文
posted @ 2018-05-13 20:37 longint 阅读(342) 评论(0) 推荐(0) 编辑
摘要:随便看了一场以前的bestcoder,然后顺便写了一下,都不码的样子 有中文题面,这里就不写题目大意了 T1. 刚开始想复杂了,T1可能是4道题里面想的最久的 我们大概弄一下就可以发现,如果a[i]>0,并且a[i+1]满足条件,那么s[i]=s[i+1] 所以我们发现其实是一堆相同的弄在一起。 当 阅读全文
posted @ 2018-05-13 20:32 longint 阅读(112) 评论(0) 推荐(0) 编辑
摘要:T1. 大力并查集一下就ok 考试的时候差点把n+1写成n,幸好最后时候检查出来了 T2. 其实是一道傻逼题,考场上最后时候想出来了,但是没有写粗来,来不及了 考虑暴力枚举从哪个点开始 然后进行dfs,用dp[i]表示已经打通的集合状态为i的最小代价 只有在集合中的元素才有dis值 然后暴力进行df 阅读全文
posted @ 2018-05-13 19:57 longint 阅读(383) 评论(0) 推荐(0) 编辑
摘要:Day1 T1.小学奥数。。。 代码: T2:大模拟题,没什么好讲的(我还写的特别麻烦,估计最傻逼的代码) 代码: T3.一看k<=50,很显然的状态就有了 我们考虑用dp[i][j]表示到i这个点浪费了的代价为j,这里浪费的代价可以这么理解:就是到i相比于最短路dis[i]来说长了j,也就是说走了 阅读全文
posted @ 2018-05-13 19:42 longint 阅读(204) 评论(0) 推荐(0) 编辑
摘要:题目大意:给定n个数有正有负,有Q次询问,每次询问区间[l,r]中有几个子区间满足和为k 做法:显然的莫队 每次用map记录一下当前区间[l,r]中的前缀和的值的个数 然后r的话找sum[r]-k的,l找sum[l]+k即可 不过是一道卡常题,不能用map要用unordered_map才能过 代码: 阅读全文
posted @ 2018-05-08 18:30 longint 阅读(388) 评论(0) 推荐(0) 编辑
摘要:做法:考虑对函数进行分块(1-根号n,根号n+1-根号2*n,之类的函数) 我们可以通过差分预处理出每个块中的函数分别对应几个a[i]之和 即sigma(a[i]*k[i])中的系数k[i],然后预处理出每个块的和记为sum[i] 考虑修改操作,显然很简单我们可以直接改一下每个块的sum值 然后考虑 阅读全文
posted @ 2018-05-08 18:26 longint 阅读(156) 评论(0) 推荐(0) 编辑
摘要:做法:我们考虑前缀异或和,修改操作就变成了区间[i,n]都异或x 查询操作就变成了:区间[1,x]中有几个k 显然的分块,每个块打一个tag标记表示这个块中所有的元素都异或了tag[x] 然后处理出这个块中每种数的个数 注意查询的时候零散的块要下放标记 代码: #include<bits/stdc+ 阅读全文
posted @ 2018-05-08 18:20 longint 阅读(229) 评论(0) 推荐(0) 编辑
摘要:题目大意:大厨正在玩一个打怪兽的小游戏。游戏中初始时有 n 只怪兽排成一排,从左到右编号为 0 ∼ n − 1。第 i 只怪兽的初始血量为 hi,当怪兽的血量小于等于 0 时,这只怪兽就挂了。 大厨要进行 q 次操作。每次操作中,大厨会选择两个整数 x 和 y,并向下标 k 满足 k&x = k 的 阅读全文
posted @ 2018-05-07 13:33 longint 阅读(218) 评论(0) 推荐(0) 编辑
摘要:题意:给一棵树,需要给树上的一些节点上色,要求任意节点在距离为k的范围以内至少有一个被染色的点,求方案数。 做法:显然的dp 树形DP。 用f[i][j]表示i的子树中离i最近黑点的距离为j,且距离超过j的点都被满足的方案数。转移时新建一个临时数组tmp保存转移后的f[x]。设y是x的子结点,枚举f 阅读全文
posted @ 2018-05-07 11:00 longint 阅读(134) 评论(0) 推荐(0) 编辑
摘要:题目大意:给定n个数(n<=1000),A和B玩取数游戏,每次只能取两端中的一个数,两个人都希望自己和对方的分差越大越好 A先手,永远按照最优策略来,B比较呆,所以一直取最大的,问A最优情况下能比B多得几分 做法:显然这种题都是dp题,我们用dp[l][r]表示区间[l,r]都取完的情况下A能比B多 阅读全文
posted @ 2018-05-04 08:43 longint 阅读(106) 评论(0) 推荐(0) 编辑
摘要:题目大意:给定n个点,求一条直线最多能经过几个点(n<=1000) 做法:大暴力。。。枚举每一个点作为直线的端点,然后求出剩下n-1个点和它的斜率,斜率相同的说明可以同时在一条直线上 阅读全文
posted @ 2018-05-04 08:37 longint 阅读(111) 评论(0) 推荐(0) 编辑