Google Code Jam 2019 Round 1A Pylons(爆搜+贪心)
这道题,对于小数据,直接上爆搜,也就是把每个点所有能到的地方都用vector存一下,当0的时候,任意选点,之后再从所有能到的地方选点。因为第一问数据非常小,所以算法合格 但是第二问数据比较大,可以采用贪心算法(没有证明正确性,但是跑过了所有数据),在上面的前提下,每次选点都从合法范围最大的点出发 从直觉上来看,这样确实能够有更多的选择性和容错率,但是没有证明他的正确性。 #include<iostream> #include<cstring> #include<cstdio> #include<map> #include<algorithm> #include<queue> #include<set> #define ull unsigned long long using namespace std; typedef long long ll; typedef pair<int,int> pll; typedef pair<int,pair<int,int> > plll; const int N=1e5+10; const int inf=0x3f3f3f3f; vector<pll> g[300][300]; vector<pll> ans; int st[301][301]; int flag[301][301]; int px[N],py[N]; bool dfs(int