摘要: 二分答案mid,然后检验是否存在两个相同的mid*mid的正方形检验方法:首先对于每个位置,求出它开始长度为mid的横行的hash值然后对于hash值再求一次竖列的hash值将第二次求出的hash值排序,如果存在两个相同的hash值则可行#include#include#define N 510ty... 阅读全文
posted @ 2015-01-24 21:26 Claris 阅读(469) 评论(0) 推荐(0) 编辑
摘要: 按照顺序依次找到b串每个字母最后的位置,然后求逆序对。#include#define N 1000010int n,i,j,k,g[26],nxt[N],bit[N];char a[N],b[N];long long ans;int main(){ for(scanf("%d",&n),gets(... 阅读全文
posted @ 2015-01-24 17:37 Claris 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 若x到y走k步可行,那么走k+2步也可行以每个点为起点,BFS处理出到每个点走了奇数步、偶数步的最短路对于一次询问,如果d不小于相应奇偶性的最短路,则可行特判:对于孤立点,无论怎么走都不可行#includeconst int N=10010,Q=1000010;int n,m,k,i,j,x,y,z... 阅读全文
posted @ 2015-01-24 17:09 Claris 阅读(436) 评论(0) 推荐(0) 编辑
摘要: BZOJ AC1000题纪念~~~将x到y路径上的点权从小到大排序如果不存在b[i]使得b[i]+b[i+1]>b[i+2]则无解此时b数列增长速度快于斐波那契数列,当达到50项时就会超过int的范围所以暴力查询,如果路径长度达到50就肯定有解,否则暴力排序检验#include#include#de... 阅读全文
posted @ 2015-01-24 13:47 Claris 阅读(367) 评论(0) 推荐(0) 编辑