哈利

Luogu P4943 密室 题解

白昼怎懂夜的黑 提交于 2019-11-28 02:38:38
闲扯 这是紫题?? 做了昨天讲课听了一天的网络流,脑子都痛了,换点题做,结果随机调到这道题,发现貌似很好做的样子。。 Solution 首先我们分情况讨论一下。 罗恩去密室 \(1\) ,哈利去密室 \(2\) 。 罗恩去密室 \(2\) ,哈利去密室 \(1\) 。 罗恩吃瓜,哈利去两个密室。 对于罗恩可以走的路,哈利一定是可以走的,所以哈利到两个密室的时间一定不小于罗恩。所以罗恩选择去他能去的密室中较近的一个,剩下一个由哈利去。 为什么是对哒? 考虑罗恩去较远的一个,那么哈利到较近的一个密室所用的时间是不大于罗恩所用时间的,所以答案为罗恩到较远密室所用的时间。 考虑罗恩去较近的一个,那么哈利到较远的一个密室所用的时间是不大于罗恩所用时间的,所以答案不大于罗恩到较远密室所用的时间。 综上,对于前两种情况,可以由以上策略解决。 对于第 \(3\) 种情况,我们记录一下哈利到两间密室用时最短为多少,再找出两间密室间的最小距离,两者累加即为答案。 最后输出再取一个最小值即可。 \(ps:\) 对于前两种情况,答案应取用两人用时的最大值。 Code #include<bits/stdc++.h> #define del(a,i) memset(a,i,sizeof(a)) #define ll long long #define inl inline #define il inl

1037 在霍格沃茨找零钱 (20 分)C++ PAT (Basic Level) Practice

主宰稳场 提交于 2019-11-27 16:43:43
1037 在霍格沃茨找零钱 (20 分) 如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 —— 就如海格告诉哈利的:“十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易。”现在,给定哈利应付的价钱 P 和他实付的钱 A,你的任务是写一个程序来计算他应该被找的零钱。 输入格式: 输入在 1 行中分别给出 P 和 A,格式为 Galleon.Sickle.Knut ,其间用 1 个空格分隔。 这里 Galleon 是 [0, 10^​7​​ ] 区间内的整数,Sickle 是 [0, 17) 区间内的整数,Knut 是 [0, 29) 区间内的整数。 输出格式: 在一行中用与输入同样的格式输出哈利应该被找的零钱。如果他没带够钱,那么输出的应该是负数。 输入样例 1: 10.16.27 14.1.28 输出样例 1: 3.2.1 输入样例 2: 14.1.28 10.16.27 输出样例 2: -3.2.1 全换为最小单位-Knut单位 , 价值比:Galleon : Sickle : Knut = 493:29:1 # include <iostream> # include <string> using namespace std ; //全换为Knut单位 int knut [ 3 ] = { 493 , 29 , 1 }