自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

同学,你听说过DQS吗?

  • 博客(18)
  • 收藏
  • 关注

原创 noip2016

强势翻车,死于太浪。 总结几点经验: 1.一定稳住暴力。 2.保持良好心态。 3.相信玄学力量。

2016-11-28 18:31:30 436

原创 CTSC2014 企鹅QQ Hash模板

#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#define LL unsigned long longusing namespace std;LL Hash[30005];char s[30005][205];int n,L,k;int num(char c){ if(c>='

2016-11-17 07:32:03 465

原创 SCOI 2010 生成字符串 组合数+逆元

计算组合数有许多方法,我先是分解质因数,但是这样效率非常低,1700ms。 然后求逆元,求解,时间复杂度为o(N).这个模数是质数,不用考虑逆元无解情况。#include<iostream>#include<cstdio>#define LL long longusing namespace std;LL K=20100403;LL x,y;void exgcd(LL a,LL b)

2016-11-16 20:15:18 422

原创 NOIP ++RP;

常用算法&技巧:for循环……前缀和,差分数组。倍增,st表。贪心。各种dp。字符串:DP,Hash。二分答案&01分数规划。模拟,线性数据结构应用。搜索+剪枝。分块。并查集。图: 1)无向图-> 最小生成树。 2)有向图-> DAG ->拓扑序 || 环。 3)最短路。树 1)dfs序。 2)灵活运用LCA。 3)路径交。 4)直径重心。 5)左儿子右兄弟

2016-11-16 11:17:52 550 1

原创 迷之错误提醒

1.注意数据处理顺序。 2.多重循环时一定分清i,j,k。 3.注意linux用%lld。 4.dp转移顺序,初始化与边界处理。 5.情况考虑不全,策略需要简单证明。 6.读入x1,y1,x2,y2。 7.注意答案随时%,递推和dp中数组也要随时%. 8.如果合法先统计答案,continue。

2016-11-15 17:06:42 405

原创 洛谷1341 无序字母对 欧拉路

#include<iostream>#include<cstdio>using namespace std;char a[4];int vis[55][55];int f(char s){ if(s>='A'&&s<='Z') return s-'A'+1; return s-'a'+27;}int cd[55];int jd[55],cnt;vo

2016-11-14 17:17:32 544

原创 noip2015 子串 dp

dp[i][j][k]表示A串匹配到第 i 位,B串匹配到第 j 位,分了k组的总方案数。后面再加0/1维表示第i位选或不选。 朴素DP会MLE,所以把第一维滚动起来。 dp[i][j][l][1] = dp[i-1][j-1][l-1][1] + dp[i-1][j-1][l-1][0] + dp[i-1][j-1][l][1]; dp[i][j][l][0] = dp[i-1][j][l]

2016-11-13 15:45:14 503

原创 noip2014 解方程 Hash+数学

f(x)=0 ==> f(x)%p=0。但是f(x)%p=0不能推出f(x)=0。 如果对于许多个不同的p,f(x)%p=0 ,那么可看做f(x)=0; 所以选许多个(3个以上)质数p,f(x)都=0,那么x可以认为就是答案了。 枚举x,O(N)计算f(x)的值,时间复杂度O(N*M); 虽然说只要机子吊,十亿随便跑,但是CCF的算盘对这个复杂度还是很难接受的。 如果f(x)%p!=0,

2016-11-13 08:47:01 792 1

原创 noip2014 飞扬的小鸟 DP

这道题向上是完全背包 dp[i][j+cx[i-1]] = min( dp[i][j]+1 , dp[i][j+cx[i-1]] ). 向下是01背包 dp[i][j] = min ( dp[i][j] , dp[i-1][j+cy[i-1]] ).注意先向上转移。 然后用管子覆盖掉。 然后向后递推点一下的情况dp[i+1][j+cx[i]] = dp[i][j]+1; 时间复杂度n*m;#

2016-11-13 08:35:25 481

原创 noip2013 华容道 bfs+建图

