自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

青竹梦

青色的竹子,紫色的梦

  • 博客(26)
  • 资源 (2)
  • 收藏
  • 关注

原创 rqnoj-429词链-字典树

不晓得字典树的问题怎么跑到动态规划上了。。。裸字典树,传递当前字典路上的数量#include#include#include#include#define maxn 51*10000using namespace std;struct list{ int id; int num; struct list *next[27];}*root;int m

2013-11-29 17:15:24 1198

原创 rqnoj-413-递增序列-dp

dp[i][j]: 从1到i这一段,有j个逗号,最后一个逗号的位置。dp[i][j]=max(dp[k][j-1]),k#include#include#include#includeusing namespace std;char str[101];int num[101];int dp[101][101];int bijiao(int x,int y,int xx,in

2013-11-29 16:40:19 992

原创 cf-Round #215 (Div. 1) -B - Sereja ans Anagrams

昨晚上状态真的很不好,A题一个水题竟然把数组开错了。。。B题也是水题一个,开数组,遍历P。可以把数组a看成p个单链。第一个链:1,1+p,1+2p,......,1+(m-1)p第   i个链:i,i+p,i+2*p,i+3*p....i+(m-1)*p;这样每一个链从头往后扫,若扫到合适的情况,就记录下来。其中要把b数组离散,然后二分查找a数组中的元素在b中的位置。#

2013-11-27 09:35:21 1327

原创 cf-Round #214 (Div. 2)-D-Dima and Trap Graph-dfs+二分

遍历下界,二分上届。dfs是否合适。#include#include#include#includeusing namespace std;#define INF 99999999#define maxn 4001struct list{ int u; int v; int next; int l; int r;}node[maxn*4

2013-11-26 16:55:12 1235

原创 cf-366C-Dima and Salad

把问题重新定义为c=a-b*k;寻找一系列c为0的时候a最大的值。因为c可正可负。所以把c正的01背包一次。把c负的01背包一次。当二者相等的时候,把a相加,取最大值。#include#include#include#includeusing namespace std;#define INF 99999999int n,k,i,j;int num[101];

2013-11-26 09:38:01 1915

原创 二进制的简单运用

