L2-019 悄悄关注 (25 分)(天梯赛)

博客围绕天梯赛L2 - 019悄悄关注题目展开,虽未给出具体内容,但可知与该竞赛题目相关,可能涉及题目分析、解答等信息技术相关内容。

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

#include<bits/stdc++.h>
using namespace std;
map<string,int>a;
int main()
{
    int b,c,d[10005],h=0;string f,g[10005],e[10005];
    cin>>b;
    while(b--)
    {
        cin>>f;
        a[f]=1;
    }
    cin>>c;
    for(int i=1;i<=c;i++)
    {
        cin>>g[i]>>d[i];
        h=h+d[i];
    }
    h=h/c;
    int y=0;
    for(int j=1;j<=c;j++)
    {
        if(a[g[j]]==0&&d[j]>h)
        {
            e[y]=g[j];
            y++;
        }
    }
    sort(e,e+y);
    for(int l=0;l<y;l++)
    {
        cout<<e[l]<<endl;
    }
    if(y==0)
        cout<<"Bing Mei You";
    return 0;
}
### 关于天梯赛 L2-044 大众情人的解题思路 #### 问题析 题目要求找到一条最优路径,满足特定条件下的约束。具体来说,需要计算从起点到终点的一条路径,使得该路径上的某些属性达到全局最优(如时间最短、解放最多、杀伤最强)。此类问题通常可以抽象为图论中的加权有向图模型。 根据已知信息[^1],此题的核心在于构建一张带权重的图,并通过某种算法求解最佳路径及其相关统计量。输入数据提供了节点之间的连接关系以及每条边的相关参数(如距离、敌人数量等)。 --- #### 数据结构的选择 为了高效处理图的数据结构,可以选择邻接表来存储图的信息。对于每个节点 \(i\),记录其相邻节点集合及对应的边权值。这种表示方法适合稀疏图,在空间复杂度上表现更优。 --- #### 算法设计 由于题目保证存在唯一最优路径,因此可采用 **Dijkstra 算法** 来解决单源最短路问题。在此基础上扩展状态定义,不仅关注到达某一点的距离最小化,还需同步维护其他指标(如歼敌总数的最大化)。 以下是具体的实现步骤: 1. 定义一个优先队列用于动态规划过程中的松弛操作; 2. 初始化起始点的状态变量(当前距离设为零,其余初始化为默认值); 3. 对每一个待访问结点执行遍历邻居的操作,更新候选目标的状态并加入堆中等待后续评估; 4. 当最终抵达目的地时停止迭代流程,此时保存下来的即是所寻求的最佳方案。 --- #### 实现细节与注意事项 下面给出基于 C++ 的解决方案框架代码片段作为参考: ```cpp #include <iostream> #include <vector> #include <queue> using namespace std; struct State { int id, dist, enemies; }; bool operator<(const State& a, const State& b) { if (a.dist != b.dist) return a.dist > b.dist; // 小顶堆按dist升序排列 return a.enemies < b.enemies; // 同样长度下取更多敌人 } int main(){ // 输入读取部省略... vector<vector<pair<int,int>>> adj(n); // 构建邻接表 priority_queue<State> pq; vector<bool> visited(n); vector<int> minDist(n, INT_MAX), maxEnemies(n, 0); pq.push(State{startId, 0, 0}); while(!pq.empty()){ auto cur = pq.top(); pq.pop(); if(visited[cur.id]) continue; visited[cur.id]=true; if(cur.id==endId){ break; // 提前终止当触及终点 } for(auto &[nextId,cost]:adj[cur.id]){ int newDist=cur.dist+cost.first; int newEnem=cur.enemies+cost.second; if(newDist<minDist[nextId] || (newDist==minDist[nextId] && newEnem>maxEnemies[nextId])){ minDist[nextId]=newDist; maxEnemies[nextId]=newEnem; pq.push(State{nextId,newDist,newEnem}); } } } // 输出结果逻辑... } ``` 上述代码实现了 Dijkstra 变体版本,能够兼顾多维度优化需求的同时保持较高的运行效率。 --- #### 结果输出格式说明 依据题目描述的要求,需严格按照指定形式打印答案: - 路径字符串应遵循 “己方大本营->城镇1->...->敌方大本营”的模式展示; - 统计数值间以单一空格割,无多余空白字符干扰。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值