自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Mr.CJ

Thinking Deeper,Run Further...

  • 博客(39)
  • 资源 (5)
  • 收藏
  • 关注

原创 hdu 1530#裸的最大团

#include #define N 50int m,n;int mat[N][N],vis[N];int cnt,bestc;void dfs(int t){ if(t == n) { if(cnt > bestc) bestc = cnt; return ; } int i,ok = 1;

2012-07-31 09:26:30 586

原创 poj 1436 Horizontally Visible Segments #线段树#hash#暴力枚举

/**题目描述: 两条竖直线可互见的条件是 存在一条水平线连接两竖线且不与第三条竖线相交。 若三条竖线两两互见,则形成一个三角形。 给定一些竖线,求三角形个数。按x排序,然后插入线段,就像是count the color一题,处理是用vector保存i向后可以看到的竖线。然后暴力枚举。暴力枚举!!!自己是真没想到,想既然都暴力枚举了,push_ba

2012-07-28 23:10:03 592

原创 hdu 3016 #线段树 #线段覆盖

/**是男人就下100楼;求到达底层的最大生命值。一上来就TLE了,从高到低更新树,每次都维护落到[l,r]上的最大值,要更新到叶子结点才可以。正解,从下到上更新树,想到与线段覆盖,找当前线段左右断点落下的线段的id值,然后DP*/#include #include #include #include using namespace std;#define N 100

2012-07-28 21:26:06 957

原创 poj 3667 hotel #线段树

/**poj 3667 hotel问题描述,一排房子,住进或清空;住进,从左面开始找一段满足条件的房子,住进靠左的一段连续的房子内清空,将房子[x , x + d - 1]的房子清空*/#include #include #include using namespace std;#define N 50005#define L(r) r << 1#define R(r)

2012-07-27 16:07:34 596

原创 hdu 4312 #Chebyshev距离

平面上n个点,某点到其他点的切比雪夫距离之和最小。表示不会下手,不过据说可以水过去,1水,求出中心,按距中心的chebyshev距离排序,枚举前100个点,2水,直接枚举 [n / 2 - k,n / 2 + k] 内的点;          在hdu上试了一下,k = 200的时候还WA,到k = 250就TLE了。k = 220 的时候可以AC然后,又试着用

2012-07-27 02:06:51 1335

原创 hdu 4311 Meeting point-1 #manhattan距离

比赛的时候没有想到,这里理论AC一下平面上有N个点,求出从某一点出发,分别到达其他点的manhattan距离的和最小。 枚举每个点p1,从p1转移到p2时,拿x值来说,这两个x值将x轴分为三个区间,求出每个区间中x的个数即可。具体求法可二分或是树状数组(要离散化)。y同理。然后,如果先按x排序,x的处理就简化了。最后时间复杂度是nlog(n) 附:hdoj的解题报告

2012-07-27 00:45:46 873

原创 hdu 4310 hero #贪心

#include #include int sum,res,i,n;struct node{ int hp,dsp; void input() { scanf("%d%d",&dsp,&hp); sum += dsp; }}hero[22];///按单位血量的攻击力排序bool cmp(node a,node b)

2012-07-27 00:34:47 424

原创 hdu 4313 #回溯

/**问题描述: n个点的一棵树,其中有k个坏结点,要破坏一些边使得这k个点互不可达。求所破坏边的最小权值和。思路: 找公共祖先,同时坏结点向上传. mm[i] 表示从结点i向下到坏结点的路径上的最小边权,若i为坏结点,则为INF。 破坏k-1个点,对某个根节点,要剪掉s个儿子,如果根节点也要剪掉,则连接的边都要剪掉,否则,剪掉前s-1个小的,第s个上传。*/#i

2012-07-26 23:39:00 468

原创 poj 2253 #floyd

/**在一个完全图上,求从A到B的最短路上的最大的相邻两点的距离。*/#include #include #define EPS 1e-4#define N 256double dp[N][N],st[N][2];double cal_d(int i,int j){ return sqrt((st[i][0] - st[j][0]) * (st

2012-07-26 18:04:54 440

