自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 尚未解决 持续更新

poj1077 (双向BFS? 启发式搜索?)

2016-02-02 23:24:55 223

原创 CF621C (求概率)

#include #include #include #include using namespace std;double f[123456];int main(){ int n,p; int beg,ed; scanf("%d%d",&n,&p); for(int i=0;i<n;i++){ scanf("%d%d",&beg,&

2016-07-29 09:29:17 337

原创 CF621B 模拟

#include #include #include #include using namespace std;int d[5678];struct point{ int x; int y;}p[200005];int dia[5678],ddia[5678];//储存对角线上的鲨鱼数量int main(){ int n; scanf("%

2016-07-29 09:21:14 889

原创 hdu4355 三分

数据爆坑 #include #include #include #include using namespace std; const int N = 10e4+1; const float eps = 1e-2; struct po { double x;

2016-07-29 09:18:13 303

原创 hdu1597 简单二分

根据规律二分出第几号数字所在的组#include #include #include #include using namespace std;long long fuc(long long x){ return x*(x+1)/2;}long long lbinary(int n){ long long l=0,mid,r=1e6; while(l<

2016-07-29 08:58:07 332

原创 hdu2614 DFS

#include #include #include #include #include #include using namespace std;int f[20][20],flag[20];int ans;int n;void DFS(int now,int tim,int maxx){ ans=max(ans,maxx); if(ans==n) ret

2016-07-29 08:55:04 221

原创 CF681C 模拟

#include#include#include#include#include#include#includeusing namespace std;string s1 = "insert";string s2 = "getMin";string s3 = "removeMin";priority_queue , greater > q;struct node{

2016-07-29 08:50:32 837

原创 hdu1242 BFS+优先队列

这道题的最短路线不一定是最优路线,所以BFS时用到优先队列,并加入判断条件:只有比之前用时少的路线可以被加入队列,所以就不用标记经过的节点了。AC代码:#include #include #include #include #include #include using namespace std;char ch[234][234];int vis[234][234]

2016-07-29 08:42:13 204

原创 hdu1698 Just a Hook(线段树区间修改)

一道线段树区间修改模板题,用lazy标记来减少对子节点的更新操作,由于最后是求总区间的价值和,所以都不用写 query 了,看别人有的用 map 写的一点点代码可以过,以后研究下。    以下是代码:#include #include #include #include #define N 400000using namespace std;int sum[N],lazy[

2016-02-16 17:49:39 209

原创 hdu2795 Billboard (机智的线段树点更新)

题目大意:在一块h层的广告牌上面贴广告,每个广告有一层宽,每个广告尽量往上往左贴。问贴的广告在第几层。    做法:这道题很机智的可以用线段树,把 1~h 层看作 线段 1~h ,树上每个节点记录线段的剩余长度最大值。贴广告时,若广告长度>左儿子节点,则进入做子树,否则看右儿子是否符合要求,若符合,则进入右子树。    以下是代码:#include #include #includ

2016-02-15 22:07:04 240

原创 hdu1394 Minimum Inversion Number(树状数组求逆序数)

题目大意:给出一个数列,然后让这个数列滚动,求每种数列的逆序数,输出其中的最小值。    做法:用树状数组可做,把原数列由大到小加入树状数组,统计在这个数前面的已加入数的个数,求和,即为原数列的逆序数。数列滚动时,把第一个数字以至最后,那么,鑫逆序数为:原逆序数 - 数列中比它小的数字个数 + 数列中比它大的数字个数,最后可得方程 sum=sum-2*a[1]+n-1 ;    以下是代码

2016-02-15 16:26:08 265

原创 hdu1754 I Hate It (线段树点修改查询模版题)

中文题,线段树点修改查询的模版题。。没啥好说的,复习的时候敲一敲,熟练模版吧    以下是代码:#include #include #include #include #define N 1000000using namespace std;int maxx[N],_max;void pushup(int o){ maxx[o]=max(maxx[o*2],m

2016-02-14 10:58:50 231

原创 zoj1409 Communication System (贪心+枚举)

