【luogu2747】 [USACO5.4]周游加拿大Canada Tour[动态规划]

博客围绕P2747 [USACO5.4]周游加拿大题目展开,提到解题时要将f[1][1]初始化为1,ans也设为1。解题思路是把它看作两人同时从左边出发进行动态规划,还指出可参考floyd求最大环、最小环,但本题与之有区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

P2747 [USACO5.4]周游加拿大Canada Tour

就记得f[1][1]的时候要初始化为1 忘了ans也要设为1 直接弄的0美滋滋

把它看作两个人同时从左边出发 然后dp就好了 可以去了gai一下floyd求最大环,最小环 和这题还是有点区别

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define ll long long
 4 #define rg register
 5 const int N=100,M=60000;
 6 int n,v,ans=1,mp[N+5][N+5],f[N+5][N+5];
 7 template <class t>void rd(t &x)
 8 {
 9     x=0;int w=0;char ch=0;
10     while(!isdigit(ch)) w|=ch=='-',ch=getchar();
11     while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
12     x=w?-x:x;
13 }
14 
15 map<string,int>a;
16 
17 int main()
18 {
19     //freopen("tour.in","r",stdin);
20     //freopen("tour.out","w",stdout);
21     rd(n),rd(v);
22     memset(f,0,sizeof(f));
23     f[1][1]=1;
24     for(int i=1;i<=n;++i) {string x;cin>>x;a[x]=i;}
25     for(rg int i=1;i<=v;++i)
26     {
27         string x,y;cin>>x>>y;
28         int u=a[x],v=a[y];
29         mp[u][v]=mp[v][u]=1;
30     }
31     for(rg int i=1;i<n;++i)
32     for(rg int j=i+1;j<=n;++j)
33     for(rg int k=1;k<j;++k)
34     if(f[i][k]&&mp[k][j])
35     f[j][i]=f[i][j]=max(f[i][j],f[i][k]+1);
36     for(rg int i=1;i<=n;++i)
37     if(mp[i][n]) ans=max(f[i][n],ans);
38     printf("%d",ans);
39     return 0;
40 }

 

转载于:https://www.cnblogs.com/lxyyyy/p/10808897.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值