一些重要知识点

函数lower_bound()在first和last中的前闭后开区间进行二分查找,
返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置
注lower_bound返回的是一个地址

  lower_bound 和upper_bound 与 sort函数都在<algorithm>头文件中

sort函数的使用 sort(a,a+n); 是对a[0]到a[n-1] 升序的排序
bool cmp(int i,int j)
{ return i<j;}            sort(a,a+n,cmp);是对a[0]到a[n-1] 升序的排序
bool cmp1(int i,int j)
{return i>j}              sort(a,a+n,cmp1);是对a[0]到a[n-1] 降序的排序

#include<iostream>//不管哪种排序 遇到重复都会排在一起 
#include<algorithm>
using namespace std;
bool cmp(int i,int j)
{
	return i<j;
}
bool cmp1(int i,int j)
{
	return i>j;
}
int main()
{
	int a[10]={1,2,1,5,6,7,4,3,8,11};
	sort(a,a+10);
	for(int i=0;i<10;i++)
	{
		cout<<a[i]<<" ";	
	} 
	 cout<<endl;
	sort(a,a+10,cmp);
	for(int i=0;i<10;i++)
	{
		cout<<a[i]<<" ";	
	} 
	cout<<endl;
	sort(a,a+10,cmp1);
	for(int i=0;i<10;i++)
	{
		cout<<a[i]<<" ";	
	} 
	return 0;
}
结构体

定义有三种方式:

一:

struct 结构体名称{
	数据类型 member1;
	数据类型 member2; 
} 
定义变量 struct 结构体名称 结构体结构体变量名
 struct Student{
 	int sNo;
 	char name[10];
 }; 
 struct Student stu;

sort()函数实现对结构体的排序

ios::sync_with_stdio(false);的作用:取消cin和stdin的同步性加快读取一大串数据的速度http://blog.csdn.net/yujuan_mao/article/details/8119529


string的常规使用

#include<iostream>
using namespace std;
int main()
{
	string str1;
	cin>>str1;v//举例 str1="ab"
	cout<<str1.size()<<endl;
	cout<<str1[1]<<endl;
	return 0;
}
str1[0]=a;
str1.size()=2;

Hash用来处理表格
int v[5][5]=
{{5,-1,-2,-1,-3},
  {-1,5,-3,-2,-4},
  {-2,-3,5,-2,-2},
  {-1,-2,-2,5,-1},
  {-3,-4,-2,-1,0},              
};
map<char,int> mapp;//map 点对关系 字符跟数值对应起来  字符可以做下标 通过映射关系 编程效率可以更快
mapp['A']=0;
mapp['C']=1;
mapp['G']=2;
mapp['T']=3;
mapp['_']=4;
可以用来处理这个表格

http://acm.hdu.edu.cn/diy/contest_showproblem.php?pid=1003&cid=33115就是这个题目的表格


0x3f3f3f3f的使用

0x3f3f3f3f的十进制是1061109567,也就是10^9级别的(和0x7fffffff(32-bit int的最大值)一个数量级),而一般场合下的数据都是小于10^9的,所以它可以作为无穷大使用而不致出现数据大于无穷大的情形。

另一方面,由于一般的数据都不会大于10^9,所以当我们把无穷大加上一个数据时,它并不会溢出(这就满足了“无穷大加一个有穷的数依然是无穷大”),事实上0x3f3f3f3f+0x3f3f3f3f=2122219134,这非常大但却没有超过32-bit int的表示范围,所以0x3f3f3f3f还满足了我们“无穷大加无穷大还是无穷大”的需求。


最大好处:
     如果我们想要将某个数组清零,我们通常会使用memset(a,0,sizeof(a)),但是当我们想将某个数组全部赋值为无穷大时(例如解决图论问题时邻接矩阵的初始化),就不能使用memset函数了,因为memset是按字节操作的,它能够对数组清零是因为0的每个字节都是0,现在好了,如果我们将无穷大设为0x3f3f3f3f,那么奇迹就发生了,0x3f3f3f3f的每个字节都是0x3f!
     所以要把一段整型数组全部置为无穷大,我们只需要 memset(a,INF,sizeof(a))




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值