3440. 重新安排会议得到最多空余时间 II

This commit is contained in:
li-chx 2025-07-10 14:13:01 +08:00
commit 8468f55e0e
13 changed files with 221 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
**/target

8
.idea/.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
# 默认忽略的文件
/shelf/
/workspace.xml
# 基于编辑器的 HTTP 客户端请求
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

View File

@ -0,0 +1,73 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoredPackages">
<value>
<list size="60">
<item index="0" class="java.lang.String" itemvalue="requests" />
<item index="1" class="java.lang.String" itemvalue="httpx" />
<item index="2" class="java.lang.String" itemvalue="pytweening" />
<item index="3" class="java.lang.String" itemvalue="PyMsgBox" />
<item index="4" class="java.lang.String" itemvalue="boltons" />
<item index="5" class="java.lang.String" itemvalue="pycparser" />
<item index="6" class="java.lang.String" itemvalue="atlastk" />
<item index="7" class="java.lang.String" itemvalue="ultralytics-thop" />
<item index="8" class="java.lang.String" itemvalue="redis" />
<item index="9" class="java.lang.String" itemvalue="frozenlist" />
<item index="10" class="java.lang.String" itemvalue="albucore" />
<item index="11" class="java.lang.String" itemvalue="fsspec" />
<item index="12" class="java.lang.String" itemvalue="starlette" />
<item index="13" class="java.lang.String" itemvalue="PyAutoGUI" />
<item index="14" class="java.lang.String" itemvalue="wincertstore" />
<item index="15" class="java.lang.String" itemvalue="pyperclip" />
<item index="16" class="java.lang.String" itemvalue="aiohappyeyeballs" />
<item index="17" class="java.lang.String" itemvalue="attrs" />
<item index="18" class="java.lang.String" itemvalue="psutil" />
<item index="19" class="java.lang.String" itemvalue="fonttools" />
<item index="20" class="java.lang.String" itemvalue="MouseInfo" />
<item index="21" class="java.lang.String" itemvalue="PySocks" />
<item index="22" class="java.lang.String" itemvalue="propcache" />
<item index="23" class="java.lang.String" itemvalue="oss2" />
<item index="24" class="java.lang.String" itemvalue="jsonpatch" />
<item index="25" class="java.lang.String" itemvalue="httpcore" />
<item index="26" class="java.lang.String" itemvalue="idna" />
<item index="27" class="java.lang.String" itemvalue="async-timeout" />
<item index="28" class="java.lang.String" itemvalue="pluggy" />
<item index="29" class="java.lang.String" itemvalue="cffi" />
<item index="30" class="java.lang.String" itemvalue="py-cpuinfo" />
<item index="31" class="java.lang.String" itemvalue="pycosat" />
<item index="32" class="java.lang.String" itemvalue="tortoise" />
<item index="33" class="java.lang.String" itemvalue="seaborn" />
<item index="34" class="java.lang.String" itemvalue="pyOpenSSL" />
<item index="35" class="java.lang.String" itemvalue="ruamel.yaml.clib" />
<item index="36" class="java.lang.String" itemvalue="tomli" />
<item index="37" class="java.lang.String" itemvalue="urllib3" />
<item index="38" class="java.lang.String" itemvalue="PyScreeze" />
<item index="39" class="java.lang.String" itemvalue="six" />
<item index="40" class="java.lang.String" itemvalue="asn1crypto" />
<item index="41" class="java.lang.String" itemvalue="tzdata" />
<item index="42" class="java.lang.String" itemvalue="ffmpeg-python" />
<item index="43" class="java.lang.String" itemvalue="jsonpointer" />
<item index="44" class="java.lang.String" itemvalue="chardet" />
<item index="45" class="java.lang.String" itemvalue="pandas" />
<item index="46" class="java.lang.String" itemvalue="win-inet-pton" />
<item index="47" class="java.lang.String" itemvalue="fastapi" />
<item index="48" class="java.lang.String" itemvalue="aiooss2" />
<item index="49" class="java.lang.String" itemvalue="toolz" />
<item index="50" class="java.lang.String" itemvalue="future" />
<item index="51" class="java.lang.String" itemvalue="aiohttp" />
<item index="52" class="java.lang.String" itemvalue="multidict" />
<item index="53" class="java.lang.String" itemvalue="ruamel_yaml" />
<item index="54" class="java.lang.String" itemvalue="yarl" />
<item index="55" class="java.lang.String" itemvalue="pytz" />
<item index="56" class="java.lang.String" itemvalue="aiosignal" />
<item index="57" class="java.lang.String" itemvalue="PyGetWindow" />
<item index="58" class="java.lang.String" itemvalue="PyRect" />
<item index="59" class="java.lang.String" itemvalue="apscheduler" />
</list>
</value>
</option>
</inspection_tool>
</profile>
</component>

