钟神25五一笔记Day3
能不用最好永远不用+=,因为它取模时会特别慢——zhx
如果涉及到位运算,那么尽量打括号,位运算的优先级很奇怪——zhx
排列是一个1~n每个数都出现且只出现了一次的序列
DP的基本三要素
-
1.状态
-
2.转移方程:状态之间的关系
-
3.初始化:边界状态如何计算
将题目中所有在变化的量定为状态

你会发现,我们遍历的顺序,即使在复杂度相同的情况下,也会对代码速度有大的变化——zhx
遍历的顺序对代码速度的快慢有关系


缓存比内存快约100倍

lower_bound & upper_bound(二分查找函数),一定要在有序的序列中使用
lower_bound(首元素地址,尾元素地+1,目标数);
找到第一个不小于k的元素的地址
upper_bound(首元素地址,尾元素地址+1,目标数);
找到第一个大于k的元素的地址
注意:这两个函数返回的是找到数字的内存地址,要得到具体数字时,要在前面加*
例
#include<algorithm>
#include<map>
#include<set>
#include<iostream>
using namespace std;
int a[1000];
set<int> se;
int main(){
int n=10;
for(int i=1;i<=n;i++) a[i]=i*i;
auto x=lower_bound(a+1,a+n+1,15);
x--;
cout<<*x<<"\n";
for(int i=1;i<=n;i++) se.insert(i*i);
//错误写法
lower_bound(se.begin(),se.end(),15);
//正确写法
auto y=se.lower_bound(15);
cout<<*y<<"\n";
}



浙公网安备 33010602011771号