05 2016 档案

摘要:排序。随便加点优化就能过。 阅读全文
posted @ 2016-05-31 19:09 Fighting_Heart 编辑
摘要:数位DP。dp[i][j]表示i位,最高位为j的情况下总共有多少1. 阅读全文
posted @ 2016-05-25 16:00 Fighting_Heart 编辑
摘要:先对序列排序,然后枚举较小值,二分较大值。 阅读全文
posted @ 2016-05-25 14:46 Fighting_Heart 编辑
摘要:最长公共子序列变形。 阅读全文
posted @ 2016-05-25 14:38 Fighting_Heart 编辑
摘要:处理一下前缀和。 阅读全文
posted @ 2016-05-25 14:38 Fighting_Heart 编辑
摘要:简单题。构造出二叉搜索树,然后check一下。 阅读全文
posted @ 2016-05-25 14:36 Fighting_Heart 编辑
摘要:map会超时,二分吧... 阅读全文
posted @ 2016-05-23 22:44 Fighting_Heart 编辑
摘要:注意前导零的消去。 阅读全文
posted @ 2016-05-23 18:10 Fighting_Heart 编辑
摘要:暴力。 阅读全文
posted @ 2016-05-23 11:00 Fighting_Heart 编辑
摘要:枚举起点 二分终点 树状数组check 阅读全文
posted @ 2016-05-23 10:59 Fighting_Heart 编辑
摘要:c(n+m-4,m-2) 阅读全文
posted @ 2016-05-23 10:58 Fighting_Heart 编辑
摘要:拓扑排序。 阅读全文
posted @ 2016-05-23 10:55 Fighting_Heart 编辑
摘要:递归地计算就可以。 阅读全文
posted @ 2016-05-23 10:54 Fighting_Heart 编辑
摘要:dfs序+线段树。 用线段树维护从根节点到每一个节点的距离。 修改操作就是x子树对应区间加上一个值。 查询操作就是查询x子树对应区间的最大值。 阅读全文
posted @ 2016-05-23 10:53 Fighting_Heart 编辑
摘要:状态压缩DP。 dp[i][j]表示前cnt个位置放了i状态的那些数字,cnt位置放的是j这个数字的最大价值。其中cnt为i二进制中1的个数。 阅读全文
posted @ 2016-05-23 10:48 Fighting_Heart 编辑
摘要:矩阵快速幂 a[i]=a[i-1]*10+x; 问a[m]%k是否等于c 阅读全文
posted @ 2016-05-23 10:46 Fighting_Heart 编辑
摘要:贪心。注意x=0处没有加油站的情况。 阅读全文
posted @ 2016-05-21 21:31 Fighting_Heart 编辑
摘要:简单题,不过数据中好像存在有环的链表...... 阅读全文
posted @ 2016-05-20 16:40 Fighting_Heart 编辑
摘要:先处理出最短路上的边。变成一个DAG,然后在DAG上进行DFS。 阅读全文
posted @ 2016-05-19 20:23 Fighting_Heart 编辑
摘要:scanf读入居然会超时...用了一下输入挂才AC... 阅读全文
posted @ 2016-05-19 20:09 Fighting_Heart 编辑
摘要:时间卡的比较死,用string会超时。 阅读全文
posted @ 2016-05-19 19:43 Fighting_Heart 编辑
摘要:情况比较多的模拟题。 交了50发的样子才AC......AC之后我的天空星星都亮了。 阅读全文
posted @ 2016-05-19 08:48 Fighting_Heart 编辑
摘要:手动模拟加法高精度。 注意:如果输入数字的就是回文,这个时候输出0步。 阅读全文
posted @ 2016-05-17 21:21 Fighting_Heart 编辑
摘要:手动模拟一下高精度加法。 阅读全文
posted @ 2016-05-17 21:03 Fighting_Heart 编辑
摘要:简单模拟题。 写的时候注意一些小优化,小心TLE。 阅读全文
posted @ 2016-05-17 20:39 Fighting_Heart 编辑
摘要:先并查集判断连通性,然后暴力每个点作为根节点判即可。 阅读全文
posted @ 2016-05-16 22:38 Fighting_Heart 编辑
摘要:递归建树,然后BFS一下 阅读全文
posted @ 2016-05-16 20:46 Fighting_Heart 编辑
摘要:先找出可能在最短路上的边,图变成了一个DAG,然后在新图上DFS求答案就可以了。 阅读全文
posted @ 2016-05-16 18:20 Fighting_Heart 编辑
摘要:简单模拟题。 阅读全文
posted @ 2016-05-16 12:09 Fighting_Heart 编辑
摘要:并查集判断连通性。 阅读全文
posted @ 2016-05-16 09:34 Fighting_Heart 编辑
摘要:简单排序题。 注意:分数相同的人排名相同。 阅读全文
posted @ 2016-05-16 09:19 Fighting_Heart 编辑
摘要:撸完这题,感觉被掏空。 由于进制可能大的飞起。。所以需要开longlong存,答案可以二分得到。 进制很大,导致转换成10进制的时候可能爆long long,在二分的时候,如果溢出了,那么上界=mid-1 阅读全文
posted @ 2016-05-16 08:32 Fighting_Heart 编辑
摘要:简单模拟。 注意a[i]==a[i-1]的情况。 阅读全文
posted @ 2016-05-15 20:48 Fighting_Heart 编辑
摘要:简单DP。 注意:If all the K numbers are negative, then its maximum sum is defined to be 0, and you are supposed to output the first and the last numbers of 阅读全文
posted @ 2016-05-15 20:34 Fighting_Heart 编辑
摘要:为0的不要输出。 阅读全文
posted @ 2016-05-15 19:55 Fighting_Heart 编辑
摘要:最短路+dfs 先找出可能在最短路上的边,这些边会构成一个DAG,然后在这个DAG上dfs一次就可以得到两个答案了。 也可以对DAG进行拓扑排序,然后DP求解。 阅读全文
posted @ 2016-05-15 19:54 Fighting_Heart 编辑
摘要:简单模拟题,耐心写就能过。 阅读全文
posted @ 2016-05-15 10:00 Fighting_Heart 编辑
摘要:字典树。 插入的时候update一下节点出现的次数。 delete的时候,先把前缀之后的全删了。然后看前缀最后一个节点出现了几次,然后前缀上每个节点的次数都减去这个次数。 前缀从上到下再检查一遍,如果出现了次数为0的节点,也删去。 阅读全文
posted @ 2016-05-15 09:58 Fighting_Heart 编辑
摘要:排个序,map直接搞。 阅读全文
posted @ 2016-05-15 09:58 Fighting_Heart 编辑
摘要:规律题,斐波那契数列,数据有毒,0的时候输出换行。会爆longlong,写个大数模板或者Java搞。 阅读全文
posted @ 2016-05-15 09:55 Fighting_Heart 编辑
摘要:保存前缀乘,询问的时候输出c[ri]/c[li-1]即可,因为是除法,所以计算一下c[li-1]的逆元。 阅读全文
posted @ 2016-05-15 09:53 Fighting_Heart 编辑
摘要:爆搜。 阅读全文
posted @ 2016-05-13 21:11 Fighting_Heart 编辑
摘要:网络流。 原点到偶数连边,容量为2, 奇数到汇点连边,容量为2, 偶数到与之能凑成素数的奇数连边,容量为1 如果奇数个数不等于偶数个数,输出不可能 如果原点到偶数的边不满流,输出不可能 剩下的情况有解:因为一个偶数点选了两个奇数点,一个奇数点被两个偶数点选择,一定能构造出环。 阅读全文
posted @ 2016-05-12 14:19 Fighting_Heart 编辑
摘要:贪心观察+DP决策。 首先需要观察到一个结论:分割后的每一段肯定是单调增或者单调减的。 然后可以根据dp来决策如何分割价值最多。 dp[i][0]表示放完第i个,最后一段是递减的情况下的最大价值 dp[i][1]表示放完第i个,最后一段是递增的情况下的最大价值 阅读全文
posted @ 2016-05-12 10:33 Fighting_Heart 编辑
摘要:矩阵快速幂。 设ai表示涂完i块之后,红绿均为偶数的方案数 设bi表示涂完i块之后,红为偶数的方案数 设ci表示涂完i块之后,绿为偶数的方案数 设di表示涂完i块之后,都不是偶数的方案数 ai+1=ai+ai+bi+ci bi+1=ai+2*bi+di ci+1=ai+2*ci+di di+1=bi 阅读全文
posted @ 2016-05-11 19:47 Fighting_Heart 编辑
摘要:写出前几个找规律,然后直接输出。 阅读全文
posted @ 2016-05-11 16:37 Fighting_Heart 编辑
摘要:给出n个点,求任意两点间距离的平方和。 暴力显然超时,可以把公式写出来,化简一下,发现预处理一下后缀和就可以o(n)出解了。 阅读全文
posted @ 2016-05-11 14:38 Fighting_Heart 编辑
摘要:这题可以o(1)推出公式,也可以二分答案+验证。 阅读全文
posted @ 2016-05-09 14:16 Fighting_Heart 编辑
摘要:构造题。 答案可以o(n)构造出来。首先要发现规律。只有01交替的串才可能变化,变化规律如下: 1开头,长度为偶数(0结尾):变(len-2)/2次 变完后 前半1 后半01开头,长度为奇数(1结尾):变(len-1)/2次 变完后 全为10开头,长度为偶数(1结尾):变(len-2)/2次 变完后 阅读全文
posted @ 2016-05-09 10:14 Fighting_Heart 编辑
摘要:先把没用的边去掉,求出包含m个点的最小树。然后求出最小树的直径就可以得到答案了。 阅读全文
posted @ 2016-05-08 21:39 Fighting_Heart 编辑
摘要:状压DP。 dp[i][j]表示前i头牛选完,状态j中为1的篮子选完的方案数。 阅读全文
posted @ 2016-05-08 17:25 Fighting_Heart 编辑
摘要:公倍数之间的情况都是一样的,有循环节。 注意min(a,b)>t的情况和最后一段的处理。C++写可能爆longlong,直接Java搞吧...... 阅读全文
posted @ 2016-05-08 12:09 Fighting_Heart 编辑
摘要:简单暴力模拟。 阅读全文
posted @ 2016-05-08 09:53 Fighting_Heart 编辑
摘要:暴力。 阅读全文
posted @ 2016-05-07 20:56 Fighting_Heart 编辑
摘要:规律题,多画几个就能找到规律了。 阅读全文
posted @ 2016-05-07 20:56 Fighting_Heart 编辑
摘要:计算出每条线段在x1处的y坐标和x2处的y坐标。 就下来只要根据每条线段左右两处的y坐标就可以判断是否有交点。 阅读全文
posted @ 2016-05-07 20:55 Fighting_Heart 编辑
摘要:转换成某区间上被k整除的数字有几个。 处理出每一段有几种,然后乘一下就是答案。 阅读全文
posted @ 2016-05-07 20:53 Fighting_Heart 编辑
摘要:水题。 阅读全文
posted @ 2016-05-07 20:52 Fighting_Heart 编辑
摘要:先对n个点分类,然后按题意要求构造,构造的时候判断这个点的右上方之前是否有点,判断可以用线段树来操作。 阅读全文
posted @ 2016-05-07 20:51 Fighting_Heart 编辑
摘要:简单题,一个一个操作,最后就是答案。 阅读全文
posted @ 2016-05-07 20:50 Fighting_Heart 编辑
摘要:水题。 阅读全文
posted @ 2016-05-07 20:48 Fighting_Heart 编辑
摘要:简单贪心。 阅读全文
posted @ 2016-05-07 20:48 Fighting_Heart 编辑
摘要:区间DP预处理。 dp[i][j][k]表示大小为i*j的巧克力块,切出k块的最小代价。 阅读全文
posted @ 2016-05-07 20:47 Fighting_Heart 编辑
摘要:暴力DFS预处理答案 阅读全文
posted @ 2016-05-07 20:46 Fighting_Heart 编辑
摘要:这题对精度要求很高。用atan2吧。。。 阅读全文
posted @ 2016-05-07 20:45 Fighting_Heart 编辑
摘要:水题。 阅读全文
posted @ 2016-05-07 20:44 Fighting_Heart 编辑
摘要:先推导出公式x*(x+1)(3*y-x+1)=6*n,然后枚举求解。 阅读全文
posted @ 2016-05-07 20:43 Fighting_Heart 编辑
摘要:预处理一下i到n的最小值。 阅读全文
posted @ 2016-05-07 20:42 Fighting_Heart 编辑
摘要:简单题。 阅读全文
posted @ 2016-05-07 20:41 Fighting_Heart 编辑
摘要:水题。每种情况取最小值即可。 阅读全文
posted @ 2016-05-07 20:40 Fighting_Heart 编辑
摘要:状压DP。 阅读全文
posted @ 2016-05-07 19:03 Fighting_Heart 编辑
摘要:莫队算法+离散化+树状数组+二分 阅读全文
posted @ 2016-05-05 08:42 Fighting_Heart 编辑
摘要:简单搜索。记录一下到某个点,朝某个方向的最小转弯次数。 阅读全文
posted @ 2016-05-03 13:08 Fighting_Heart 编辑
摘要:简单贪心。 按分值排序,一个一个取,不能取的对答案就作出了贡献。 阅读全文
posted @ 2016-05-02 16:10 Fighting_Heart 编辑
摘要:DP。 题意明显描述不清! 题意从一个点出发,走到某个点只算一种路线......而我把他当成多种来算了.....敲完样例都过不了,然后开始枚举题意了...发现是只当一种算的。 阅读全文
posted @ 2016-05-02 15:39 Fighting_Heart 编辑
摘要:记录一下第i个放入之后可能分割的情况,然后可以推出放入第i+1个的分割情况。 阅读全文
posted @ 2016-05-02 14:25 Fighting_Heart 编辑
摘要:DP。 槽点满满的题。 1.没有告知人数的范围,导致一开始就想到的dp不敢写。 2.存在人数为0的月份,坑了我好久。 dp[i][j]表示第i个月的工程完工时,有j个人的情况下的最小费用。 阅读全文
posted @ 2016-05-02 13:15 Fighting_Heart 编辑
摘要:这题也是一眼标算..... 先搞一次dfs,把树转换成序列,对每个节点看子树的中位数,也就是看某段区间的中位数,这样就可以主席树求区间第k大值解决。 注意:询问的次数有1000000次,每次去询问会TLE的。注意到询问的种类只有100000种,所以之前询问过的可以0(1)得到,或者直接处理出每一种询 阅读全文
posted @ 2016-05-01 14:39 Fighting_Heart 编辑
摘要:Manacher+二维费用多重背包 二进制优化 这题是一眼标算....先计算出每个长度的回文串有几种,然后用二维费用的多重背包判断是否有解。 多重背包做的时候需要二进制优化。 阅读全文
posted @ 2016-05-01 14:36 Fighting_Heart 编辑
摘要:这题可以打表+二分,也可以直接构造答案输出。 打表+二分不多说了,暴力dfs一下就可以。 构造法: 如果输入的数字位数是奇数,那么输出比他多一位的最小值。例如输入12345,输出444777 剩下的情况都是位数是偶数的: 如果输入的数字比这个位数下能组成的最大值还大,那么输出多两位的最小值。例如,输 阅读全文
posted @ 2016-05-01 14:31 Fighting_Heart 编辑
摘要:1 4 9 16 25 36...... 找一下规律发现,这些数字的差值肯定是奇数或者是4的倍数。 所以,奇数或者是4的倍数输出True(不包括1和4) 阅读全文
posted @ 2016-05-01 14:26 Fighting_Heart 编辑