题目大意:给出 n 种设备,每种设备有 m 个公司,分别知道每个公司的 带宽 和 费用,每种设备选择一个公司,求选择的 n 个公司中 最小的带宽/价格之和 最大是多少。    做法:枚举每一个公司的带宽作为最小带宽,然后在其它的每一种设备中,寻找比它带宽大的公司,取其中最小的费用。然后答案是所有枚举项里 B/P 最大的。    以下是代码:#include #include #in

2016-02-13 14:36:19 437

原创 zoj1366 Cash Machine (多重背包基础)

一个裸的多重背包,把物品按二的幂分解,然后就转换成了01背包问题来求解,具体操作可参考《背包问题九讲2.0》。    以下是代码:#include #include #include #include using namespace std;int a[200];int dp[100010];int cn=0;void add(int num,int ww) //将一

2016-02-12 21:18:58 275

原创 zoj1234 chopsticks 经典dp

经典的dp题,题目大意:给出需要的组合数量和一些筷子长度,每个组合要求 a    状态: dp[i][j], 表示第 i 根筷子 到 第 n 根筷子 有 j 个组合时的最小状态。    状态转移方程: dp[i][j]=min( dp[i+1][j] , dp[i+2][j-1] + (a[i]-a[i+1])^2 );   选择这两个状态中的较小值,就是看要不要把第 i 根筷子 与 第

2016-02-12 17:41:23 408

原创 csu1673 集训队组队计划 (二分)

对最小差值进行二分即可,注意先把成员按照能力值排序,再进行寻找。以下为代码:#include #include #include #include #define INF 1e9using namespace std;int n,m,ret;int a[123456];bool judge(int num){ int temp=0; for(int i=

2016-02-06 22:22:29 214

原创 csu1671 经营小卖部(DP 完全背包 好题)

这是一个完全背包问题,要分四种情况讨论:1.什么工具都不买    2.买微波炉    3.买冰箱    4.买微波炉 和 冰箱 。然后取其中利润最大的一种状态 dp[j] : 所给资金为j时的最大营业额。转移方程: dp[j]=max{dp[j],dp[j-ci]+wi}  //这里的wi指的是单个物品的利润。以下为代码:#include #include #include

2016-02-06 21:33:49 270

原创 csu1023 修路(二分查找)

一道中文题,对所需时间进行二分,可以得到答案,注意一下细节即可。以下是代码:#include #include #include #include using namespace std;int n,m,temp;int a[345];bool judge(int tim){ int ret=0,team=1; for(int i=0;i<n;i++){

2016-02-06 17:31:44 540

原创 csu1022 基础dp(数字三角形)

这个数字三角形只是比那个入门的数字三角形多了一条路而已,简单的dp状态 dp[i][j] : 第i行 第j列的最大和。转移方程  dp[i][j]=max{ dp[i+1][j] , dp[i+1][j+1] , dp[i+1][j+2] } + a[i][j];以下为代码:#include #include #include #include using namespa

2016-02-06 12:03:28 343

原创 zoj1163 (很经典很好的DP)

啊啊啊啊啊啊短短不到30行代码看死我了,现在也没有完全理解,明天继续学习,DP之路还很长,ACM之路还很长状态 dp[i][j] 表示有 i 个积木时 最后一列不大于j个积木的总和。转移方程: dp[i][j]=dp[i-j][j-1]+dp[i][j-1];以下是代码:#include #include #include #include using namespace s

2016-02-05 23:42:52 721

原创 zoj1025 dp(呃。。)

这道题放在DP训练题组里,但是我用的贪心做出来的题目大意:问最少能用多少组非递减数列覆盖所给数列。。网上看的大多数做法和我差不多,排序好以后进行搜索与标记,然后就AC了。。并不知道在哪里用DP。。以下是代码:#include #include #include #include using namespace std;struct anode{ int len,

2016-02-05 21:12:54 409

原创 zoj1093 dp入门

今天终于开始刷dp的题目了!题目大意:给出n种长方体和各自边长,每种长方体选择数量没有限制,放在上面的长方体要小于下面的长方体,问能够放多高。做法:每个长方体有三种摆放方式,把三种方式各看成一种长方体,把它们先按两条边长由大到小排序,然后枚举每个长方体,看能否放置在它之前的长方体下面,若能,记录其中最高的一种。状态:dp[i] 表示以 第i 个长方体为底所能搭的最大高度。转移方程: d