把右边连续的1变为0 ---------> x&(x+1)把右边连续的0变为1---------->x | (x- 1)                       取右边连续的1------------------>(x^(x+1))>>1 去掉右边第一个1的左边------>x&(x^(x-1)) 判断二进制中的1的个数是偶数个还是奇数个int have_jo(

2013-11-23 21:27:55 1829

原创 cf-279E - Beautiful Decomposition-贪心

对于一串二进制。若当前的值的情况是010,那么直接+1;若当前值的情况是01...1(1的个数大于等于2)0,那么相当于最后一位变为1,然后减去第一个1;#include#include#include#includeusing namespace std;#define maxn 2000010int maps[501][501];int xx[5]={1,0,-1,0

2013-11-23 20:52:37 1736

原创 cf-279D - The Minimum Number of Variables-数位dp

数位dp没学好~~假如每一个数放在一个空箱里。状态10010代表目前第2个数和第5个数在空箱里。dp[i]:i状态最少需要几个空箱。dp[i]:所有i状态的子状态最小需要的空箱数。dp[1]=1;#include#include#include#includeusing namespace std;#define maxn 24int a[maxn];int

2013-11-23 20:46:48 997

原创 cf-364B-Free Market

赤裸裸的推结论啊有没有。。如果能拿到当前值,那么与当前值差值不超过d的值可以拿到。dp求解那些值可以拿到。然后每次拿最大值即可。#include#include#include#includeusing namespace std;int dp[550000];int main(){ int n,k,i,a,sum,j; while(~scanf("%d%

2013-11-23 20:41:46 1437

原创 cf-213-div1-A. Matrix

当时比赛的时候弱爆了,当时只往求数组和上想了,没有想到这个问题的本质。做法:题目相当于就是取两节子字符串,然后把这两节子字符串的和相乘等于a。ns[i]:  子字符串的和等于i的子字符串的个数。#include#include#include#includeusing namespace std;#define ll __int64ll num[4040];ll

2013-11-20 16:27:32 1650

原创 rqnoj-412-POWER-区域动归

这个题目真的做的很惆怅。拿到题目第一眼就知道是一个裸的区域动归。但是不晓得状态怎么转移。一开始想的是状态表示的是当前范围内消耗的最小能量。但是后来一想不行。于是才把状态表示为全局的消耗最小的能量。dp[i][j][0]:在i到j范围内的灯都被点亮了,最后停在了j上,此时全局消耗的最小的能量dp[i][j][1]:在i到j范围内的灯都被点亮了,最后停在了i上,此时全局消耗的最小的

2013-11-19 18:47:28 1305

原创 rqnoj-396-SY学语文-dp

纯动态规划。注意初始化为-INF#include#include#include#include#define INF 99999999#define max3(a,b,c) max(max(a,b),c)using namespace std;int n,m,i,j;int map[1010][1010];int dp[1010][1010];int main(){

2013-11-17 17:25:53 849

原创 rqnoj-390-地震了!-动态规划

一步步的往前走,判断当前状态与上一个状态的关闭。注意,题目输入的楼层的速度是从小到大,而实际运用的楼层顺序是从大到小。。#include#include#include#include#define max3(a,b,c) max(max(a,b),c)using namespace std;int dp[110][221];int b[10010];int main()

2013-11-17 17:06:46 1068

原创 rqnoj-356-mty的格斗-二维背包

二维背包问题,注意初始化和状态转移。#include#include#include#includeusing namespace std;#define INF 99999999int a,b;int dp[110][110];int main(){ int n,m,p,i,j,k; while(~scanf("%d%d%d",&n,&m,&p))

2013-11-17 16:19:25 1091

原创 如何快速取得一个二进制状态的所有子状态

int main(){ int s; while(cin>>s) { print(s); for(int i=s; i>=0; i=(i>0?(i-1)&s:-1)) { print(i); } } return 0;}代码中的i表示的是所有s中为0,i中也为0

2013-11-17 15:51:14 1719

原创 cf-362C-Insertion Sort

题意:已知一个无序的序列,使用冒泡排序对其进行排序,需要进行一定的SWAP()操作次数。现在,让你从这个序列任意选择两个数进行交换,交换后再进行冒泡排序,使得交换后进行的冒泡排序中SWAP的操作尽可能的少。样例1解析:4 0 3 1 2进行冒泡排序需要进行6次SWAP操作。如果交换4,2,那么2 0 3 1 4只需要进行3次SWAP操作。交换4,1,那么1 0 3 4

2013-11-15 16:14:18 1946

原创 rqnoj-342-最不听话的机器人-dp

dp[i][j][k][[l]: 执行第i步,执行到点(j,k),方向为l时,用的最大步数。状态转移根据step[i]转移。#include#include#include#include#define INF 99999999using namespace std;int xx[4]={1,0,-1,0};int yy[4]={0,-1,0,1};int dp[2][11

2013-11-14 16:29:35 1293

原创 rqnoj-329-刘翔!加油!-二维背包

注意排除干扰项。因为价值不会相等,所以价值的多少与本题没有任何关系,。所以价值为干扰项,所以不用考虑。二维背包,简单求解。#include#include#include#include#define INF 99999999int dp[110][110];using namespace std;int main(){ int n,m,ts,i,j,k,v

2013-11-14 15:00:09 1048

原创 rqnoj-314-[NOIP2000]方格取数-多线程dp

多线程dp;同时计算两条路的最大值。按对角线划分阶段,共计2n-1个阶段。f[i][x][y]第i个阶段,两条路分别走到x和y点的最大值枚举x点的上两个点的,y点的上两个点,共分析上一阶段的4个f()值,取其最大。如果x=y,只加一次该点的值。如果x#include#include#include#include#define max4(a,

2013-11-13 17:53:47 3500

原创 rqnoj-285-麻烦的聚餐-dp

很好写的状态转移方程。dp[i][j]=dp[i-1][k];#include#include#include#includeusing namespace std;#define maxn 30030#define INF 9999999int dp[maxn][3];int dps[maxn][3];int a[maxn];int main(){ int

2013-11-13 15:39:10 1115

原创 rqnoj-279-是时候说了-背包

0 1背包问题的拓展。注意有一个封顶值为100;在判断边界条件时,0可取,100不可取。#include#include#include#includeusing namespace std;#define maxn 110#define INF 9999999int dp[110];int l[101];int g[101];int main(){ in

2013-11-13 15:07:08 948

原创 rqnoj-275-FOLDING-记忆化搜索

记忆化搜索很简单,就是用的时候老是想不到~~无奈的感觉~~~dp[l][r] :l到r这一段中的最小表示方法。#include#include#include#include#include#include#include#include#include#define INT_MAX 0x7fffffff#define maxn 101#define max3(a

2013-11-10 21:04:27 775

原创 rqnoj-273-马棚问题-dp

dp[i][j]: 从0到i匹马,住进j个马棚里,最小的不愉快系数。num[i][j]: 把第i匹马到第j匹马放进一个马棚里,产生的不愉快系数dp[i][j]=min(dp[i][j],dp[ii][j-1]+num[ii+1][i]);时间复杂度:n*n*k#include#include#include#include#includeusing namespa

2013-11-09 16:22:00 1160

原创 rqnoj-242-大地的秘密-最长上升子序列

最长上升子序列的长度即为不需要调整的数字的个数。求最长上升子序列用O(n*log(n))算法、#include#include#include#include#includeusing namespace std;#define maxn 100010int vis[maxn];int num[maxn];int n;int nums;int ins[maxn];

2013-11-09 14:35:40 1358

原创 rqnoj-231- 我爱面包 -dp

就是从后往前搜,一个前指针st,一个后指针ed;如果后指针ed往后走的过程中出现了可以吃的面包序列。那么就把st指针尽量的往后走。这过程中出现的最优值即是答案。#include#include#include#include#includeusing namespace std;#define INF 9999999#define maxn 1000011int

2013-11-09 13:09:50 888

原创 rqnoj-225-书本整理-逆向思维dp

逆向思维。题目要求拿走k本书,那么就求从中拿n-k本书。dp[i][j]:代表拿第i本书,从前i中拿k本书,最小的整齐度。num[i]: 第i本书的高度。dp[i][j]=dp[0...i-1][j-1]+|num[i]-num[j]|;#include#include#include#include#includeusing namespace std;#de

2013-11-07 13:37:24 951

zookeeper的设计原理及应用

该文件详细的介绍了zookeeper的设计原理,主要对选举和事务进行说明。还列举了一些应用场景,值得一看

2018-03-22

空空如也

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

TA关注的人

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