3440. 重新安排会议得到最多空余时间 II
This commit is contained in:
commit
8468f55e0e
|
@ -0,0 +1 @@
|
||||||
|
**/target
|
|
@ -0,0 +1,8 @@
|
||||||
|
# 默认忽略的文件
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# 基于编辑器的 HTTP 客户端请求
|
||||||
|
/httpRequests/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
|
@ -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"
|
|
@ -0,0 +1,6 @@
|
||||||
|
[package]
|
||||||
|
name = "rust_test"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
|
@ -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);
|
||||||
|
}
|
|
@ -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"
|
|
@ -0,0 +1,6 @@
|
||||||
|
[package]
|
||||||
|
name = "test_mod"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
|
@ -0,0 +1,3 @@
|
||||||
|
fn main() {
|
||||||
|
println!("Hello, world!");
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
mod test_mod;
|
Loading…
Reference in New Issue