自定义博客皮肤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

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

原创 hdu 4119 Isabella's Message(模拟)

(i,j)——> (j,n-i+1) 坐标变换公式,从1,1开始。先求出4个字符串,然后改变连接顺序,组成新的4个字符串。然后查找是否全部由单词本中的单词组成。重写一遍就过了,真心不知道当时哪错了。#include#include#include#include#include#include#include#includeusing namespace std;ch

2013-08-30 18:34:48 1294 2

原创 28.uva 10891 Game of Sum 记忆化dp

这题和上次的通化邀请赛的那题一样,而且还是简化版本。。。那题的题解      请戳这里dp。。。#include#include#include#includeusing namespace std;#define INF 0x3f3f3f3fint dp[105][105];int a[105];int sum,n;int pre_sum[105],next_sum

2013-08-29 20:49:00 823

原创 UVA 11729 Commando War

根据任务时间从大到小排序,保存当前士兵以后能够和其他人共同进行的时间。求出差的最大值,加上交代每个士兵任务这个必须时间就是答案。#include#include#include#includeusing namespace std;struct node{int x,y;}man[1005];int last[1005];bool cmp(const node &a,const

2013-08-29 10:47:06 657

原创 两个好玩的C语言程序

1.写一个c语言程序,输出hello,删掉代码的第一个字符,输出world。2.写一个c语言程序,输出hello,删掉代码的最后一个字符,输出world。想了一会,写出了这两个代码,哈哈,再次膜拜一下c语言的语法。Think time。。。。。。

2013-08-28 20:29:54 5677 5

原创 hdu 4090 GemAnd Prince dfs+bfs+最优性剪枝

思路,dfs搜索,最优性剪枝。个人被坑很久的地方就是枚举格子的时候,应该是枚举整个八连快,不然的话一定超时。代码有点丑,将就一下吧。。。#include#include#include#include#include#include#include#include#include#includeusing namespace std;int a[10][10];

2013-08-27 23:40:13 1168

原创 hdu 4619 Warm up 2

明明是经典的行列覆盖模型,居然没想到二分图匹配。为毛这么弱!!横竖有相连的就连一条边,最小覆盖点就是最大匹配,总数减去最小覆盖点就是答案。#include#include#includeusing namespace std;struct node1{ int x,y;}heng[1005];struct node2{ int x,y;}shu[100

2013-08-26 00:08:43 844

原创 hdu 4620 Fruit Ninja Extreme(状压+dfs剪枝)

对t进行从小到大排序(要记录ID),然后直接dfs。剪枝的话,利用A*的思想,假设之后的全部连击也不能得到更优解。因为要回溯,而且由于每次cut 的数目不会超过10,所以需要回溯的下标可以利用一个二进制保存。由于cut最多30个,所以方案也可以用一个二进制保存。#include#include#include#include#includeusing namespace

2013-08-25 19:00:23 1088

原创 poj 1330 Nearest Common Ancestors (LCA) tarjan离线算法

LCA问题,利用并查集和dfs寻找最近公共祖先,挺好理解的。tarjan算法#include#include#include#include#includeusing namespace std;#define N 10005bool root[N];int x,y;bool v[N];int set[N],ans[N],n;int num,to[N],head[N]

2013-08-24 20:20:18 930

原创 2013 吉林通化邀请赛 Tutor 有点坑的水题

计算12个数的和的平均数。四舍五入,不能有后导0。我的做法是,将答案算出后,乘以1000,然后看个位是否大于等于5,判断是否要进位……#include#include#include#include#includeusing namespace std;#define eps 1e-2int main(){ int cas; scanf("%

2013-08-24 16:54:26 1001

原创 2013 吉林通化邀请赛 D-City 离线型的并查集

题意:给定n个点和m条边,问你拆掉前i条边后,整个图的连同城市的数量。i从1到m。思路:计算连通的城市,很容易想到并查集,但是题目里是拆边,所以我们可以反向去做。存下拆边的信息,从后往前建边。#include #include#include#includeusing namespace std;struct node{ int a,b;}Q[100005];

2013-08-24 16:49:08 1021

原创 hdu 4597 2013吉林通化邀请赛 Play Game 记忆化搜索

