说是水题。。其实本蒟蒻1A的也只有第二道。。。惭愧惭愧。。。
TYVJ1502 兴建高铁
这个题目其实就是一搜索,愿意BFS或者DFS都可以,SPFA也随意。不过鉴于数据不大,推荐还是DFS(写起来比较短嘛)
Code:
#include #include #include #include #include using namespace std;int n,ans=99999999,tot=99999999;int g[51][51],v[51],w[51],p[51];void dfs(int now,int max1,int max2,int cost,int pass){ p[pass]=now; if (now==1){ int pp; switch (pass){ case 1:pp=cost;break; case 2:pp=cost-max1;break; default:pp=cost-max1-max2;break; } if ((pp =max1) dfs(i,g[now][i],max1,cost+g[now][i],pass+1); else if (g[now][i]>=max2) dfs(i,max1,g[now][i],cost+g[now][i],pass+1); else dfs(i,max1,max2,cost+g[now][i],pass+1); v[i]--; }}int main(){ cin >>n; for (int i=1;i<=n;i++){ int a,b,c; cin >>a >>b >>c; g[a][b]=g[b][a]=c; } v[0]++; dfs(0,0,0,0,0); cout <<0; for (int i=1;i<=tot;i++) cout <<" " <
TYVJ1568 Rabbit Number
这个题目第一反应是打表,第二反应还是打表。
不过后来发现在程序里算也不会超,关键是搜的时候要注意一点:组成Rabbit Number的数位不可能达到4(证明很简单。。不行题解里也有),然后就随便搜搜就可以了。
Code:
#include #include #include #include #include #include #include
TYVJ1673 位图
这题目一开始还困扰了我很久。。
打开题解,一句”用广搜可过“让我压力巨大。。
后来发现,原来不是对每个点搜最近的白点,而是从白点开始floodfill。。这样就可以秒杀了。。
我还是太弱了。。。
Code:
#include #include #include #include #include #include #include