茅断卉 发表于 2025-11-24 13:05:12

热身赛总结 题解

1. 旅行计划

赛时思路

因为目标是:求出一直向东以城市 \(i\) 为终点最多能够游览多少个城市,我进行逆向思维,转换题意,将目标改成:以城市 \(i\) 为起点一直向西最多能够游览多少个城市,再看题目的数据范围:$n \le 10^5 $,因此便直接用 dfs 进行搜索,最后 TLE 了4个点 QwQ 。
改进思路

因为题目中说图中没有环,因此我们可以通过 DP 解决此题,所以我们就可以通过记忆化递归防止进行无效的 dfs 。
AC代码

点开有惊喜#include#define ll long longusing namespace std;ll n,m,x,y,dp;vectort;ll dfs(ll x,ll val){        if(!t.size()) return val;        ll mx=0;        for(auto y:t){                if(!dp) dp=dfs(y,val);                mx=max(mx,dp);        }        return mx+1;}int main(){        cin>>n>>m;        for(int i=1;i>x>>y;                t.push_back(x);        }        for(int i=1;i>x;                        zh[++cnt]=x;                        cxa(1,1,n,x,1);                }                else if(ch=='Q'){                        cin>>x;                        if(!check(1,1,n,x)){                                coutm;        for(int i=1;i>a;                l=max(l,a);                r+=a;        }        while(l

茹静曼 发表于 6 天前

鼓励转贴优秀软件安全工具和文档!

丁若云 发表于 前天 05:43

收藏一下   不知道什么时候能用到

甘子萱 发表于 前天 16:18

前排留名,哈哈哈
页: [1]
查看完整版本: 热身赛总结 题解