原创 hdu 1043 #八数码#全排列逆序对的哈希+BFS

之前这题超时的,因为每次都BFS了。当时实在是蠢了,其实只要以终态为起点一次BFS就记录好所有路径了#include #include #include #include using namespace std;#define N 1000000struct node{ int x,y; char mat[3][3];}p,pt;char dir

2012-07-25 12:21:24 851

原创 hdu 4027#线段树

区间更新:每个数开方区间查询:区间和操作次数太大,时间优化方法是,标记区间是否全为1,若是则停止更新操作RE了好多次,坑爹的有 x > y  的数据#include #include #include #define L(i) (i) << 1#define R(i) (i) << 1 | 1#define N 100005struct s_t{

2012-07-25 01:49:33 428

原创 uestc 1367#先暴力水一个再说

给定n*m的0,1矩阵,有p次询问,问全部由0构成的a*b大小的子矩阵有多少个. n和m说是求0的子矩阵,程序实现改为-1的求和sum[i][j] 表示矩阵[1-i ][ 1-j ]O(n^2)暴力枚举每个子矩阵#include #include #define N 1024int mat[N][N],sum[N][N];int main(){ i

2012-07-24 22:58:34 1212

原创 hdu 1209 #sort

按时针和分针的角度排序,输出中值#include #include using namespace std;struct Ti{ char tim[10]; int hh,mm; double angl; void input() { scanf("%s",tim); sscanf(tim,"%d:%d",&

2012-07-24 21:19:28 444

原创 hdu 4192 #模拟计算+全排列

先给出n个数据,在给出一个结果m,在给你一个含有n个变量的表达式,问是否存在一种方式将数据一一代入变量,使得表达式的结果等于m。暴力枚举#include #include using namespace std;#define N 200int p[5];char expr[N],str[N],num[5][3];int res;int cal(int l

2012-07-24 20:50:02 615

原创 [费马小定理]hdu 4196

据说这题非常卡时间题目:用不大于n内的所有数去组成一个尽可能大的完全平方数。完全平方数,显然是所有的素因子的个数都是偶数,便取N!的所有素因子的个数,便 有了初步想法,算出N!的什么素因子个数,奇数的就舍去一个,偶数的全要,然后再全部乘起来,可是因为规模很大,即使快速幂乘也是会超时。于是考虑把N!除掉那些奇数个因子的乘积,便是求a=c/b,由于是取模的,直接除必然不行。

2012-07-24 18:00:19 2126

原创 hdu 4195#计算几何

题意:给你三个顶点,这三个点是一个正多边形上的顶点,问这个正多边形最少有多少个边?思路:三个点,三角形–>外接圆–>必定也是该凸多边形的外接圆-我们可以把三个点当做一个三角形放在它的外接圆上,然后求出每个角的度(即三角形分的三个弧度所对应的圆周角),设顶点数为n,我们只需计算,三角形任意两点所对应的圆心角是否是2PI/n的倍数就可以了,并且i很小,可以枚举。#include

2012-07-24 16:47:27 528

原创 hdu 4193#单调队列

一环状的数组,求满足:从某一位置开始任意长度的元素和都大于等于0既然数组是循环的,自然想到先复制一遍,然后求sum[i],枚举每一个长度为n的区间,看最小值是否满足即可。很明显可以线段树解决,但是 单调队列在这里的适用性更强#include #define N 2000002int a[N],sum[N],que[N];int main(){ int i,

2012-07-24 14:53:52 581

转载 poj 1704 #博弈 转化为取石子

先是正文,后是转载。因为看了这文章才找的这道题,尽管两者并不完全是一回事。poj1704问题描述:Georigia和Bob玩棋子的游戏,棋子是排在同一行的,每人每次可以移动一个棋子,移动的格数不限,但移动只能向左,且不能超过左边的棋子。当谁没有棋子可移时,谁就输了。女士优先原则,Georgia总是优先。解题思路:我们把棋子按位置升序排列后,从后往前把他们两两绑定成一

2012-07-24 13:53:55 666

原创 hdu 4190 #二分答案