8
.idea/modules.xml Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/rust_test.iml" filepath="$PROJECT_DIR$/.idea/rust_test.iml" />
</modules>
</component>
</project>

13
.idea/rust_test.iml Normal file
View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="EMPTY_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/test_mod/src" isTestSource="false" />
<excludeFolder url="file://$MODULE_DIR$/src/test_mod/target" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

6
.idea/vcs.xml Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

7
Cargo.lock generated Normal file
View File

@ -0,0 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 4
[[package]]
name = "rust_test"
version = "0.1.0"

6
Cargo.toml Normal file
View File

@ -0,0 +1,6 @@
[package]
name = "rust_test"
version = "0.1.0"
edition = "2024"
[dependencies]

82
src/main.rs Normal file
View File

@ -0,0 +1,82 @@
use std::cmp::max;
struct Solution;
impl Solution {
pub fn max_free_time(event_time: i32, start_time: Vec<i32>, end_time: Vec<i32>) -> i32 {
let mut first_selection = 0;
let mut second_selection = 0;
let mut third_selection = 0;
if end_time[end_time.len() - 1] < event_time {
first_selection = event_time - end_time[end_time.len() - 1];
}
let mut last_time = 0;
for i in 0..start_time.len() {
if start_time[i] > last_time {
let val = start_time[i] - last_time;
if val > first_selection {
third_selection = second_selection;
second_selection = first_selection;
first_selection = val;
} else if val > second_selection {
third_selection = second_selection;
second_selection = val;
} else if val > third_selection {
third_selection = val;
}
}
last_time = end_time[i];
}
let check_can_add = |left_space: i32, right_space: i32, needed: i32| -> bool {
if needed <= third_selection {
return true;
}
if needed <= second_selection {
if left_space == second_selection && right_space == first_selection ||
left_space == first_selection && right_space == second_selection {
return false;
}
return true;
}
if needed <= first_selection {
if left_space != first_selection && right_space != first_selection {
return true;
}
}
return false;
};
last_time = end_time[0];
let mut last = start_time[0];
let mut ans = start_time[0];
for i in 1..start_time.len() {
let left_space = last;
let right_space = start_time[i] - last_time;
let new_val = if check_can_add(left_space, right_space, end_time[i - 1] - start_time[i - 1]) {
left_space + right_space + end_time[i - 1] - start_time[i - 1]
} else {
left_space + right_space
};
ans = max(ans, new_val);
last = right_space;
last_time = end_time[i];
}
{
let left_space = last;
let right_space = event_time - last_time;
let new_val = if check_can_add(left_space, right_space, end_time[end_time.len() - 1] - start_time[end_time.len() - 1]) {
left_space + right_space + end_time[end_time.len() - 1]
- start_time[end_time.len() - 1]
} else {
left_space + right_space
};
ans = max(ans, new_val);
}
ans
}
}
fn main() {
let sl = Solution::max_free_time(5, vec![1, 3], vec![2, 5]);
println!("{}", sl);
}

7
src/test_mod/Cargo.lock generated Normal file
View File

@ -0,0 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 4
[[package]]
name = "test_mod"
version = "0.1.0"

6
src/test_mod/Cargo.toml Normal file
View File

@ -0,0 +1,6 @@
[package]
name = "test_mod"
version = "0.1.0"
edition = "2024"
[dependencies]

3
src/test_mod/src/main.rs Normal file
View File

@ -0,0 +1,3 @@
fn main() {
println!("Hello, world!");
}

1
src/testmod.rs Normal file
View File

@ -0,0 +1 @@
mod test_mod;