dp[ba][ta][bb][tb]表示a堆牌从下面拿了ba张,从上面拿了ta张。b堆牌从下面拿了bb张,从上面拿了tb张。当前玩家能得到的最大的分数。扩展方式有4种,ba+1,ta+1,bb+1,tb+1,用当前剩下牌的总分减掉它,取最大值,就是当前玩家的最高分。记忆化搜索#include#include#include#include#includeusing names

2013-08-24 16:43:29 1762 5

原创 hdu 4427 Math Magic

dp[i][j][k]为i个数,和为j,最小公倍数为k,满足的个数。dp[i+1][j+v][ lcm[k][v] ]+=dp[i][j][k]4层for循环,枚举i,j,k,v,朴素肯定超时,加上优化。首先可以预处理1000以内每两个数的最小公倍数。其次,枚举v的时候,只需要枚举m的因子就够了,因为他们要构成最小公倍数为m,必须每个数都是m的因子。这样的话k和j的枚举都降到很小了

2013-08-23 10:01:27 1283

原创 hdu 4424 Conquer a New Region

唉,这题的思路果断没想到啊。题意:给定一棵树,定义两点间的权值 为 这条路上最小的边权值,求一个中心点,使得它到其他点的权值最大。采用贪心策略,把权值从大到小排序,每条边的两个顶点属于两个集合,而这条边就是连同两个集合的必经之路。并且因为是降序,所以要从一个集合的某个点到达另一个集合的某个点的权值一定就是这条边的权值。我们保存两个集合的点的数目,每次比较选哪个集合里的点作为中心点比

2013-08-22 14:51:56 1145

原创 hdu 2780 Su-Su-Sudoku (dfs解的数独)

判断是否可行的时候,只要看横竖和九格和当前填的数是否有重复就够了。注意有可能输入数据没按规则来,一开始就可以否定掉。#include#include#include#include#includeusing namespace std;struct node{ int x,y; node(int xx,int yy) { x=xx;

2013-08-20 21:19:55 940

原创 hdu 1011 Starship Troopers 树形dp

树形dpdp[i][j]表示 i房间还有j个士兵能获得的最大价值。当士兵数为0个的时候,就不能继续往下走了。但当大部队遇到中途的bug为0的房间的时候,就可以不留士兵获取价值。#include#include#include#includeusing namespace std;vector tree[105];int sum[105],val[105];int dp

2013-08-20 09:38:24 648

转载 计算机界的传奇人物:高德纳

计算机界的传奇人物:高德纳        高德纳设置了一个悬赏游戏。如果有人挑出了他编写的TEX程序的错误,他就给挑错者奖励。第一个错误值2.56美元,第二个值5.12美元,第三个值10.24美元。据说,这张10.24美元的支票是他迄今为止为此签出的最后一张。     高德纳是美国计算机科学家唐纳德·克努斯(DonaldKnuth)的中文名。这位“现代计算机科学

2013-08-19 10:28:22 1958 2

原创 hdu 1078 FatMouse and Cheese 记忆化dp

只能横向或竖向走。。。一次横着竖着最多k步。。。不能转弯的。。。。为毛我的500+ms才跑出来。。。#include#include#includeusing namespace std;int mp[105][105],n,k;int dp[105][105];int dx[105][4]={{0,0,0,0},{-1,1,0,0}};int dy[105][4]={{0,

2013-08-18 23:15:07 785

原创 hdu 4435 贪心+可行性判断

题目中用二进制表示了花费。所以,我们假设一开始全部建加油站,然后从编号大的开始枚举,如果能拆掉,就一定拆掉。(为什么?因为即使后面的能全拆,也没有拆掉当前这个好,二进制的性质决定)。问题就在于怎么判断能否拆掉,训练赛的时候我们队也是在这个地方各种纠结。。。思路:以bfs解法为例,首先从0开始扩展,如果下一个点是加油站,那么可以把它加入队列,让它继续扩展。如果下一个点不是加油站,那么它一定是

2013-08-18 22:18:23 751

原创 hdu 4565 公式推导+矩阵快速幂

hdu 4565 公式推导+矩阵快速幂

2013-08-16 10:11:47 860

原创 hdu 4568 Hunter bfs建图+TSP状压DP

TSP问题。

2013-08-15 15:29:38 1628 3

原创 poj 3744 Scout YYF I 概率dp

