Noip前的大抱佛脚----奇技淫巧
STL函数
set
set查找前驱后继
multiset<int>::iterator iter;
S.insert(x);
iter=S.find(x);//返回迭代器
iter--;//前驱
int ans=*iter;
S.erase(find(x));
return ans;
或者可以使用\(lower\_bound\)(大于等于)、\(upper\_bound\)(严格大于)函数
multiset<int>::iterator iter;
iter=S.upper_bound(x);
需要注意的是,\(iter\)是一个类似指针的东西,当\(set\)的结构发生改变时,\(iter\)所指向的值也会变!
删除元素
S.erase(iter);//删除迭代器所指的元素(multiset只删一个元素)
S.erase(x);//删除所有的x元素(multiset就能把所有x删掉)
S.erase(find(x));//只删一个x
map
map的遍历
\(C++\)写法
map<int,int>::iterator iter;
for(iter=Map.begin();iter!=Map.end();iter++)
int A=iter->first,B=iter.second;
\(C++11\)写法
for(auto x:Map) cout<<x.first<<" "<<x.second;//返回的是pair
map的查值
查\(x\)是否在\(Map\)中
1. if(Map[x]!=0) ...
2. if(Map.find(x)!=Map.end()) ...
一定要使用第二种方法,因为若\(x\)不在\(Map\)中,而调用\(Map[x]\)的话会自动新增一个结点\((x,0)\),使得常数变大或者发生错误
deque
双端队列
#include<deque>
deque<int> Q;
Q.push_front(x);
Q.push_back(x);
Q.pop_front(x);
Q.pop_back(x);
Q.size();
!Q.empty();
bitset
值域在\(10^9\)左右的时候用它比Map快得多!!!(10.16被卡常教训)
空间计算:除以8(严格来说\(\lceil\frac{k}{64}\rceil×8\))
结构体
重载运算符
小于号(堆)
struct food
{
int id,tim;
bool operator < (const food &b)const
{return tim>b.tim;}
//表示按tim从小到大排序(因为默认是大根堆,不清楚可以试试,注意两个const)
};
高精度以及矩阵乘法
struct BigNum
{
int a[110],w;
BigNum () {memset(a,0,sizeof(a));w=0;}//表示一调用就会执行这个函数
int &operator [] (int x) {return a[x];}//可以使用A[i]代替A.a[i]
void operator = (int x)
{
memset(a,0,sizeof(a));w=0;
while(x) {a[++w]=x%10,x/=10;}
if(!w) a[++w]=0;
}
BigNum operator + (BigNum B)
{
BigNum C;C.w=max(w,B.w);
for(int i=1;i<=C.w;i++) C[i]=a[i]+B[i];
for(int i=1;i<=C.w;i++) C[i+1]+=C[i]/10,C[i]%=10;
if(C[C.w+1]) C.w++;return C;
}
}A;
struct Matrix
{
int a[50][50];
int* operator [] (int x) {return a[x];}//可以用A[i][j]代替A.a[i][j]
Matrix () {memset(a,0,sizeof(a));}
Matrix operator * (Matrix B)
{
Matrix C;
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
(C[i][j]+=1ll*a[i][k]*B[k][j]%mod)%=mod;
return C;
}
}Base,Ans;
淫荡的操作们
O(1)的long long相乘
ll mul(ll x,ll y,ll p)
{
x%=p;y%=p;
return (x*y-(ll)((long double)x/p*y+0.5)*p+p)%p;
}
奇怪的错误点
判断一个数是否为完全平方数
sqrt返回的是double!!要强制转成int才行
String等不定长数组的使用
在调用之前一定要判是否在长度范围内,否则会出现神奇的错误
考试时严格按照给定的编译命令
否则就会出现不开O2访问数组负下标还拍上了的情况
一些细节
实数有效位数
float8 位double16 位long double32 位
Noip前的大抱佛脚----奇技淫巧的更多相关文章
- Noip前的大抱佛脚----文章索引
Noip前的大抱佛脚----赛前任务 Noip前的大抱佛脚----考场配置 Noip前的大抱佛脚----数论 Noip前的大抱佛脚----图论 Noip前的大抱佛脚----动态规划 Noip前的大抱佛 ...
- Noip前的大抱佛脚----Noip真题复习
Noip前的大抱佛脚----Noip真题复习 Tags: Noip前的大抱佛脚 Noip2010 题目不难,但是三个半小时的话要写四道题还是需要码力,不过按照现在的实力应该不出意外可以AK的. 机器翻 ...
- Noip前的大抱佛脚----字符串
目录 字符串 经验 用FFT求解字符串匹配问题 两(多)串DP时状态合并 最长公共子序列转LIS 位运算最大值 挂链哈希 哈希处理回文串 树哈希 字符串模板库 KMP 最小循环表示 Mancher A ...
- Noip前的大抱佛脚----一些思路
目录 一些思路 序列 函数问题 网格图 删除和询问 乘法问题 顺序问题 最值问题 研究成果 数论分块套数论分块的复杂度 一些思路 Tags:Noip前的大抱佛脚 序列 线段树(当然还要有主席树啊!) ...
- Noip前的大抱佛脚----数论
目录 数论 知识点 Exgcd 逆元 gcd 欧拉函数\(\varphi(x)\) CRT&EXCRT BSGS&EXBSGS FFT/NTT/MTT/FWT 组合公式 斯特林数 卡塔 ...
- Noip前的大抱佛脚----图论
目录 图论 知识点 二分图相关 DFS找环 并查集维护二分图 二分图匹配的不可行边 最小生成树相关 最短路树 最短路相关 负环 多源最短路 差分约束系统 01最短路 k短路 网络流 zkw费用流 做题 ...
- Noip前的大抱佛脚----数据结构
目录 数据结构 知识点及其应用 线段树 神奇标记 标记不下放 并查集 维护二分图 维护后继位置 堆 可并堆的可持久化 dsu on tree 方式&原理 适用范围 单调队列 尺取合法区间 模板 ...
- Noip前的大抱佛脚----赛前任务
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...
- Noip前的大抱佛脚----根号对数算法
根号算法 分块 数列分块入门九题(hzwer) 入门题1,2,3,4,5,7 问题:给一段区间打上标记后单点查询 解法:主要是每块维护一些标记,计算答案等,此类分块较为简单 注意:块大小一般为\(\s ...
随机推荐
- Asp.net mvc Kendo UI Grid的使用(二)
上一篇文章对Kendo UI做了一些简单的介绍以及基本环境,这篇文章来介绍一下Grid的使用 先上效果图: 要实现这个效果在Controller在要先导入Kendo.Mvc.UI,Kendo.Mvc. ...
- memcache知识梳理
定义: memcache是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的.需要频繁访问数据库的网 ...
- Java使用HTTP编程模拟多参数多文件表单信息的请求与处理
本文目的是提供Java环境下模拟浏览器页面提交多参数多文件表单请求以及解析请求的Demo代码.这里用Java提供的HttpURLConnection类做HTTP请求,再原始点可以直接使用socket. ...
- casperjs,phantomjs,slimerjs and spooky
1.casperjs http://casperjs.org/ CasperJS is a navigation scripting & testing utility for Phantom ...
- 对象在hibernate中的状态
首先hibernate中对象的状态有三种:瞬态.游离态和持久态,三种状态转化的方法都是通过session来调用,瞬态到持久态的方法有save().saveOrUpdate().get().load() ...
- python的unittest框架中如何删除测试数据,清理环境,可以通过addCleanup函数
def addCleanup(self, function, *args, **kwargs): """Add a function, with arguments, t ...
- 《Python核心编程》笔记
1 python是大小写敏感的 2 遍历一个字典的键值: for a in dict_obj.keys(): print a 3 列表解析功能可以让代码很简洁,比如:squared = [x ** 2 ...
- Ubuntu中文目录文件夹改为英文
打开终端,在终端中输入命令: export LANG=en_US xdg-user-dirs-gtk-update 在弹出的窗口中询问是否将目录转化为英文路径,同意并关闭. 在终端中输入命令: exp ...
- 理解JavaScript继承(一)
理解JavaScript继承(一) 我们都知道,面向对象的编程语言非常强大,之所以强大,就是其支持继承.在JavaScript中,也支持继承,而且有多种方法实现继承,比如原型链继承,借用构造函数继承, ...
- List集合的子类ArrayList和LinkedList
一: 我们常用对集合的操作,查询.增删等操作. 由于集合的存储的方式的不同,导致有些集合查询快但是增删慢.有些集合增删快.但是查询慢. ArrayList:由于ArrayList存储的方式为数组形式. ...