Online JudgeOnline ExerciseOnline TeachingOnline ContestsExercise AuthorF.A.QHand In HandOnline AcmersForum | DiscussStatistical ChartsProblem ArchiveRealtime Judge Statu

2012-07-24 10:39:02 975

原创 hdu 4194#模拟

比赛的时候一直WA,原来题意就完全领会。一些条件,第i个人发表第i篇文章,将这些文章给n个人审查规则:1,每篇文章要被k个人看(K is the number of reviews that each paper will receive,坦白讲这句没理解好)            2,每个人不能看自己的或是自己学院同事写的文章,任何人都不能重复看某一文章。附:解题

2012-07-24 02:24:39 530

原创 三剑之舞

三剑之舞 修改金钱不多说,这里的方法让我AChttp://bbs.gfan.com/thread-2716278-1-1.html

2012-07-23 00:55:28 2235

原创 hunnu 11182#最长非递减子序列

Xujie卖车Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KBTotal submit users: 1, Accepted users: 1Problem 11182 : No special judgementProblem description

2012-07-21 23:39:10 1175

原创 poj 2796#单调栈

参考:对于这个问题,一般有两种方法:1。枚举区间,找最小值一般复杂度太高不考虑2。枚举点,找区间让每个点作为最低点。对于思路二:我们有如下的性质:1. 如果当前元素大于前一元素,那么前一元素能扩展到当前元素,同时说明前面的数对当前元素来说是没有贡献的2。如果当前元素等于前一元素,那么前一元素也能扩展到当前元素,同时说明前面的元素是可以被忽略的3。如果当前元素小于

2012-07-21 00:19:53 2005

原创 poj 2796

Feel GoodTime Limit: 3000MS Memory Limit: 65536KTotal Submissions: 7547 Accepted: 2039Case Time Limit: 1000MS Special JudgeDescriptionBill is developing a

2012-07-20 22:25:48 1402

原创 poj 2008 #数学想法题

(转)题目大意:有N(1 ≤ N ≤ 1,000)头奶牛选手要组一个省队(-_-||| 想省队想疯了是怎么着),每头奶牛有身高H和体重W两个参数。要求若省队里面选手最小的身高是minh,最小的体重是minw,所有的奶牛要满足A*(H - minh) + B*(W - minw) ≤ C求出省队里面最多可以有几名选手。首先有一个最朴素的算法:枚举minh和minw,然后挨个判断。

2012-07-20 21:36:41 584

原创 hdu 4308 #BFS

优先级的广搜Saving Princess claire_Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 200    Accepted Submission(s): 99Problem Descriptio

2012-07-20 00:16:51 614

原创 hdu 4302 #priority_queue

赛后一听到这题维护两个priority_queue,瞬间崩溃,苦逼了自己的那棵线段树。就怕想不到呢。Holedox EatingTime Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 193    Accepted Submis

2012-07-19 23:29:34 478

原创 hdu 1505 #DP

