当前位置:网站首页>PAT甲级 1018 Public Bike Management
PAT甲级 1018 Public Bike Management
2022-06-27 02:44:00 【九是否非随机的称呼】
迪杰特斯拉方式,要额外添加经过的站点数量,经过站点的单车总和等统计数组
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
#include<map>
#include<set>
#include<bits/stdc++.h>
using namespace std;
int main(){
int C, N, Sp, M, i, j, a, b , c, d, e, cap, minnum;
cin>>C>>N>>Sp>>M;
cap = C/2;
int nowbikes[N + 1] = {0};
int waypath[N+1][N+1];
memset((void *)waypath, 9999999, sizeof(int) * (N+1) * (N+1));
for(i = 0; i < N; i++) cin>>nowbikes[i + 1];
for(i = 0; i < M; i++){
cin>>a>>b>>c;
waypath[b][a] = waypath[a][b] = c;
}
int mindis[N + 1] = {9999999};
memset((void *)mindis, 9999999, sizeof(int) * (N + 1));
int sumbike[N + 1];
int visited[N + 1] = {0};
int points[N + 1];
mindis[0] = 0;
sumbike[0] = 0;
points[0] = 0;
int vec[N + 1] = {0};
for(i = 0; i < N + 1; i++){
minnum = 9999999;
for( j = i; j < N + 1; j++){
if(mindis[j] < minnum && visited[j]==0){
minnum = mindis[j];
d = j;
}
}
visited[d] = 1;
for( j = 0; j < N + 1; j++){
if((minnum + waypath[d][j]) < mindis[j] && visited[j]==0){
mindis[j] = minnum + waypath[d][j];
vec[j] = d;
points[j] = points[d] + 1;
sumbike[j] = sumbike[d] + nowbikes[j];
}else if((minnum + waypath[d][j]) == mindis[j] && visited[j]==0){
a = (points[d] + 1) * cap;
if(a < (sumbike[d] + nowbikes[j])){
if((sumbike[d] + nowbikes[j]) < sumbike[j]){
sumbike[j] = sumbike[d] + nowbikes[j];
mindis[j] = minnum + waypath[d][j];
vec[j] = d;
points[j] = points[d] + 1;
}
}else if(a > (sumbike[d] + nowbikes[j])){
if((sumbike[d] + nowbikes[j]) > sumbike[j]){
sumbike[j] = sumbike[d] + nowbikes[j];
mindis[j] = minnum + waypath[d][j];
vec[j] = d;
points[j] = points[d] + 1;
}
}else{
sumbike[j] = sumbike[d] + nowbikes[j];
mindis[j] = minnum + waypath[d][j];
vec[j] = d;
points[j] = points[d] + 1;
}
}
}
}
a = vec[Sp];
vector<int> vr{Sp};
vr.push_back(a);
while(a!=0){
a = vec[a];
vr.push_back(a);
}
reverse(vr.begin(), vr.end());
a = sumbike[Sp];
b = points[Sp] * cap;
if(a>=b) cout<<0<<" ";
else cout<<(b-a)<<" ";
for(i = 0; i < vr.size(); i++){
cout<<vr[i];
if(i!=(vr.size() - 1)) cout<<"->";
}
if(a>=b) cout<<" "<<(a-b);
else cout<<" "<<0;
return 0;
}边栏推荐
- 对数器
- 参数估计——《概率论及其数理统计》第七章学习报告(点估计)
- svg拖拽装扮Kitty猫
- Questions and answers of chlor alkali electrolysis process in 2022
- h5液体动画js特效代码
- Is the division of each capability domain of Dama, dcmm and other data management frameworks reasonable? Is there internal logic?
- TP5 Spreadsheet Excle 表格导出
- 剑指Offer || :栈与队列(简单)
- Paddlepaddle 20 implementation and use of exponentialmovingaverage (EMA) (support static graph and dynamic graph)
- 2022茶艺师(高级)上岗证题库模拟考试平台操作
猜你喜欢

Cvpr2022 | pointdistiller: structured knowledge distillation for efficient and compact 3D detection

Would rather go to 996 than stay at home! 24 years old, unemployed for 7 months, worse than work, no work

执念斩长河暑期规划

学习太极创客 — MQTT 第二章(三)保留消息

Flink学习4:flink技术栈

【数组】剑指 Offer II 012. 左右两边子数组的和相等 | 剑指 Offer II 013. 二维子矩阵的和

three. JS domino JS special effect

Hot discussion: what are you doing for a meaningless job with a monthly salary of 18000?

pytorch 22 8种Dropout方法的简介 及 基于Dropout用4行代码快速实现DropBlock

平均风向风速计算(单位矢量法)
随机推荐
lodash get js代码实现
学习太极创客 — MQTT(七)MQTT 主题进阶
h5液体动画js特效代码
学习太极创客 — MQTT 第二章(三)保留消息
2022茶艺师(高级)上岗证题库模拟考试平台操作
How to solve the problem of low applet utilization
455. distribute biscuits [distribution questions]
Flink learning 5: how it works
Oracle/PLSQL: NumToDSInterval Function
pytorch 22 8种Dropout方法的简介 及 基于Dropout用4行代码快速实现DropBlock
Constraintlayout Development Guide
ORM cache package for laravel
2022 Chinese pastry (Advanced) recurrent training question bank and online simulation test
Topolvm: kubernetes local persistence scheme based on LVM, capacity aware, dynamically create PV, and easily use local disk
剑指Offer || :栈与队列(简单)
Oracle/PLSQL: CharToRowid Function
CVPR2022 | PointDistiller:面向高效紧凑3D检测的结构化知识蒸馏
Flink学习2:应用场景
1、项目准备与新建
What if asreml-r does not converge in operation?
https://github.com/ZouJiu1/PAT