algorithm_2024/README.md
2024-10-13 18:36:18 +08:00

1.7 KiB
Executable File
Raw Blame History

algorithm_2024

algorithm_2024

错题本

Luogu某题

数组越界导致变量异常更改

OJ4980:拯救行动

未考虑无答案(特殊情况)时输出

优先对联是从大到小排序重载运算符时需反向或者std::greater

struct Status{
    Point now;
    ll step;
    bool operator<(const Status &that)const noexcept{
        return this->step > that.step;
    }
};

std::priority_queue<Status> q;

P1330

BFS时注意初始化一开始的去重数组

void bfs(){
    for(ll i{1};i<=n;i++){
        color_sum[1]=color_sum[2]=0;
        if(vis[i])continue;
        q.push(i);
        set_color(i, 1);
        vis[i]=true; // 注意初始化错误
        while(!q.empty()){

P3957

初始状态依赖已走过的部分时注意起始点状态

    for(ll coin{0};coin<=(points[n].posit-d);++coin){
        for(ll i{0};i<max_n;i++)dp[i]=ll_min;
        dp[0]=0; // 注意第0个点是能到达的reachable

非最优解时注意骗分卡时间

    const ll max_coin{(ll)1e5+5};//d+g = x[n] -> g = x[n]-d我的推导是这样的但是错了必须将max_coin设置为1e5+5也就是s[i]最大值,注意超时问题,可以自己生成样例测试
    
    ll l{0},r{max_coin},ans{ll_max};
    while(l<=r){
        ll mid{(l+r)/2};
        const bool check_ret{check(mid)};
        if(check_ret){
            ans = mid;
            r=mid-1;
        }else{
            l=mid+1;
        }
    }