首页 > 其他分享 >L3-011 直捣黄龙

L3-011 直捣黄龙

时间:2024-04-10 20:03:36浏览次数:26  
标签:tmp pre dist 210 int 011 L3 直捣黄龙 mp

dijkstra+判断。

#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
int edges[210][210],visited[210];
int cnt[210],enemy[210],pre[210],path[210];//累计城镇 累计歼敌 前驱结点 多少条路
int dist[210];//dist[i] 从起点到达i最短的距离
map<string,int> mp;//地点 序号 
string pname[210];//地点名称 
int person[210];
void dijkstra(int dist[],int visited[],int n,int s) {
	dist[s]=0;
	path[s]=1;
	for(int i=0; i<n; i++) {
		int minv = inf,minx;
		for(int j=0; j<n; j++) {
			if(!visited[j] && dist[j]<minv) {
				minv = dist[j];
				minx = j;
			}
		}
		visited[minx]=1;
		for(int j=0; j<n; j++) {
			if(minv+edges[minx][j]<dist[j]) {
				path[j]=path[minx];
				pre[j]=minx;
				dist[j]=minv+edges[minx][j];
				cnt[j]=cnt[minx]+1;
				enemy[j]=enemy[minx]+person[j];
			} else if(minv+edges[minx][j]==dist[j]) {
				path[j]+=path[minx];
				if(cnt[j]<cnt[minx]+1) {//比较城镇数量
					pre[j]=minx;
					cnt[j]=cnt[minx]+1;
					enemy[j]=enemy[minx]+person[j];
				} else if(cnt[j]==cnt[minx]+1) {
					if(enemy[j]<enemy[minx]+person[j]) {
						pre[j]=minx;
						enemy[j]=enemy[minx]+person[j];
					}
				}
			}
		}
	}
}
int main() {
	memset(edges,0x3f,sizeof(edges));
	memset(dist,0x3f,sizeof(dist));
	memset(pre,-1,sizeof(pre));
	int n,k;
	string start,ed;
	cin>>n>>k>>start>>ed;
	int s,e;
	string t;
	int count;
	s=0;//起点是0
	mp[start]=0;
	pname[0]=start;
	for(int i=1; i<n; i++) {
		cin>>t>>count;
		if(t==ed) {
			e=i;
		}
		person[i]=count;
		mp[t]=i;
		pname[i]=t;
	}
	while(k--) {
		string t1,t2;
		int dis;
		cin>>t1>>t2>>dis;
		edges[mp[t1]][mp[t2]]=edges[mp[t2]][mp[t1]]=dis;
	}
	dijkstra(dist,visited,n,s);
	vector<int> route;
	int tmp = e;
	route.push_back(tmp);
	while(pre[tmp]!=-1){
		route.push_back(pre[tmp]);
		tmp = pre[tmp];
	}
	int flag = 0;
	for(int i=route.size()-1;i>=0;i--){
		if(flag) cout << "->";
		cout << pname[route[i]];
		flag++;
	}
	cout << '\n';
	cout << path[e] << " " << dist[e] << " " << enemy[e];
	return 0;
}

标签:tmp,pre,dist,210,int,011,L3,直捣黄龙,mp
From: https://www.cnblogs.com/chengyiyuki/p/18127275

相关文章

  • P3214 [HNOI2011] 卡农
    整理下题目的三个条件:选出的\(m\)个集合都不为空。不存在完全相同的两个集合。元素\(1,2,\dots,n\)在所有的集合出现的次数均为偶数。首先,计算有序的集合是相对容易的,只需最后除以\(m!\)即可。记\(f_{i}\)表示考虑前\(i\)个集合满足以上三个条件的方案数。从条......
  • 2011年认证杯SPSSPRO杯数学建模B题(第一阶段)生物多样性的评估全过程文档及程序
    2011年认证杯SPSSPRO杯数学建模B题生物多样性的评估原题再现:  2010年是联合国大会确定的国际生物多样性年。保护地球上的生物多样性已经越来越被人类社会所关注,相关的大规模科研和考察计划也层出不穷。为了更好地建立国际交流与专家间的合作,联合国还建立了生物多样性......
  • 暖心推荐CAL温度控制器CAL33-00-000
    暖心推荐CAL温度控制器CAL33-00-000暖心推荐CAL温度控制器CAL33-00-000暖心推荐CAL温度控制器CAL33-00-000PID温度控制器-3200(32E)小型1/32ndDIN自动PID温度控制器-3200(32E)型号3200是在1992推出的1/32ndDIN(24mmx48mm)温度控制器。该型号至今仍然全面投产。为*新1......
  • FPGA入门笔记011_B——搭建串口收发与存取双口RAM简易应用系统
    1、实验现象​ 通过串口发送数据到FPGA中,FPGA接收到数据后将数据存储在双口ram的一段连续空间中,通过QuartusII软件提供的In-SystemMemoryContentEditor工具查看RAM中接收到的数据。当需要时,按下设计好的按键,则FPGA将RAM中存储的数据通过串口发送出去。2、......
  • P1314 [NOIP2011 提高组] 聪明的质监员
    P1314[NOIP2011提高组]聪明的质监员题目小T是一名质量监督员,最近负责检验一批矿产的质量。这批矿产共有$n$个矿石,从$1$到$n$逐一编号,每个矿石都有自己的重量$w_i$以及价值$v_i$。检验矿产的流程是:给定$m$个区间$\lbrackl_i,r_i\rbrack$;选出一个参数$W$;......
  • L3-008 喊山
    DFS。#include<bits/stdc++.h>usingnamespacestd;constintinf=0x3f3f3f3f;vector<vector<int>>vec;intvis[10003];intmain(){ intn,m,k; cin>>n>>m>>k; vec.resize(n+10); while(m--){ inta,b; cin>>a&......
  • 全国地级市-碳排放绩效原始dofile结果数据(含文献及原始数据)2011-2021年
    地级市-碳排放绩效数据的测算,采用GDP、人类发展指数、CO2排放测算碳排放绩效,基于《中国城市统计年鉴》中的数据,经过线性插值和ARIMA方法填补缺失,跨度2011年至2021年。该数据集详细记录了地级市的总碳排放量,但需注意,2008年以前的常住人口和城市化率数据缺失,1999年以前的总碳排放......
  • COCI2011-2012#3 ROBOT 题解
    洛谷题面部分分做法直接依照题意模拟即可。可以获得\(48\)分的好成绩。#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;longlongn,m;structnode{ longlongx; longlongy;}point[100005];longlongrobotx=0,roboty=0;longlongquery(){......
  • P2495 [SDOI2011] 消耗战
    P2495[SDOI2011]消耗战虚树优化dp模板题考虑\(m=1\)。只需要简单的树形dp,设\(f_i\)表示\(i\)子树中的关键点都到不了\(i\)点的最小代价。转移枚举子节点\(v\),有:若\(v\)点为关键点,\(f_u=f_u+w(u,v)\)。否则,\(f_u=f_u+\min(f_v,w(u,v))\)。如果每次询问都跑一遍......
  • FPGA入门笔记011_A——嵌入式块RAM的使用
    1、Cyclone-II系列FPGA内部结构图1——Altera公司Cyclone-II系列FPGA内部结构​ 如上图所示是Altera公司Cyclone-II系列FPGA内部结构,个模块作用如下:​ PLL锁相环—对时钟进行管理。​ IOEs—管脚单元,配置管脚,设置输入输出。​ 逻辑阵列—实现组合、时序逻辑。​ 块RAM......