- 博客(19)
- 资源 (1)
- 收藏
- 关注
原创 map的基本应用--hdu--1004&&poj--2643
两道map的基本题,需要注意的东西都在注释里了。代码如下hdu 1004#include#include#include#includeusing namespace std;int main(){ mapm; int n,i,Max; string str; while(cin>>n&&n) { m
2014-07-30 23:26:50 459
转载 map key值自定义排序
C++代码 map mymap; for (map::iterator it = mymap.begin(); it != mymap.end(); it++) { cout key "\t" value "\n" } 上述示例代码中,key的访问顺序为KeyType默认的由小到大顺序。当KeyType为string时,则按照string的默认比较函数
2014-07-30 19:26:54 1842
转载 STL之map
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有
2014-07-30 18:21:44 393
转载 C++中pair的使用方法
pair的类型: pair 是 一种模版类型。每个pair 可以存储两个值。这两种值无限制。也可以将自己写的struct的对象放进去。。 pair p; pair p; pair p; 都可以。。。 应用:如果一个函数有两个返回值 的话,如果是相同类型,就可以用数组返回,如果是不同类型,就可以自己写个struct ,但为了方便就可以使用
2014-07-28 15:54:26 917
转载 容斥原理的应用---求1--r中与n互素数的个数
问题:求1~r中有多少个数与n互素。对于这个问题由容斥原理,我们有3种写法,其实效率差不多。分别是:dfs,队列数组,位运算。先说说位运算吧:用二进制1,0来表示第几个素因子是否被用到,如m=3,三个因子是2,3,5,则i=3时二进制是011,表示第2、3个因子被用到[cpp] view plaincopyLL Solve(L
2014-07-26 21:03:11 1404
转载 并查集
ACM之并查集(2011-07-31 20:05:22)转载▼标签:杂谈分类:数据结构并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?)来看一个实例,杭电1232畅通工程ht
2014-07-24 20:35:52 395
转载 扩展欧几里得算法及其应用
欧几里得算法欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a%b)。 证明略去了。基本代码实现:1int gcd(int a,intb)2{
2014-07-22 23:27:40 756
原创 zoj--2165
//通过dfs/bfs访问可以到达的所有结点//并统计总结点个数#include#includeusing namespace std;int x[]={-1,1,0,0};int y[]={0,0,-1,1};int n,m,visited[21][21],cnt;char map[25][25];void dfs(int x1,int y1){ for(int
2014-07-17 23:03:47 576
原创 zoj --1649
//使用了优先队列#include#include#includeusing namespace std;int x[]={-1,1,0,0},y[]={0,0,-1,1};int visited[220][220],n,m,x2,y2,ok,min1;char map[220][220];typedef struct node1{ int x,y,t;}Q;Q n
2014-07-17 23:01:37 550 1
原创 uva--12195
#include#include#includeusing namespace std;int visited[110];int a[110][110],max1;void dfs(int v){ visited[v]=1; for(int i1=0;i1<=max1;i1++) if(a[v][i1]&&!visited[i1])
2014-07-17 23:00:33 443
原创 uva--10189
#includeusing namespace std;int x[]={-1,1,0,0,-1,1,-1,1};int y[]={0,0,-1,1,-1,-1,1,1}; int n,m;char str[110][110];int search(int i,int j){ int cnt=0,k,m1=1; for(k=0;k<8;k++) {
2014-07-17 22:59:45 616
原创 poj --2199
//浮点二分#include#includeusing namespace std;double f(double x){ return (double)(8*pow(x,4.0)+7*pow(x,3.0)+2*pow(x,2.0)+3*pow(x,1.0)+6);}int main(){ int t,i,j,k; double y,first,last
2014-07-17 22:57:25 591
原创 uva --572
//搜索--简单dfs/bfs #include#include#include#include using namespace std;char map[110][110];int visited[110][110],n,m;int x[]={-1,1,0,0,-1,1,-1,1},y[]={0,0,-1,1,-1,-1,1,1};void dfs(int i,int j)
2014-07-17 22:56:19 493
原创 poj --1321
//dfs,按行开始标记列 //注意回溯思想#include#includeusing namespace std;int visited[10],cnt,n,k;char map[10][10];void dfs(int i,int num){ for(int j=0;j<n;j++) //对第i行的每一列进行一次扫描 { if(map[i][j
2014-07-17 22:55:59 443
原创 coj--1196
#include#include#includeusing namespace std;int map[110][110],n,m,visited[110][110],M;int x[]={1,0,0},y[]={0,-1,1};typedef struct { int x,y; }Node;queueq;Node node;void bfs(){
2014-07-17 22:53:56 440
原创 数据结构课设
/*10、多种基本内排序方法的实现问题描述:设计一个合成的排序程序。可供排序的方法是:插入排序、快速排序、归并排序、堆排序。要求程序具有(1)显示排序结果.(2)提供最好和最坏情况下对比计时的功能。(3)提供在不同数组元素的个数情况(当N分别等于100,1000,5000,20000时)下各种排序算法的计算时间的统计功能。*/#include#include#include
2014-07-15 23:25:59 1715
转载 STL中常用数据结构基本操作
STL 中优先队列的使用方法(priority_queu)基本操作:empty() 如果队列为空返回真pop() 删除对顶元素push() 加入一个元素size() 返回优先队列中拥有的元素个数top() 返回优先队列对顶元素在默认的优先队列中,优先级高的先出队。在默认的int型中先出队的为较大的数。使用方法:头文件: #include 声明方式:
2014-07-15 23:20:22 574
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人