2014年11月9日
摘要: 思路:首先 他是对1到k 元素做一次变换,然后对2到k+1个元素做一次变化。。。。依次做完。 如果我们对1到k个元素做完一次变换后,把整个数组循环左移一个。那么第二次还是对1 到 k个元素做和第一次一样的变换,再左移,再对1 到 k个元素做和第一次一样的变换,依次做完n-k+1即可。 假设题... 阅读全文
posted @ 2014-11-09 15:09 L_Ecry 阅读(414) 评论(0) 推荐(0) 编辑
  2014年11月4日
摘要: 后缀数组,看到网上很多题解都是单调栈,这里提供一个不是单调栈的做法,首先将两个串 连接起来求height 求完之后按height值从大往小合并。 height值代表的是 sa[i]和sa[i-1] 的公共前缀长度,那么每次合并就是合并 i和i-1 那么在合并小的时候公共前缀更大的肯定已经都合并在一... 阅读全文
posted @ 2014-11-04 09:42 L_Ecry 阅读(256) 评论(0) 推荐(0) 编辑
  2014年9月17日
摘要: 思路:广搜, 因为空格加上动物最多只有32个那么对这32个进行编号,就能可以用一个数字来表示状态了,因为只有 ‘P’ 'S' 'M' '.' 那么就可以用4进制刚好可以用64位表示。接下去每次就是模拟了。 注意: ‘S’ 不是只有一个。 一个东西如果不是'P'在动的话要先判断周围有没有‘P... 阅读全文
posted @ 2014-09-17 09:31 L_Ecry 阅读(943) 评论(0) 推荐(0) 编辑
  2014年9月8日
摘要: 思路: 将4个串每个串都反向这样得到新的四个串一共8个串,对于母串每个位置检测这个串能不能放进去,hs或者后缀数组都可以。然后dp[i][j] (0#include#include#include#include#include#include#include#include#include#inc... 阅读全文
posted @ 2014-09-08 10:17 L_Ecry 阅读(360) 评论(0) 推荐(0) 编辑
  2014年8月14日
摘要: 思路: 只有速度最大才有可能为1,速度不是最大肯定为0,那么就是 只需要操作那些速度最大的点,这些点求一个凸包,判断一下是不是在凸包边上即可。有几个需要注意的地方:1.最大速度如果为0 那么肯定所有都不行。2.如果最大速度有重点那么 也都不行。3.有些求凸包模板求出来的凸包可能有重点,要去重再求。... 阅读全文
posted @ 2014-08-14 22:45 L_Ecry 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 思路 如果进制为p 那么当x#include#include#include#include#include using namespace std;int ans[510];bool bo[510];int a[510][1020];inline int ReadInt()//优化接受int数... 阅读全文
posted @ 2014-08-14 22:08 L_Ecry 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 思路:根据出发时间把点往速度反方向移动 t*v的 的距离这样就可以当成 全部点一起出发,再把y轴上的点固定不动相当于x轴的点向(-v2,v1)方向移动 。可以把所有点映射到x轴上进行统计即可(要记住同一类型的点事不能相互看到的。因为出发时间不同,就算在x轴上有相同映射点也一样)任务就是 统计每个点能... 阅读全文
posted @ 2014-08-14 10:02 L_Ecry 阅读(454) 评论(0) 推荐(0) 编辑
  2014年8月12日
摘要: 思路: ans[n]= ans[n-1] + { (n,1),(n,2).....(n,n)} 现在任务 是 计算 { (n,1),(n,2).....(n,n)}(k=n的任意因子) 很明显 所有能取的k均为n的因子可以 sqrt(n) 内枚举。 若 p 为n的因子 那么 d(n,p) =p*... 阅读全文
posted @ 2014-08-12 23:57 L_Ecry 阅读(289) 评论(0) 推荐(0) 编辑
摘要: 思路:先枚举 a*bas +b = n 求出 bas 在sqrt(n)到n的 (bas>a&&bas>b) 再枚举 a*bas*bas+b*bas+c =n 求出bas 在 n^(1/3) 到sqrt(n)的 (bas >a&&bas>b&&bas>c) 上面 a b c 均只有 3 4 ... 阅读全文
posted @ 2014-08-12 20:47 L_Ecry 阅读(299) 评论(0) 推荐(0) 编辑
摘要: 思路:将行列离散化,那么就可以用vector 存下10W个点 ,对于交换操作 只需要将行列独立分开标记就行 。r[i] 表示第 i 行存的是 原先的哪行 c[j] 表示 第 j 列 存的是原先的哪列。 查询只需要一个二分即可。#include #include#include#includ... 阅读全文
posted @ 2014-08-12 19:50 L_Ecry 阅读(313) 评论(0) 推荐(0) 编辑