THU2017spring 1-4 Hospital

本文介绍了一道关于在公路沿线村落间寻找最佳医院建设位置的问题。通过对各村落坐标及权重的分析,给出了寻找最优解的方法,并分享了解题过程中的一些技巧与注意事项。

Hospital:https://dsa.cs.tsinghua.edu.cn/oj/problem.shtml?id=1632

描述

  有n个村落分布在一条公路的沿线,为方便村民们就医,现打算在公路沿线修建一所医院。

  由于各村落人数、年龄分布不同等原因,每个村落对医院的需求程度也不同。这里需求程度以一个非负的权值w表示:w越大,就医需求越大。对于一个选址方案,Σwi*di作为衡量其合理性的指标,其中wi和di分别表示第i个村落的权值和距离医院的距离,该指标越小,对应的选址就越优。请给出医院修建的最优位置。

输入

  共n+1行。

  第一行包含一个整数n;

  以下共n行,每行包含两个整数:第一个为对应村落的一维坐标xi,第二个为对应村落的权值wi。

输出

  共两行。

  第一行为医院的最优坐标。

  第二行为对应的最小权值,即医院选择最优坐标时的Σwi*di。

  注意,如果有多个坐标权值均为最小值,请给出这些坐标中的最小者。

输入样例
3
3 5
7 11
5 6
输出样例
5
32

限制

  1 <= n <= 300,000

  村落的地址坐标是[0, 32767]的整数。

  村落的权值是[1, 10^8]的整数。

  时间:1 sec

  空间:256 MB

提示

一级提示

  ● 可以在预处理时将坐标相同的村落合并。

二级提示

  ● 考虑医院选址向左(或向右)移动一个单位对Σwi*di的影响何时为正、何时为负。

  ● 注意你的程序是否能正确处理“有多个坐标权值均为最小值”的情况。

  ● 虽然最终选址坐标在int范围内,但计算Σwi*di的中间过程不一定在int范围内;可以使用long long,其表示的范围是[-2^63, 2^63)。

思路: 这个题卡了很久(估计和我电脑上看提示是一片空白orz有关系!!!),参考了别人的帖子明白了这是个很基础的数学问题:医院坐标自小向大移动,比较医院左右两端的wi之和,当左边开始大于等于右边,就找到满足widi最小的医院位置。

鶸智的我先排了个序,发现依旧超时;终于想到了以坐标作为下标来保存wi,然后通过60%,最后改为long long,终于AC了.....


github:https://github.com/Leputa/-THU-_PA1

