自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

The life is like a dfs which can not be backtracked

  • 博客(13)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 poj 3977 Subset 枚举+二分

首先分成一半2^17和2^18,并且把其中一半变成相反数,然后枚举一半二分查找另一半,在找到的位置前后也找找。这里用到了二级排序,有很多细节要处理,不多说了。巨坑的一个地方就是,不能用系统的abs,要自己手写,简直坑死。。#include#include#include#includeusing namespace std;typedef long long

2014-05-18 21:53:18 1222

原创 poj Navigating the City 水bfs

感觉题意有点问题,很多情况没解释,我们暂且相信没有那么多其贵

2014-05-17 17:31:27 568

原创 poj 1952 BUY LOW, BUY LOWER 最长下降子序列+统计不重复方案数

dp[i]=max(dp[i],dp[j]+1) ja[i]dp[i]表示长度为i的最长下降子序列的长度。r[i]表示长度为i的最长下降子序列的方案数。考虑这样一个问题,比如6 3 9 3,对于两个3,他们数字一样并且dp值也一样,那么r[2]的方案数是没有意义的因为能通过第一个3扩展的也能通过第二个3扩展,所以直接把r[2]=0。对于一次扩展若dp[j]+1==dp[i],则

2014-05-17 16:07:53 830

原创 ZOJ 3642 最大流

题目很像是有上下界的,因为限定了每个小孩最少分享的信息。后来听YYD大神的解释是,也许一个人可以多次分享同一个,所以下界可以无视。如果是这样,题目就好办了。首先源点向所有人连边,如果不是要求的那个人,边容量就设为他的上界,如果是要求的那个人,边容量就设为无穷,因为他的所有信息都不需要别人共享。人向自己有的信息连边,容量为1信息连向汇点,容量为1.#include#incl

2014-05-16 13:54:06 860

原创 wikioi 1282 约瑟夫问题 线段树

和上一题一样,寻找第K个位置,只不过需要处理一下下一个位置在哪,画图看看就知道了。#include #include #include using namespace std;#define lson l , m , rt << 1#define rson m + 1 , r , rt << 1 | 1const int maxn = 30000+5;int sum[maxn<<

2014-05-15 16:07:20 815

原创 ZOJ 3635 线段树

线段树维护的是区间有多少个空位置,每次查询第X个空位置在哪,sum[rt]>=X就向左区间找,sum[rt]#include #include #include using namespace std;#define lson l , m , rt << 1#define rson m + 1 , r , rt << 1 | 1const int maxn = 55555;int

2014-05-15 14:36:43 753

原创 ZOJ 3684 Destroy 树的中心

中心节点就是树的中心,2遍dfs求到树的直径,而中心一定在直径上,顺着直径找到中心就够了。然后可以一遍树形DP找到最小值或者二分+判断是否访问到叶子节点。#include #include#include#includeusing namespace std;struct node{ int next; int power; int length

2014-05-13 00:02:41 990

原创 wikioi 1225 八数码难题 IDA*

八数码0.0,我又来水博客了。IDA*算法,A*为曼哈顿距离,判重用康拓展开。#include#include#include#include#includeusing namespace std;int a[4][4];int dx[]={0,0,-1,1};int dy[]={-1,1,0,0};char s[]="123804765";int end[4]

2014-05-10 18:59:21 1223

原创 USACO/fence8 迭代加深搜索+剪枝

题目链接迭代加深搜索思想。枚举答案K,考虑到能否切出K个木头,那么我们当然选最小的K个来切。1、对于原材料,我们是首选最大的还是最小的?显然,首选大的能够更容易切出,也更容易得到答案。2、对于目标木头,我们是优先得到最大的还是最小的?显然,由于K个木头我们都要得到,那么当然先把最大的(最难得到的)先得到,这种搜索策略更优。3、假设总原材料为all,前K个木头总和为sum,那

2014-05-09 13:53:38 895

原创 NOIP2008 双栈排序 染色+模拟

挺不错的一道题,首先可以知道若存在形如 k所以对于这样的i,j我们连一条边,然后dfs染色,若染色中发现相邻点颜色相同,则无解,否则我们按照1,2,1,2的顺序染色。确定了每一个数属于哪个栈后,用2个stack模拟一下就好了。#include #include #include #include #include using namespace std;int n,to

2014-05-07 15:09:43 1223

原创 wikioi1174 靶形数独 搜索

#include#include#include#include#includeusing namespace std;struct node{ int x,y; node(int xx,int yy){x=xx;y=yy;}};int score[10][10]={ {6,6,6,6,6,6,6,6,6}, {6,7,7,7,7,7,7,7,6

2014-05-06 22:21:07 770

原创 wikioi 1163 访问艺术馆 树形dp

递归建树,由题知该树是一棵二叉树,且除根节点外其他点的度为0或2。dp[i][j]表示来到第i个走廊(还未走过这条走廊)还剩下j时间,能拿到最大的画的数量。dp[i][j]=max(dp[i][j],dp[lson[i]][k]+dp[rson][last_time-k])#include#includeusing namespace std;int dp[200][70

2014-05-05 01:30:35 1403

原创 wikioi 2144 砝码称重 2 STL_map

看似dp,但是数据太大,不过n很小,可以暴力解决。由于30个数组合情况太多,所以可以分成两边,首先预处理前n/2个数能组成哪些数,并且最小消耗多少砝码,map保存下来。然后处理右边能组合成什么数,相加就够了。注意这样会漏掉两种情况,就是光一边就能组成最终答案的(因为map没有存数也是0),特殊处理一下就行。#include #include #include #inc

2014-05-04 18:45:13 861

Jpcap 64位

Jpcap 64位可用,只包括了.dll和.jar

2015-03-24

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

TA关注的人

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