第一版拿到了60分,超时了,后面再学习探究 剪剪枝看看有没有希望.
用邻接链表换了bitset,无明显改善效果,去掉了结束后的指针保护无明显效果.手动处理输入无明显结果
第二版拿到了80分超时了, 减掉了消息队列中消息传递时相同的时候取消传递.
题目内容https://blog.csdn.net/best335/article/details/104097464
链的数据结构思考了好一会儿,最后每个节点保存一个自己分链的块指针,所有块哪怕是不要的块都先留着,查询的时候用栈逐个找父节点.
直接模拟了过程,使用消息队列来处理每个节点的更新.
当然如果四小时让我解决这一个题我是解不出来的.
#include "bits/stdc++.h"
#include <cstring>
#include <cstdlib>
#include <cstdio>
#define mk(a,b) make_pair(a,b)
using namespace std;
#define M 502
struct BLOCK{
BLOCK *parent;
int len;
int id;
BLOCK(BLOCK *p,int l,int i):parent(p),len(l),id(i){}
BLOCK(){};
};
list<unsigned short int> ADJ[M];