这道题有多次询问,如果每次询问bfs做的话,会TLE。发现询问是在一张图上,所以可以对一些信息预处理。处理dis[x][y][k][h] ,代表x,y这个点的k方向上有空格,它想要走到h方向的最小步数。这东西可以n^2×4×4次bfs预处理。然后状态是dis[x][y][k]。状态之间转移一下,就变成了Spfa。 每次从起点跑到终点,统计下答案。注意数据中有起点终点相同的情况。#include<

2016-11-11 17:32:25 758

原创 noip2012 同余方程 exgcd

exgcd是求ax1+by1=gcd(a,b)的一组解。 ax1+by1 = gcd (a,b) bx2+(a%b) y2 = gcd (b,a%b)=> ax1+by1 = bx2+ (a%b) y2 ∵ a%b 可以写成 a-[a/b]*b => ax1+by1=ay2+b ( x2-[a/b]*y2 )=> x1 = y2 ; y1 = x2-[a/b]*y2

2016-11-09 16:10:29 652

原创 noip2012 开车旅行 set+倍增

因为要快速查找向后跳应该是哪一个点,所以用set,迭代器左右晃一下查找最接近的两个元素(P选手是不是只能用平衡树~)。然后用倍增记录i节点跳2^j步后,A和B分别走的距离。具体的细节和统计答案也需要注意。#include<iostream>#include<cstdio>#include<cmath>#include<set>#include<map>#include<algorithm>

2016-11-09 10:21:07 723

原创 noip2011 观光公交 递推+贪心

考虑一个加速器对答案的影响,如果加速后一个人下车了,那么这个人时间缩短了一秒。所以在没有发生车等人的情况下,每当有一人下车,时间就会缩短一秒。然后各个加速器之间是互不影响的。所以可以贪心。 预处理出每个点可以向后拓展,直到发生车等人的长度。再用前缀和维护一段区间下车的人数。#include<iostream>#include<cstdio>#include<cstring>#include<

2016-11-07 20:46:46 787

原创 Codeforces 365Div2 D Mishka and Interesting sum

http://codeforces.com/problemset/problem/703/D 题意是给一个序列,多次询问一段区间内出现偶数次数的数字的异或和。n,m<100w,时限3.5s。这样好像是卡 莫队n*sqrt(n)做法。可以nlogn做。 input 7 1 2 1 3 3 2 3 5 4 7 4 5 1 3 1 7 1 5 o

2016-11-03 19:25:16 426

原创 洛谷1156 垃圾陷阱 dp

https://www.luogu.org/problem/show?pid=1156 这个题状态有很多种表示方法: 1. f[i]表示堆到i的高度时最大生命值是多少。 堆 f[i+a[j]]=max( f[ i+a[j] ] , f[i] ) ; 吃 f[i]=f[i]+b[j]; 2. bool f[ i ][ j ]表示能否到达 i 高度, j 血量。 然后时间复杂度

2016-11-03 09:38:32 521

原创 洛谷1217 有线电视网 树上dp

状态非常好想,dp[i][j]表示以i为根的子树选j个叶子所能产生的最大价值。 方程不太好写,for(int k=sz[x];k;k--)for(int j=1;j<=sz[v];j++) dp[x][k]=max(dp[x][k],dp[x][k-j]+dp[v][j]-b[i].d);然后放在树上……#include<iostream>#include<cstdio>#defin

2016-11-02 21:17:28 600

原创 zjoi2007棋盘制作 单调栈

和玉蟾宫一模一样。http://blog.csdn.net/loi_a/article/details/52699047#include<cstdio>#include<iostream>#include<stack>#define LL long longusing namespace std;int a[2005][2005];int s[2005][2005];stack<int

2016-11-02 15:13:22 597

原创 noip2003 加分二叉树 dp

中序遍历中,一个节点子树是该点向左右扩展连续的一段。dp[x][l][r]是记录以x为根,l,r为左右端点的子树所产生的最大价值。记忆化搜索做。#include<bits/stdc++.h>#define LL long longusing namespace std;LL dp[35][35][35];LL a[35];int ch[35][35][35][2];LL dfs(int

2016-11-02 14:24:54 605

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除