随笔分类 - CSP
摘要:判断化学方程式是否配平。 字符串处理。 有点编译原理递归下降法的感觉。 考场源码,比较粗糙。
阅读全文
摘要:$kruskal$,有兴趣$heap\_prim$。$stl\ pq$实现复杂度相同。
阅读全文
摘要:求树的直径。 两遍$dfs$就好了。 cpp include include include include include const int maxn = 10000; const int maxm = 10000; using namespace std; int to[(maxn + max
阅读全文
摘要:模拟题。 良心出题人并没有$y_1 y_2$的样例。注意闰年的处理。 cpp include using namespace std; int dayOfMonth[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; bool isL
阅读全文
摘要:简单的替换一下字符串。 注意数组开大点。 cpp include const int maxm = 100; const int maxn = 100; using namespace std; char buf[maxm + 10][110]; struct tNode { char var[11
阅读全文
摘要:有点忧愁。$CSP$也考$Tarjan$缩点的嘛。 原理咱也不明白,咱也不敢学,找到模板就是抄。 cpp include const int maxn = 10000; const int maxm = 100000; using namespace std; int to[maxm + 10];
阅读全文
摘要:新建不超过$k$个无线路由器,求使路由器1、2连通最少的中间路由器。 首先常规建图,将相距不超过$r$的路由器(包括新建的)相连。 想到了分层$dijkstra$。类似的,作$bfs$时记录已经经过的新建路由器个数$b$。$queue$内节点的形式就是当前路由器编号、经过的新建路由器个数、经过的路由
阅读全文
摘要:求字典序最小欧拉路。 似乎不能用$Fluery$算法($O(E^2)$)。$Fluery$算法的思路是:延申的边尽可能不是除去已走过边的图的桥(割)。每走一步都要判断是否是割,应当会超时。 采用$Hierholzer$算法($O(V+E)$),亦称逐步插入回路法。思路见代码。注意根据题意,每次选取未
阅读全文
摘要:画图时思路应该清晰一点。我是将坐标$(x,y)$映射到$canvas[y][x]$上。 连线注意$+$号的情况,填充写好$dfs$就好了。 cpp include const int maxn = 100; using namespace std; int m, n, q; char canvas[
阅读全文
摘要:最小最短路径树。 $dis[j]==dis[i]+w(i,j)$时,从$w(i,j')$和$w(i,j)$考虑。——从0分到100分。 cpp include const int maxn = 10000; const int maxm = 100000; using namespace std;
阅读全文
摘要:模拟。 注意随从的编号在$summon$和$attack$随从死亡时都可能改变。 cpp include using namespace std; struct tNode { int attack; int health; }; tNode aPlayer[8]; tNode bPlayer[8]
阅读全文
摘要:$CSP$也考$DP$的嘛...想了两小时贪心的我在宿舍凌乱... 还是智障+老花啊...这不是一道区间合并裸题嘛...石子合并啊... 再看看这$3s$的时限,$O(n^3)$都够了,何必想那么久贪心呢... cpp include typedef long long LL; const int
阅读全文
摘要:一共有三层信息,三层信息的依赖关系是: $$用户user 角色role 权限authority$$ 先存储$authority$信息,$role$直接存储$authority$对应序号的信息,$user$通过$role$直接存储的是$authority$对应序号的信息。 剩下的就是字符串处理了。 唯
阅读全文
摘要:求1 n最长边最小的路径。 最短路变形。dis值向后延申的方式是:$$dis[j]=min(dis[j],max(dis[i],w(i,j))$$ 显然满足dijkstra贪心的选择方式。spfa也当然可以用。 写上三种方式,就当是模板好了。 spfa 复杂度:$O(kE)/O(VE)$ spfa的
阅读全文
摘要:要求实现简易的Markdown到Html格式的转换。 主要就是字符串处理。以空行划分各个区块,区块内部字符的输出用一个$print\_buf$实现,至于强调和超链接的嵌套,则可以递归实现。 注意用scanf % ^\n & getchar实现,输入空行的时候,这个函数匹配不到字符,是不起作用的。也就
阅读全文
摘要:要求写一个小程序完成JSON查询的功能。 查询dfs就好了。 存储JSON对象用图(树)就好,把$$作为节点,然后又是字符串处理了。 其实就是个简化版的 "201809 3元素选择器" 。 虽然说80%的评测用例对象层数不超过2层,但是经测试,凉心出题人评测用例最多的层数是20层。 cpp incl
阅读全文
摘要:dfs cpp include const int maxn = 1000; const int maxm = 10000; using namespace std; int to[maxm+10]; int nex[maxm+10]; int head[maxn+10], cnt = 0; int
阅读全文
摘要:求当前井字棋局的得分。 用dfs虚构一下搜索树,每个节点对应一个不同的棋局。 每个节点有一个situation()情况评估,若胜负已定,则对应该棋局的评分;否则为0,表示胜负未定或平局。 每个节点还有一个得分用于return,如果situation()值不为0,胜负已定,则节点不再向下拓展,得分即为
阅读全文
摘要:题目要求写一个简易的URL规则和URL地址匹配的程序。 说说我的思路。 将URL规则和地址都截成片段用结构体$$存储。对于URL规则,$type$为0代表$/$,1代表$$,2代表$$,3代表$$,4代表两个$/$之间的字符串(用$str[]$存储)。对于URL地址,$type$为0代表$/$,1代
阅读全文

浙公网安备 33010602011771号