自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JIBANCANYANG

并非所有流浪者都迷失了自我。

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

原创 hdu 1241

背景:dfs递归实现。思路:对于每一个@都把和组成一个片区相连的所有@变成*,并计数一次。#include#include#includeusing namespace std;char map[105][105];int direction[8][2]={1,0,1,1,1,-1,0,1,0,-1,-1,0,-1,1,-1,-1};void dfs(int i,int

2015-02-27 11:25:35 727

原创 hdu 2546 01背包

背景:1——WA:卡上最低要求为5元才能消费的边界情况没有处理。思路:首先判断卡上余额是否有五元,不是直接输出。然后,从卡里面拿出五元来买最大价值,剩下的钱尽可能用完就可以了。学习:1.这里透露了一个基本问题:从n个数中选取m个数,使这m个数的和尽可能的接近k。这个体是把k看做背包的容量,把一个数的值既看做价值又看做体积,转化为01背包问题。我的代码:#include#include

2015-02-10 11:45:33 486

原创 hdu 1171 01背包变形

背景:1Y对于背包写法,不太熟,想法也不够深,写起来,容易犯小错误。思路:把sum/2当做背包的最大容量,求这个最大容量能够装下的最大价值,这个题的灵活之处就是把价值和体积都看做题中给的价值,那么相当于,一份体积有一份价值。所以sum/2的体积产生的价值势必小于等于sum/2,这样我们求出这个最接近sum/2的值即可。这个题的思路比较巧妙,一是把看似两方面的问题转化为单方面要接近一半的问题

2015-02-10 10:58:09 647

原创 hdu 2602 01背包深入优化

背景:没有认真读题目条件,搞错输入顺序而wa了一次。自己做的第一道DP题,看了好久终于把背包九讲的01背包看懂了。学习:1.01背包的特点是:物品个数有限,切对于每一个物品可以选择放或者不放。其中的名称01,大概就是1(放)0(不放)的意思吧。   传统的背包写法使用二维数组,时间和空间都是O(VN),当把j由0.....n,换为n.....0之后空间优化为O(V),然后做了两点剪枝,

2015-02-08 22:34:03 515

原创 STL 库函数测试

学习:1.深入理解了C++里引用:   A:引用的定义:数据类型名 &引用名=变量名;(引用不同于指针之处是:引用在声明的时候必须同时初始化)    B.引用只是变量的一个别名,在操作引用和操作原变量名的时候都是操作内存区域上的同一个区域。   C.引用的应用:         a.作为函数的参数参与传值,类似于c语言指针的作用。这里才明C语言中指针传值的优点:

2015-02-08 15:43:36 667

原创 UVa 136 丑数

背景;开始没有充分理解题意:不能被2,3,5以外的其它素数整除。在整除的数学中,素数相当于基,任何除了一以外的数,都是由素数基相乘而得。思路:有第一个丑数1,开始,每一个丑数*2,*3,*5生成下一个丑数。这样依次生成。学习:1.算术基本定理:每一个大于2的数总是由素数因子相乘而得,且个素数因子的个数是确定的。我的代码;#include#includeusing names

2015-02-08 11:53:25 554

原创 UVa 540 queue的使用

背景:书上的思路很好,开始自己想的思路行不通,因为queue定义的操作太少,不可直接访问内部内容,也不可以插入。思路:用了一个主队列,和一个队列数组。主队列里储存的是队名,每一个队名对应一个队列数组中的团体。学习:1.用一个map来记录队员和队员的队名是十分好的方法,应为map内部是红黑树实现,查找效率是log(n)。代码:#include#include#include#inc

2015-02-07 16:46:57 600

原创 UVa 12096 map ,vector,set,string ,stack的混用

背景:这个题对stl不熟悉根本无法自己作,只有照着理解书上的代码。思路:用一个vector容器来储存集合,map中key为集合,value为该集合对应的vector容器的下标,并把下标称为ID,stack中储存的是ID每次对stack执行操作,实际是对stack中ID对应的集合执行操作用到了set_uinon和set_intersection。#include#include#incl

2015-02-07 10:00:51 945

原创 UVa 156 map的使用

背景:主要是学习map相关知识,详见代码我的代码:#include#include#include#include#includeusing namespace std;map map1;mapmap2;vector vector1,ans;string string1_lower(string string1){ for(int i=0;i < stri

2015-02-05 22:03:44 615

原创 UVa 10815

背景:这题只能照着书敲,学习C++的用法,主要学习见对代码的注解。#include#include //流的头文件#include#include //isalpha()的头文件,类似的还有isdigit()#include#includeusing namespace std;set set1;int main(void){ string string1

2015-02-05 14:58:14 665

原创 UVa 101

背景:1Y!!!注意这根据游戏规则,无论怎样放,如果一个堆有元素,那么最底层元素必是初始在这个堆的元素思路:模拟整个过程即可。学习:1.主要是vector容器的一些使用:              a.还没有创建的空间不能用,v[]这种c语言的形式访问(就算reserve的预留空间也不行,除非用resize创建空间,否则只能push_back();)             

2015-02-04 14:56:27 553

原创 UVa 10474

背景:竟然还wa了一发,没有仔细读题,sort水过。此题代码:#include#include#include#includeusing namespace std;bool cmp(const int &a,const int &b){return a<b;}int main(void){ int n,m,count=1; while(scanf("

2015-02-03 17:56:40 532

原创 UVa 253

背景:一次编译通过加一次ac就是这么爽!!!!!!思路:枚举六个面朝上,每种情况旋转4次的所有情况,一共24种,全部枚举出来比较即可!这里比较巧妙的是把每一种情况都写作一个长度为6的字符串,并在第七位加一个'\0',这样就可以用strcmp来比较了。学习:1.#include#includeint main(void){ char l[7],r[7],temp[13

2015-02-03 11:39:54 729

原创 STL在ACM竞赛中的使用

学习:1.stringstream字符流,和string类型。#include#include#includeusing namespace std;int main(void){ string str; stringstream ss; while(getline(cin,str)){ //getline函数的返回值是其中的流cin。一旦cin读取错误就是f

2015-02-02 02:51:58 1433

原创 Coderforces 509B

背景:开始没有仔细想,后来@liu_jc 说简单遂1Y思路:找出最大堆的鹅卵石数为max,最小堆数为min。如果max-min>=k,则成立。          证明:对最大堆编号为:a1,a2,a3~amin-1,amin~amax .对最小堆编号为:b1,b2~bmin.                    让a1和b1,a2和b2,......,amin和bmin颜色一样。

2015-02-01 14:57:50 588

原创 Coderforces 509A

背景:esay学习:1.杨辉三角与组合数与二项式公式:          a:二项式公式:,组合数是二项式公式的系数,而杨辉三角是组合数的图形表示。         b:组合数公式:

2015-02-01 14:15:26 574

空空如也

空空如也

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

TA关注的人

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