自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

笔记

个人笔记,欢迎交流!

  • 博客(23)
  • 收藏
  • 关注

原创 hdu1102(prime)

有一点特别,那几个点之间已经建好桥,就改变他们之间距离为0就好#include<cstdio>#include<cstring>#include<iostream>#define inf 99999999using namespace std;int M[110][110],dist[110],n;bool visit[110];int prime(int cur){ mem

2015-07-20 00:21:49 423

原创 hdu1875(prime())

注意double 类型 ,别的没神马特别!#include<cmath>#include<cstdio>#include<cstring>#include<iostream>using namespace std;struct Node{ double x,y;}node[110];double M[110][110],dist[110];bool visit[110];

2015-07-20 00:18:01 480

原创 hdu1223(kruskal)

给的是每两个城市和权值,正好方便用kruskal算法输入。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;struct Node{ int s,e,v;}node[10500];int father[110],n;void init(){

2015-07-20 00:14:53 799

原创 poj1251(prime()+读取字符bug)

prime()算很好写的算法,然后这题被自己傻逼的输入给坑了,scanf读到空格后结束,空格到了buff缓冲区,但是没读走,下次直接从缓冲区读的是空格等字符。所以这里,可以在每个scanf后面加个getchar(),或是 像%c 前面留个空格。 好吧 ,我承认题目的输入方式 我也是看别人题解才会的。。。。太弱了#include<cstdio>#include<iostream>#include

2015-07-20 00:11:03 467

原创 hdu1072(bfs搜索退出的条件有变)

#include<iostream>#include<cstdio>#include<cstring>#include<queue>using namespace std;struct node{ int x,y,step,time;};int M[10][10],book[10][10],sx,sy,Next[4][2]={{-1,0},{0,1},{1,0},{0,-1}

2015-07-20 00:04:03 451

原创 poj1458(LCS)

最最基础的最长公共子序列问题。 dp[i][j]表示状态是a串前i个和b串前j个的最长公共子序列个数。 所以很容易可以推导出 这个递推公式 : if(a[i]==b[j]) dp[i+1][j+1]=dp[i][j]+1; else dp[i+

2015-07-17 23:55:41 436

原创 hdu1257 最少拦截系统(贪心)

题意:求一个上升子序列的的个数,最简单可以直接用贪心,直接扫一下有多少个上升子序列,两个程序差别在于用不用保存每个系统的最低值。#include<cstdio>using namespace std;int high[1010];int main(){ #ifdef yexiaoju freopen("yxj.txt","r",stdin); #endif // ye

2015-07-17 23:02:45 448

原创 hdu1003(水dp)

状态转移方程:sum = sum > 0 ? sum + a[i] : a[i] ; 第一个sum是前i个数的和,后面的两个sum是前(i-1)个是的和;如果i前面的和是小于0的,那么加上第i个数肯定比i要小,所以只取第i个数即a[i],如果是大于0的,则就加上。 而这里,都不需要用数组存下每个数,只用一个个读,判断就好。/* 本题的状态方程:sum = sum > 0 ? sum+a:a;

2015-07-17 21:08:36 405

原创 hdu2018 (递归,记忆化递归)

很水的题,但好歹带我入门了一点动态规划?不,是递归。都没推出递推关系啦,可惜题目的数据太水啦,递归和保存已有的再递归 时间都看不出来差别。。。。。纯递归,怎么理解了:就是 你想啊 每下一刻奶牛的数量等于上一刻已有数量加上要增加的数量,而由题意每四秒后刚出生的小母牛就可以长大成能生出小母牛的大母牛,要增加的数量等于当前三秒前,因为当前的三秒前到当前就是四秒,就会增加一个能生小母牛的大母牛。#inclu

2015-07-17 16:16:31 3826

原创 codeforce 551C GukiZ hates Boxes

题意:在一条直线上有n个点,每个点上有不同数量箱子阻挡教授的道路,他有m个学生,每个学生每秒只能般一个箱子或移动右边一位,开始m个学生都在左边0点,开始向右边搬走箱子,问多少秒可以把所有箱子搬没。 也是在满足题意的条件下进行二分,我也发现二分的题难不是在于二分难写(标准的二分,注意左右边界),在于看出来这是二分和对条件judge()的写法,这题judge(),….开始 各种麻烦的模拟 还是没能成功

2015-07-17 15:09:26 691

原创 Codeforces 535C Tavas and Karafs(二分)

题意: 有一个等差数列 从A开始 公差为B 然后n个询问 每个询问给定l,t,m 然后要求如果每次可以最多选择m个数 使这m个数-1 那么在t次操作中可以使l为左端点的最长序列中使所有数为0 输出这个最长序列的右端序号定理 序列h1,h2,…,hn 可以在t次时间内(每次至多让m个元素减少1) 全部减小为0 当且仅当 max(h1, h2, …, hn) <= t &

2015-07-17 12:02:22 656

原创 poj1088(记忆化搜索)

#include<iostream>#include<cstdio>#include<cstring>#include<queue>using namespace std;int M[110][110],dp[110][110],Max,n,m,Next[4][2]={{-1,0},{0,1},{1,0},{0,-1}};int dfs(int xx,int yy){ if(dp[

2015-07-15 21:30:29 579

原创 hdu2199

#include<iostream>#include<cstdio>#include<cmath>using namespace std;double Y;double cal(double x){ return 8.0*x*x*x*x+7.0*x*x*x+2.0*x*x+3.0*x+6.0;}int main(){ int T; scanf("%d",&T);

2015-07-15 21:03:01 424

转载 把二分查找算法写正确需要注意的地方<转>

原地址:http://www.cppblog.com/converse/archive/2009/09/21/96893.html把二分查找算法写正确需要注意的地方 今天再次解决一个需要使用二分查找的问题,再一次的,我又没有一次过写对.(为什么我说”又”?)抓狂了,似乎开始有一些”二分查找恐惧症”.为了以后能够一次将这个基本的算法写对,我决定再仔细研究一下.我之前有写过一个二分查找的算法,在这里,

2015-07-15 15:51:50 531

原创 hdu4004 The Frog's Games

题意:题目给你 一条河的宽度,石头的数量,和每块石头距离岸边的距离,和青蛙最多能跳几次的数量,问你青蛙跳远最短距离就可以满足跳到对岸。 对于目前的我来说,这题有两个难点: 1.不容易看出来这是二分。(二分算是在线性排列里查找可能性的情形) 2.判断函数码力太弱写不出来。 对于一,只能多加体会。 对于二,这题,开始我还想 搜索?啊 怎么判断。。看了别人的题解。。。orz就是模拟,算贪心吧,青

2015-07-15 15:41:27 579

原创 hdu4355(三分)

题意:在森林里面,举行一个庆祝大典需要选定一个地点(一维的直线上),各位精灵不开心值和自己需要移动的距离和本身一个权值有关,计算公式是距离差^3乘以权值,所有精灵不开心值之和满足一个二次函数,有一个最小值,用三分去找这个最小值!#include<cstdio>#include<cmath>#include<iostream>#include<algorithm>using namespace

2015-07-15 15:14:07 639

原创 Hdu1242(bfs+优先队列or dfs)

题意:和最普通迷宫类问题差别在于,他的路上会有x,这个x会让他多停留一秒,而用用最基础的宽度搜索,永远搜的是地图上最短的路径,而忽略x的加成,如果那条最短的路上有很多x,加起来比远的没有x的路时间长多了。 所以,开始我就wrong了很多次,(果然太弱了),后来想啊,用广搜把每条都去的地方扫一下,选个时间最短的就好了,结果。。。。案例怎么广搜都只能扫出一条,别的自己想数据的也扫不全。。。后来想啊想。

2015-07-13 10:30:48 550

原创 Hdu5012(bfs)

不容易看出来的搜索类题目,求达到满足题意的最短的步数,很明显的广搜做最优。 题意:一个正方体每个面代表一个数字1~6,按顺序上下左右前后,四种翻转方式,问最少经过多少次翻转能到达目标状态,不能到达就输出-1. 这题难点,在于每个状态的表示,和转换方式,和判断方法,好的代码可以简略又清晰,差的代码就如我般臃肿又难懂。。。太弱了#include<iostream>#include<cstdio>

2015-07-13 00:59:52 526

原创 poj1011(dfs+目前做的最好的剪枝)

题意:n根不同长度的小棍,拼成若干长棍,要这些长棍的长度相等,并且小棍刚好用完,问拼成长棍的最短长度是? 前话:这题是在暑假第一天搜索专题下,作为自己复习的练手题目,其实是又一次加深学习搜索的思想(弱已跪)和回溯的一些理解。 思路:表明上初看此题就像是搜索,(我开始也想过二分,这并不是只有一种可行,而是找到最短),首先考虑搜索的方向,最短,那肯定是从最短的情况开始递增,最短的可能情况那肯定就是最

2015-07-11 23:07:31 665 1

原创 uva1339(字符串水题)

题意:一个字符串,变换映射后,能否变成另一个字符串,由于顺序可以改变,所以只要统计每个字符出现的次数就好,再比较是否相同。 大水体#include<bits/stdc++.h>using namespace std;char a[110],b[110];int A[26],B[26];int main(){ while(cin>>a>>b) { int n

2015-07-04 15:16:52 769 2

原创 poj1129(没有优化)

题意: 在一个地图上相邻的点不能用同一个电台,问最少一共需要多少个电台。 思路:用邻接矩阵存点相邻的情况,从一个数量开始枚举能否满足,不足就加一个数量,知道得到最少满足题意电台的数量。//#include<bits/stdc++.h>//poj不能这个头文件#include<iostream>#include<cstring>#include<cstdio>using namespace

2015-07-04 15:11:40 413

原创 uva1587

题意:输入一个长方体每个面的边长(12个输入),判断能不能形成一个长方体。 思路:开始思路不清晰,想用一堆判断做(弱比),写的还很麻烦,情况也多,何不先假设一个最普遍情况,a,b,c表示长宽高,假设a>b>c,三对面排序后,自然是ab,ab,ac,ac,bc,bc,排序规则:一边相同比较下一条边,长边总在前面,避免考虑这个面长是下个面的宽的问题,因此排完序后,自然就好判断,先比较 三个面是不是成对

2015-07-03 12:15:04 974

原创 uva1588 Kickdow

题目很水 但我更水 好久没做题 水了很久。。。。 题意:给出两个长度分别为n1,n2且每列高度只为1,或者2的长条,需要将它们放入一个高度最高为3的容器,问容器的最短长度。 思路:分别以其中一个为标准不动,另一个移动去扫它,不满足就右移一位,求满足条件最小长度,n^2的复杂度,但要扫两次(第一个不动,第二个不动)。开始想错了,想当然认为长的不动用短的去扫它就是答案,忽略这两种情况不同,比如数据:

2015-07-03 11:31:45 702

空空如也

空空如也

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

TA关注的人

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