随笔分类 - 搜索
摘要:/* 比较简单的A* 估价函数很简单就是除了左上角的联通快之外的不同的个数 加上迭代 好像答案最多在16步之内出解 这样裸裸的交上去是50分 在考虑剪枝 每个选颜色的时候一定是选左上角联通快附近的颜色 处理一下只枚举这样的颜色 80 - 90 分了就 下面是代码 */ #include #include #include using namespace std; int n,ans,g[9]...
阅读全文
摘要:/* 对于n为密码想要序列最短 那么 1234 2345 这两个一定挨着 就是说 前一个的后n-1位是后一个的前n-1位 假设n==3 我们用0-99作为点的编号建图 然后每个点连出去10条边 两个相邻点有n-1个是重复的 边的权值可用两个点计算 比如 12 23 权值为123 123 234 权值为1234 显然最后的序列是每个边记录一次 也就是跑欧拉路 对于记录下的边权 第一条输出前n-1...
阅读全文
摘要:/*双向bfs (得分和单项的一样多....)70*/ #include #include #include #include #define maxn 35 #define maxm 810010 using namespace std; int n,m,q,g[maxn][maxn]; int X,Y,sx,sy,ex,ey,falg,vis[maxn][maxn]; int xx[4]={...
阅读全文
摘要:开始按hash做的 交上去就wa 但是和标称拍了半天也没有不一样的 可能是生成的数据太水了吧... #include #include #include #define maxn 100010 #define mod 10000007 #define ll long long using namespace std; ll ha; int n,a[maxn][6],base,J[7]; bool...
阅读全文
摘要:/*虽然这暴力剪了又剪 改了又改 还是初始的20分...*/ #include #include #include #define maxn 2010 using namespace std; int n,sum,c[maxn],ans,p,t1,t2,c1,c2,f[maxn]; void Dfs(int now,int cost) { if(cost>=ans)return; ...
阅读全文
摘要:/*普通的hsah 由于元素太多 空间很小..hash碰撞很厉害.30分*/ #include #include #include #include #define maxn 100010 #define mod 2000007 #define hs 117 using namespace std; int n,l,k,cnt,f[mod+10],l1[maxn],l2[maxn]; char ...
阅读全文
摘要:/*10分钟的暴力 意料之中的5分..*/ #include #include #include #define maxn 1010 using namespace std; int n,m,p,g[maxn][maxn],w[maxn],ans; void Dfs(int now,int v) { if(now>m){ans=max(ans,v);return;} for(in...
阅读全文
摘要:/* 分三种情况 1 有环:找环长的gcd作为max gcd的超过2的最小因子作为min 2 树:所有最长链的和作为max 3为min (最长链≥3) 3 两条相交链:找出所有的这样的两条链的差 同1求 显然第三种不好处理 看了别人的做法是+反向-1的边 1 3就能合并了. */ #include #include #include #include #define maxn 1000010 ...
阅读全文
摘要:感受一下不同做法的时间 1.map+单向bfs 125ms #include #include #include #include #include using namespace std; string st,aim=" 123804765",s,si; char x; mapp; queueq; queuet; int main() { cin>>st; st=' '+st;...
阅读全文
摘要:/* 限制步数 写迭代加深 注意剪枝:当先步数+不同的个数-1>当前限制的步数 就cut */ #include #include #include #define limit 15 using namespace std; int T,ans=20,falg; int xx[9]={0,-2,-2,-1,-1,1,1,2,2}; int yy[9]={0,-1,1,-2,2,2,-2,1,...
阅读全文
摘要:/* 一开始的思路 求出每两个点之间的距离(其实枚举两个点就T了) 统计为2 的点对 然后统计答案 倍增LCA的话 是O(n+n*n) 后面的n*n是枚举那两个点 华丽的T了 60分 */ #include #include #include #define maxn 200010 using namespace std; int n,w[maxn],fa[maxn][20],head[ma...
阅读全文
摘要:/* 根据中序遍历的性质 加上子树的类似递归处理 嗯 是个石子归并 然而边界老写不对 还有循环顺序 一气之下写了记忆化.... 几下每个区间的最优值由那个点分开 即子树的根是谁 然后递归输出来 注意先递左子树 后递右子树 */ #include #include #include #define maxn 35 using namespace std; int n,f[maxn][maxn]...
阅读全文
摘要:/* 没想到还有dp的事 只能水部分分了 前几个点可以水过 4,5暴力也可以 先每个临湖点都灌一下水 (可以加剪枝 比旁边小的可以不搜) 统计每个临湖点能灌倒几个临沙漠点 并记录每个临沙漠点是否能灌倒 这样前三个点就好办了 判断可以输出不能全灌到的点 对于剩下的全部能灌倒得 暴力的话是2^n 也就水两个点了 这里如果全部能灌倒 有一个很有用的性质 : 这时每个临水点能灌到的临沙漠点 一定是相邻的...
阅读全文
摘要:/* WTF 写了好久了 开始的时候题目读错了 建图建错了 搜索写的也不好 感觉会T 总之 第一次写的很low 贴一下吧 */ #include #include #include #define N 40 #define M 40 using namespace std; int n,g[N*N][N*N],a[5][M*M]; int num[5],ans,maxx,f[N*N]...
阅读全文
摘要:/* 这题并不难 思路很简单 但是 如果记忆化的话 是会跪掉的 我们可能想到用01维护下次往上还是往下 但是我们忽略了 “每个的高度不得高于起点高度” 可能之前记忆化记下的与现在用到的高度不一样 */ #include #include #include using namespace std; int n,m,g[110][110],f[110][110][2],ans,limit; int...
阅读全文
摘要:/* 一开始想到了简单的深搜 维护当前可用的mi数组 然后回溯用哪个 不断更新新产生的mi 这样的问题是 由于mi不断产生 搜索规模扩大 不好 不好 下面是奇丑的WA掉的代码 做个反面教材 */ #include #include #include using namespace std; int n,ans=0x3f3f3f3f,f[1055],s[1055],top,vis[1055]...
阅读全文
摘要:/* 开始没啥好的思路 暴力吧 T的太严重 加了k>n的特判 结果没数据…..然后又暴力生成了几组答案 打表 然而有没有数据 华丽的爆零了 正解 回溯+DP 回溯生成k数组 然后DP找最优解更新 */ #include #include #include using namespace std; int n,k,f[550],a[55],ans[55],Ans; void Judge()/...
阅读全文
摘要:/* 我觉得挺对的啊 实在是考虑不到有什么情况会判不了 70分 就这样吧 - - */ #include #include #include #include #include #define maxn 310 using namespace std; int init() { int x=0;char s=getchar(); while(s'9')s=getchar(); ...
阅读全文
摘要:/* 这题实在调糊了 借鉴的题解的一些判断方法 位运算大法好 - - 因为要集齐所有的宝石所以状态压缩一下 f[i][j][s]将s化为二进制 每一0表示该宝石没有 1表示该宝石有 有:到(i,j)这个点时 宝石收集状况为s的状态是否存在 */ #include #include #include #include using namespace std; int T,n,m,k,f[21...
阅读全文
摘要:/* 和普通的迷宫问题类似只是多了一个叫传送门的东西 对于传送门的处理: 每当跑到传送门就把其余所有传送门周围的点都入队 传送门之间不花费时间并且从不是传送门的点走到传送门 也不花费时间花费时间的(好像说了句废话.) 所以判断一下 */ #include #include #include #include #include #define maxn 5010 using namespace ...
阅读全文

浙公网安备 33010602011771号