/** 题目要求:求一个n*m矩阵内的最大子矩阵(矩阵元素全为F) hdu1506加强版 关键的预处理: 构造一个n*m的矩阵h,h[i][j]代表的是以h[i][j]为底的字符'F'的最大高度。 遍历,对于每一行,就转化成了hdu1506的问题了 例如: 原来的矩阵 h矩阵 R F F F F F 0 1 1 1

2012-07-19 10:50:34 393

原创 hdu 1506#单调队列

Largest Rectangle in a HistogramTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4975    Accepted Submission(s): 1436Problem Descript

2012-07-19 10:16:14 562

原创 hdu 1338 #greedy

/*Greedy ;//题意:有 m 个人,每人有 n 张卡片,每张卡片都有点数 1~m*n,并且每张卡片的点数都是不同的,总共进行 n 轮比赛,m 个人都选择自己的一张卡片来进行比较,点数最大的在该轮比赛中胜利。给出你所拥有的 n 张卡片的点数,求你在这场游戏中最少能赢多少轮比赛。思路:先求出其他人能赢的最多的比赛数 r(利用像田忌赛马一样的贪心策略,求自己最多输多少场,然后求自

2012-07-18 22:55:12 892 1

原创 hdu 1079 #DP

给个日期(从1900-1-1开始的)。两个人轮流操作,每次可以把日期变成后一天,或者是下月的当天(若不存在,则不可变)。谁走到2001-11-4就赢。问先手有无必胜策略。好好地一个DP,我这么写的,就是日期搞得麻烦了些#include int dp[102][13][32] ;int mon[13] = {0,31,28,31,30,31,30,31,31,30,31,30,3

2012-07-18 21:22:07 1006

原创 hdu 1054 #树形DP

在一棵树上求最小顶点覆盖,树形dpdp[i][0] 表示不选结点idp[i][1]表示选择结点idp[i][0] = sum(dp[i_sons][1])dp[i][1] = sum( min( dp[i_sons][0], dp[i_sons][1] )先建双向图,然后处理成结点从上到下的树#include #include #include

2012-07-18 19:44:36 415

原创 hdu 1034 #模拟

每一轮游戏,围成一圈的每一个学生把自己一半的糖果给右边的人,若某学生最后的糖果数目为奇数,则从老师那里得到一块问经过多少轮游戏结束(游戏结束时每个学生的糖果数目相同,可证明必然在有限轮后结束) #include #define N 100int main(){ int s[N],n,i,j,k,t,p; while(scanf("%d",&n) ==

2012-07-18 16:35:51 1262

原创 hdu 3666 #差分约束

题意:给定一个最大400*400的矩阵,每次操作可以将某一行或某一列乘上一个数,问能否通过这样的操作使得矩阵内的每个数都在[L,R]的区间内题目意思就是是否存在ai,bj,使得l首先,把cij除到两边:l'log(l')把log(ai)和log(bj)看成两个点ai和bj,化成求最短路的形式:dis[ai]-dis[bj] 转化为差分约束后,spfa拿下一点插曲,尼玛又

2012-07-18 16:15:20 1551 1

原创 hdu 3357 #segTree

又见线段树开始没考虑到统一站上下车的情况,作死的WA了好多次 Fast ArrangementTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1514    Accepted Submission(s): 439

2012-07-18 09:59:01 563

原创 hdu 4255 #BFS#筛素数#环形数

A Famous GridTime Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 183    Accepted Submission(s): 66Problem DescriptionMr. B has rece

2012-07-17 00:25:25 688

原创 hdu 4252 #想法

A Famous CityTime Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 119    Accepted Submission(s): 64Problem DescriptionAfter Mr. B ar

2012-07-16 22:42:26 966

原创 hdu 1159 Common Subsequence #DP

#include #include #include const int N = 1001;char a[N],b[N];int r[N][N];int main(){ int i,j; while(scanf("%s %s",a + 1,b + 1) == 2) { int lena = strlen(a + 1),

2012-07-07 17:01:10 323

原创 hdu 1003 max sum #最大字段和

/*最大字段和trip:全为负数的情况*/#include const int N = 100001;const int MININF = -100000000;int main(){ int a[N],p,maxsum,t,cas = 0; scanf("%d",&t); while(t--) { int n; s

2012-07-07 16:10:05 390

tts语音引擎修复补丁win7 官方最新版

tts语音引擎修复补丁win7 官方最新版

2022-09-09

C语言趣味程序百例精解.rar

C语言趣味程序百例精解.rar

2012-03-08

W3School全套教程.CHM

这是我下载的最好用的一个W3School全套教程.CHM

2012-03-08

algorithm_头文件_说明

algorithm algorithm STL 算法 algorithm_头文件_说明 algorithm algorithm STL 算法 algorithm_头文件_说明 algorithm algorithm STL 算法 algorithm_头文件_说明

2011-06-03

[趣味程序导学Visual.Cpp].董未名.文字版

趣味程序导学Visual.Cpp].董未名.文字版pdf 趣味程序导学Visual.Cpp].董未名.文字版pdf

2011-05-09

数据结构串的堆分配存储表示

数据结构中串的堆分配表示,包括复制和插入两个操作,其余的领会精神,在此不多叙述,注意,要初始化

2011-04-11

空空如也

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

TA关注的人

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