ACM
教室中的行走者
这个作者很懒,什么都没留下…
展开
-
UVA-12096解题原理分析及局限性论证
UVA-12096解题原理分析及局限性论证 本题具有一定的特殊性,在于其新集合的大小永远大于等于先前集合,所以我们可以采用set.insert进行排列,并使用str.size()-1求得相应的id。如果本题中有类似集合减法的操作的话,本段代码并不能实现这种操作。囿于时间复杂度,本题不允许遍历查找,所以上述减法情况以什么方法实现仍不是很清楚。 本题的实现原理在于实现str和id间的双射,每种集合对应...原创 2019-07-30 08:56:11 · 180 阅读 · 0 评论 -
关于基础搜索中的加难题(穿墙术)的讨论
例题为UVA-1600 本题中不同于普通搜索的是加入了穿墙和穿墙回复效果,所以即使是同样的一个点,在前来的路上所经历的墙也是不同的,是需要分类讨论的。在代码上的实现便是为vis数组增加维数,而这样的思路同时也适用于一些其他情况,例如有多个人在一起搜索(CSL的学生卡)。不使用结构体中的改变是因为那样我们在初始化时会多敲代码也会增加整体空间复杂度,同时不易理清思路。这样的方法是值得掌握的。 #inc...原创 2019-08-05 10:08:42 · 180 阅读 · 0 评论 -
搜索基础加难题(规律型动态地图)
例题为UVA-11624 本题中出现了类似动态地图的变量火焰,这时我们需要知道不同变量到达相同位置的时间关系,所以本题需要两次bfs并对时间信息进行记录,所以采用如下代码。 #include<iostream> #include<stdio.h> #include<vector> #include<map> #include<cstring&g...原创 2019-08-05 10:46:18 · 105 阅读 · 0 评论 -
类似邻接矩阵的存放二分图方式
例题:poj1274 这道题只给了10000kb的内存,按以前的vector存就炸了(然而我一开始不信邪,结果被疯狂罚时),所以联想了一下,发现二分图也是图,那可以使用拓展后的邻接矩阵来存。于是就搜了一下,还真有: #include<cstdio> #include<cstring> #include<iostream> #include<queue>...原创 2019-08-07 13:19:46 · 482 阅读 · 0 评论 -
ACM之路——2019南京网络赛A题
题目链接传送门 这道题上来应该是找规律(打表不现实,也很浪费空间,就算允许也应该先考虑规律),这个规律也比较简单,就是按照主对角线对矩阵进行拆分,这样可以发现所有元素都呈现如下规律 ll ind(ll x,ll y,ll n){ ll qs=n/2,q=min(n-y+1,min(n-x+1,min(x,y)))-1; if(x==qs+1&&y==qs+1){ retur...原创 2019-09-03 13:53:42 · 398 阅读 · 0 评论 -
9/28B题
传送门~~~ 这道题最有意思的地方在于,我们如果能够采用逆向思维,从后向前把图给拆开来,就变得很简单,不用想从前开始的先后顺序了(例如,当前可拆点权值全一样,但下层的点点权影响结果,就有先后顺序了) 所以我们倒过来拆,就只用考虑当前了。(woc,大神们果然nb啊 //B #include <bits/stdc++.h> using namespace std; typedef long...原创 2019-09-28 22:18:18 · 132 阅读 · 0 评论