2016-02-05 19:07:18 483

原创 hdu1010 dfs+剪枝 (挺机智的题。。)

一道DFS+剪枝题,题目意思是问能否在规定时间到达出口(路径不能重复),一开始我以为在t时间内到达就行了。。果断写了一个BFS然后一直WA,一搜题解才恍然大悟。。。一个简单的DFS,剪枝部分很机智,根据起点终点还有规定时间的奇偶性质可以剪枝,然后最短路线和时间的关系可以剪枝。以下是代码:#include #include #include #include using names

2016-02-04 21:54:05 363

原创 poj1321 简单dfs

一道水题,需要注意的是,放置棋子时,可以跳过此行进入下一行。以下是代码:#include #include #include #include using namespace std;int n,k,ans=0;char a[10][10];int b[10]; //记录这一列是否有放置棋子void dfs(int x,int step){ if(step=

2016-02-04 17:58:24 226

原创 poj2251 三维bfs

挺简单的一道题,直接往6个方向BFS就行了,通过这道题明白了:BFS过程中,把节点压入队列时就要标记这个节点,而不能节点取出后再标记,这样避免了很多重复的BFS。一开始交的时候一直WA。。结果发现是因为memset里面写错了。。汗死。。以下为代码:#include #include #include #include #include using namespace std;c

2016-02-04 16:49:18 266

原创 poj1088 dp 记忆化搜索 (入门好题)

题目意思很简单,一开始我直接DFS深搜,超时果果的,看了题解以后,学习了记忆化搜索,就是记录下已经求出的当前结点的最大值,在之后访问到这个节点时,就能直接调用结果,减少重复计算。是一道好题。以下为代码:#include #include #include #include using namespace std;int r,c,a[150][150],len[150][150

2016-02-03 22:38:46 2149 1

原创 poj1011 dfs 剪枝

这道题与poj2362类似,对剪枝的要求更多了

2016-02-03 12:33:44 347

原创 poj2362 dfs 剪枝 比水题难的题

这道题tel了一晚上。。看了题解后。。终于A掉了,题目大意是:给出若干根各种长度的棍子,问它们能否拼接成正方形(每根都要用上)。首先求出棍子长度的和sum。剪枝1:sum%4!=0 则答案一定为no。若sum%4==0,则棍子要组合出四根长度为 siz=sum/4 的边。剪枝2:只要判断能组合出3条边,答案即为yes。所有棍子长度按从大到小顺序排序,因为越长的棍子与其它棍子组合

2016-02-02 22:55:46 252

原创 poj3278 BFS基础

题目大意为:给出农民坐标和奶牛坐标,可对农民坐标进行三种操作:+1 , -1, *2. 奶牛坐标不变,问农民到达奶牛坐标最少操作数。基础的BFS题#include #include #include #include #include using namespace std;queueq;int n,k;int a[1234567]; //用数组记录到达下标坐标所用的

2016-02-02 22:44:14 306

原创 poj2488 DFS基础

DFS基础题,题目大意是给出棋盘大小,问马能否走遍所有的格子。需要注意的是,题目要求按字典序输出路径,所以遍历时,要按照先从上到下再由左至右的顺序。这里开始把往上和往下的顺序搞反了。。一直WA。。还是太年轻。代码有些细节写得丑,大概就是这样。#include #include #include #include using namespace std;int a[40][40];

2016-02-02 14:22:29 326

原创 POJ3620

今天开始,每天学一些数据结构和算法,然后把暑假集训的作业题都刷一遍,跳过模拟和贪心,从搜索开始。poj3620 水题一道,dfs求连通块:#include #include #include #include using namespace std;int a[200][200];int xr[]={1,0,-1,0};int yr[]={0,1,0,-1};int

2016-02-01 22:01:17 271

原创 ACM我来了

作为一名没什么基础的新生,I`m coming!  希望坚持下去

2015-07-20 10:28:36 190

空空如也

空空如也

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

TA关注的人

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