K. Travel Cards(暴力)
发布日期:2021-06-30 10:17:58 浏览次数:2 分类:技术文章

本文共 677 字,大约阅读时间需要 2 分钟。

这1800的题这么水我是没想到的…

直接把所有航班划分为若干个集合

集合内的航班两个地点都是一样的(部分目的地和终点)

计算每个集合的花费,排序替换即可

#include 
using namespace std;const int maxn=609; int n,a,b,k,f;map
m;string s[maxn][2];int cost[maxn][maxn],ans,id,w[maxn],top;int main(){ cin>>n>>a>>b>>k>>f; for(int i=1;i<=n;i++) { cin >> s[i][0] >> s[i][1]; if( m[ s[i][0] ]==0 ) m[ s[i][0] ]=++id; if( m[ s[i][1] ]==0 ) m[ s[i][1] ]=++id; int hua=a; if(i!=1&&s[i][0]==s[i-1][1]) hua=b; int id1=m[ s[i][0] ],id2=m[ s[i][1] ]; cost[ min(id1,id2) ][max(id1,id2)]+=hua; } for(int i=1;i<=2*n;i++) for(int j=1;j<=2*n;j++) if( cost[i][j] ) w[++top]=cost[i][j]; sort(w+1,w+1+top); for(int i=top;i>=1;i--) { int hua=w[i]; if(k&&f

转载地址:https://issue-is-vegetable.blog.csdn.net/article/details/107210822 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:A. String Reconstruction(三种解法,排序贪心或跳步或并查集)
下一篇:B. Tell Your World(map暴力或思维)

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月12日 06时14分11秒