algorithm_2024
src | ||
.gitignore | ||
CMakeLists.txt | ||
LICENSE | ||
README.md | ||
test.cpp |
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;
}
}