题意:有N颗雷,位置为a[0]-a[n-1] ,p概率走一步,1-p概率走两步,求到达终点的概率(也就是安全跨过最后一颗雷)分段求解,使每段包含一颗雷。分别求每段被炸死的概率,然后用1减,就是安全通过的概率。把每段安全的概率乘起来,就是答案。dp[i]=p*dp[i-1]+(1-p)*dp[i-2]是到达i点的概率,i点有雷的话,那就是被炸死的概率了。 构造矩阵,和斐波

2013-08-13 17:04:05 674

原创 hdu 4487 概率dp Maximum Random Walk

总共有n轮走法,每次可以向左向右或不动。 求到达最右端的期望#include#include#include#includeusing namespace std;double l,r,m;int n;double dp[103][222][222];void solve(){ m=1-r-l; dp[0][100][100]=1; for(int i

2013-08-13 09:16:40 884

原创 hdu 4486 Pen Counts 数学

枚举最大边,其他的找规律。注:O(n)算法才不会超时#include#include#include#includeusing namespace std;int main(){ int cas; scanf("%d",&cas); while(cas--) { int id,n,tot=0; scanf("%d

2013-08-12 17:03:15 827

原创 hdu 4490 Mad Veterinarian 超级无比蛋疼的水bfs

数据超级水我会乱说?hdu第一的代码我会乱说?10以上就不要了我会乱说?队列只要开1000我会乱说?→_→#include#includeusing namespace std;bool vis[12][12][12];int tras[4][4];struct node{ int a[4]; int dis;}st,end,q[1000];char

2013-08-11 15:51:37 1218 4

原创 poj 3070 Fibonacci

矩阵好神奇~~#include #include using namespace std;#define MOD 10000#define MN 10#define MM 10int N;struct matrix{ int a[MN][MM];}origin,res,ans;matrix multiply(matrix &x,matrix &y){

2013-08-11 08:28:12 690

原创 hdu 1575 Tr A

矩阵裸体#include #include #include #include using namespace std;#define MOD 9973#define MN 10#define MM 10int N;struct matrix{ int a[MN][MM];}origin,res,ans;matrix multiply(matrix &x,

2013-08-09 16:44:57 607

原创 hdu 2203

只贴最短代码~( ⊙ o ⊙ )#includeusing namespace std;char s[200005],p[200005],t[200005];int main(){ while(scanf("%s %s",&s,&p)!=EOF) { strcpy(t,s);strcat(s,t); if(strlen(s)>strlen

2013-08-09 10:56:19 973 7

原创 hdu 4444 简单bfs

我艹,好水啊!!#include#include#include#includeusing namespace std;struct node{ int lx,ly; int rx,ry;}rec[55];struct point{ int x,y; int dis;};int hx[555],hy[555];int n,m;int s

2013-08-08 17:03:13 1270

原创 hdu 4334 Trouble 枚举。。。。

首先想到的是把4个n的集合合并成2个n^2的集合,然后 枚举其中一个n^2的集合和剩下的一个n的集合,在另一个n^2的集合里查找-sum是否存在,复杂度为 O(n^3)*log(n^2),恭喜……超时。。。赛后在网上看到另一种查找方式。。。。自己看吧。#include#include#include#include#include#includeusing namespac

2013-08-07 17:46:54 595

原创 hdu 1505 City Game (hdu 1506的升级版)

想象成hdu 1506的图预处理一遍得到所有点的高度,然后对每一行做一次hdu 1506的算法。#include#include#include#includeusing namespace std;char map[1005][1005];int h[1005][1005];int l[1005];int r[1005];int n,m;int main(){

2013-08-03 21:43:35 757 1

原创 hdu 1506 Largest Rectangle in a Histogram

//给一个柱形图,找到其中面积最大的矩形。//对于每一个柱形,找到它最左边的,高度大于等于它下标, 同理也要找到它最右边的,高度大于等于它的 下标。//但如果普通的顺序遍历的话,最坏情况会退化成O(n^2),这里的优化方法就是,如果当前查找的柱形比它大于等于,那么就直接去找当前柱形的边界。//这样的话,查找就是跳跃式的。#include#include#include#includ

2013-08-03 20:13:13 660

Jpcap 64位

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

2015-03-24

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

TA关注的人

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