钟神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";
}

posted @ 2025-05-03 18:38  zhuyucheng  阅读(14)  评论(0)    收藏  举报