<think>我们被要求查看并理解Linux服务器的当前时间和时区设置。根据引用内容,我们知道Linux服务器有两种时钟:硬件时钟(RTC)和系统时钟。时区设置会影响系统时钟的显示。 查看方法: 1. 使用`date`命令查看当前系统时间和时区信息。 2. 使用`timedatectl`命令(如果系统支持)查看更详细的时区和时钟信息。 3. 检查时区配置文件(/etc/localtime)的链接。 具体步骤: ### 1. 使用 `date` 命令 ```bash date ``` 输出示例: ``` Tue Jul 9 12:00:00 CST 2024 ``` 这里,`CST` 表示中国标准时间(东八区),即当前时区设置为Asia/Shanghai。如果显示的是其他时区(如UTC或EDT等),则说明当前不是东八区。 ### 2. 使用 `timedatectl` 命令(推荐,systemd系统) ```bash timedatectl ``` 输出示例: ``` Local time: Tue 2024-07-09 12:00:00 CST Universal time: Tue 2024-07-09 04:00:00 UTC RTC time: Tue 2024-07-09 04:00:00 Time zone: Asia/Shanghai (CST, +0800) System clock synchronized: yes NTP service: active RTC in local TZ: no ``` 这里可以清晰地看到: - 本地时间(Local time)和时区(Time zone) - 是否启用了NTP同步 - 硬件时钟(RTC)是否设置为本地时区(建议保持为UTC,即`RTC in local TZ: no`) ### 3. 检查时区配置文件 时区配置通常通过`/etc/localtime`符号链接指向`/usr/share/zoneinfo/`下的时区文件。 ```bash ls -l /etc/localtime ``` 输出示例: ``` lrwxrwxrwx 1 root root 33 Jul 9 11:45 /etc/localtime -> /usr/share/zoneinfo/Asia/Shanghai ``` 如果链接指向的是`Asia/Shanghai`,则时区为东八区。 ### 4. 查看环境变量TZ(非系统级,仅影响当前用户) 有时用户会通过设置`TZ`环境变量来覆盖系统时区(如引用[2]所述),可以检查: ```bash echo $TZ ``` 如果输出为空,则使用系统时区;如果设置了(如`Asia/Shanghai`),则当前shell使用该时区。 ### 理解时钟类型 - **系统时钟**:由操作系统维护的时间,可通过`date`命令查看和设置。系统启动时从硬件时钟读取,之后由内核维护。 - **硬件时钟(RTC)**:主板上的电池供电的时钟,即使关机也会运行。通过`hwclock`命令操作。 ### 注意事项 - 系统时钟和硬件时钟可以独立设置时区。通常建议将硬件时钟设置为UTC,而系统时钟根据时区转换(如引用[1]和引用[3]所述)。 - 修改系统时间后,建议用`hwclock --systohc`将系统时间同步到硬件时钟(引用[3])。 ### 时间同步(引用[4]) 如果时间不准确,可以使用NTP同步: ```bash # 安装ntpdate(如果未安装) sudo apt-get install ntpdate # Debian/Ubuntu sudo yum install ntpdate # CentOS/RHEL # 同步时间(以阿里云NTP服务器为例) sudo ntpdate ntp1.aliyun.com # 同步到硬件时钟 sudo hwclock --systohc ``` ### 总结 查看服务器时间和时区的关键命令: 1. `date` - 显示当前系统时间和时区缩写(如CST) 2. `timedatectl` - 显示详细的时区配置和时间同步状态 3. `ls -l /etc/localtime` - 检查系统时区配置 §§ 相关问题 §§ 1. 如何将Linux服务器时区永久更改为东八区? 2. 系统时间和硬件时钟不一致会导致什么问题? 3. 如何设置NTP服务以实现时间自动同步? 4. 为什么建议将硬件时钟设置为UTC? 5. 修改时区后,如何确保应用程序使用新时区?</think>### 查看Linux服务器时间和时区配置 #### 1. **查看当前系统时间和时区** ```bash date ``` 输出示例: ``` Tue Jul 9 12:00:00 CST 2024 ``` - **CST** 表示中国标准时间(东八区) - 末尾时区标识说明: - **CST**:中国标准时间 (+0800) - **UTC**:格林尼治时间 (+0000) - **EDT**:美国东部夏令时 (-0400) #### 2. **查看详细时区配置** ```bash timedatectl ``` 输出示例: ``` Local time: Tue 2024-07-09 12:00:00 CST Universal time: Tue 2024-07-09 04:00:00 UTC RTC time: Tue 2024-07-09 04:00:00 Time zone: Asia/Shanghai (CST, +0800) System clock synchronized: yes NTP service: active RTC in local TZ: no ``` 关键字段说明: - **Local time**:本地时间(受时区影响) - **Universal time**:UTC时间 - **Time zone**:当前时区配置 - **RTC time**:硬件时钟时间(通常为UTC)[^1][^3] #### 3. **检查时区配置文件** ```bash ls -l /etc/localtime ``` 输出示例: ``` lrwxrwxrwx 1 root root 33 Jun 15 10:30 /etc/localtime -> /usr/share/zoneinfo/Asia/Shanghai ``` - 符号链接指向 `/usr/share/zoneinfo/` 中的时区文件 #### 4. **查看硬件时钟时间** ```bash sudo hwclock --show ``` 输出示例: ``` 2024-07-09 04:00:00.123456+00:00 ``` - 硬件时钟(RTC)通常存储UTC时间[^1][^3] - 系统启动时会从硬件时钟读取时间 #### 5. **检查NTP同步状态** ```bash timedatectl | grep "NTP service" ``` - 若显示 `active` 表示时间同步服务已启用[^4] - 查看同步详情: ```bash ntpq -p ``` ### 关键概念解析 1. **系统时钟 vs 硬件时钟** [^1][^3] - 系统时钟:操作系统维护的时间(`date`命令显示) - 硬件时钟(RTC):主板电池供电的物理时钟(`hwclock`查看) - 系统启动时:硬件时钟 → 系统时钟 - 系统关机时:系统时钟 → 硬件时钟(需手动同步) 2. **时区配置文件** - 系统级配置:`/etc/localtime`(二进制文件) - 时区数据库:`/usr/share/zoneinfo/` - 用户级覆盖:`TZ`环境变量(如 `export TZ='Asia/Shanghai'`)[^2] 3. **时间同步机制** - NTP协议通过时间服务器同步网络时间[^4] - 同步命令:`sudo ntpdate pool.ntp.org` > **验证要点**:确保 `date` 输出包含 `CST` 或 `+0800`,且 `timedatectl` 显示 `Time zone: Asia/Shanghai`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值