随笔分类 - school
摘要:问题 D: Rorororobot 比赛时没看懂题目,错失良机 题意:问从一点x是否能到另一点y,约束每次走k格,且不能出界和碰墙 算法:st表 因为判断不能比较简单,所以先判断NO 1.如果坐标相差不满足k的倍数一定不能过 2.如果两则之间隔了一道墙,需要判断是否可行 2.1 算出两者之间最高的墙
阅读全文
摘要:问题 K: 计算平均值最大子段 可以想到的做法是先枚举区间长度,然后计算每一个符合的区间平均值,但是会超时(timeout),很明显是时间复杂度n^2 考虑如何优化(当然一开始没想到,还是老师提醒了一波)(明明之前课上还做到过)(哭) 如何在O(n)判断一个区间是否满足,除了前缀和加除法的方法,也可
阅读全文
摘要:问题 A: 字符串加密 直接模拟即可 点击查看代码 void bu_f(){ string s; getline(cin,s); LL ans=0; for(int i=0;i<s.size();i++){ if(s[i]>='a'&&s[i]<='z') ans+=s[i]-'a'; else i
阅读全文
摘要:问题 D: 迷宫 注意行列的坑点即可,可以多开一维来判断方向 优先枚举转向少的,因为转向越少越可能达到 点击查看代码 int vis[110][110][5];//第三维表示方向 0向上 1向右 2向下 3向左 char st[110][110];//存图,注意坑点:行列反过来 struct nod
阅读全文
摘要:理性查看,提升自己 问题 K: 连贯子序列 抗病在线,终于搞定了,时间复杂度n^2不让过,优化了半天,终于利用map在nlog下完成了。 我还是太菜了,想不出二分或者队列的方法,dp也不行。 点击查看代码 #include<bits/stdc++.h> using namespace std; #d
阅读全文
摘要:二叉树的遍历 点击查看代码 #include<bits/stdc++.h> using namespace std; const int N=150; int parent[N]; int child[N][2]; void dfs1(int u){ cout<<u<<' '; if(child[u
阅读全文
摘要:问题 G: 夜刀与黑角 如果两个人全部访问则 ans = 4*(n-1) 考虑删除没有遍历的节点 对于角色A: 1.对于以u为根的节点,如果存在A需要访问的节点,则u必须要访问 2.对于以u为根的节点,如果存在B需要访问的节点x,dep[x]-dep[u]>=D,则u须要访问 3.其他情况,可以不用
阅读全文
摘要:问题 E: 兔兔的最小数组 如果你觉得并查集难以理解的话请看此篇 题意:求字典序最小 思路: 比较字典序最小,类似于字符串的比较:只要前面保证最小即可,如:1000大于0111 首先最简单,考虑暴力枚举每个b数组,使得取模后最小,时间复杂度为n^2,(注意:使用后的b数组应该删除) 暴力肯定会wa,
阅读全文
浙公网安备 33010602011771号