Memo for ACM/ICPC Shanghai Regional Contest Online Round

本文详细讨论了比赛中遇到的技术难题,包括15数码问题、随机二分法、资源分配策略、简单题的复杂性、矩阵秩与哈密顿路径、平方根逼近与数据结构应用、LCM方案数计算、独特子串问题解决、几何问题求解等,并提供了相应的解题思路与技巧。

 1. 数据居然没有错, 我太欣慰了!
2. 题目居然描述有这么多问题, 我应该检讨
3. 在clar被骂了, 但是我觉得我确实管不过来
4. 题目被虐成马了, 但是我觉得这也不错……
5. 杭电也不容易, 这个确实很难保证比赛的稳定……
6. 大家更不容易, 虽然系统最后如此不顺, 但是还是坚持下来了……

简单的题解如下, 仅供参考:

A. 15数码问题…… 多出来的地方都是死角
B. 好像随便怎么二分都可以过? 我也不知道为啥这么多AC。
C. 本来以为挺难的, 哪知道大家直接就过了。 这个根据各个tile的性质:
1. 首先拿的肯定是方块, 因为拿了自己还有多。
2. 然后是Z, 因为Z或者自己拿了自己还有多, 或者可以破坏别人的这种情况
3. T这个玩意儿, 其实只有奇数和偶数的区别
4. L比I要先强, 因为I本来就是自己的钱。 首先应该尽量抢别人的钱, 再来抢自己的。
5. 好像做完了
D. 这么一道简单题…… 居然过的人这么少…… 因为时间越长那么sniper越容易找到位置狙击, 所以可以二分答案。
E. 这题主要的想法其实很简单, 考虑矩阵的秩, 就是有效行数。 我们来枚举几个变量分别是啥, 然后显然我们枚举到秩*秩就只有唯一解了, 于是要么枚举量很小, 要么秩很小。 都无所谓。
F. 这题题目描述各种不清楚…… 坑爹。 不过就是一个哈密顿路条数问题。 而且有效结点只有16个。
G. 主要在于, 变成1以后sqrt就不会变了。 于是就维护一下哪些是1了, 其他的暴力求sqrt即可。 用数据结构来回答询问
H. 1-N的数中问选若干个使得lcm大于等于M的方案数。 dp, 当前选了前i个数, 当前lcm是j, 就行了。 数据有点多, 答案只用算一遍
I. 就是distinct substring的二维版, 于是我们枚举一维, 然后把字符串拼成一个大的。 用后缀数组弄一弄就行了
J. 枚举两个点弄出一条线, 其中一个点作为坐标的原点会比较简单, 然后解个方程即可。 要注意一些特殊情况, 比如所有点都在一起什么的

 

 

http://blog.renren.com/blog/239770980/758683305

all 463 464 0.989 0.988 0.995 0.914 ^CTraceback (most recent call last): File "/root/miniconda3/bin/yolo", line 8, in <module> sys.exit(entrypoint()) File "/root/miniconda3/lib/python3.8/site-packages/ultralytics/cfg/__init__.py", line 983, in entrypoint getattr(model, mode)(**overrides) # default args from model File "/root/miniconda3/lib/python3.8/site-packages/ultralytics/engine/model.py", line 799, in train self.trainer.train() File "/root/miniconda3/lib/python3.8/site-packages/ultralytics/engine/trainer.py", line 227, in train self._do_train(world_size) File "/root/miniconda3/lib/python3.8/site-packages/ultralytics/engine/trainer.py", line 468, in _do_train self.save_model() File "/root/miniconda3/lib/python3.8/site-packages/ultralytics/engine/trainer.py", line 567, in save_model "ema": deepcopy(self.ema.ema).half(), File "/root/miniconda3/lib/python3.8/copy.py", line 172, in deepcopy y = _reconstruct(x, memo, *rv) File "/root/miniconda3/lib/python3.8/copy.py", line 270, in _reconstruct state = deepcopy(state, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 146, in deepcopy y = copier(x, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 230, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 172, in deepcopy y = _reconstruct(x, memo, *rv) File "/root/miniconda3/lib/python3.8/copy.py", line 296, in _reconstruct value = deepcopy(value, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 172, in deepcopy y = _reconstruct(x, memo, *rv) File "/root/miniconda3/lib/python3.8/copy.py", line 270, in _reconstruct state = deepcopy(state, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 146, in deepcopy y = copier(x, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 230, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 172, in deepcopy y = _reconstruct(x, memo, *rv) File "/root/miniconda3/lib/python3.8/copy.py", line 296, in _reconstruct value = deepcopy(value, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 172, in deepcopy y = _reconstruct(x, memo, *rv) File "/root/miniconda3/lib/python3.8/copy.py", line 270, in _reconstruct state = deepcopy(state, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 146, in deepcopy y = copier(x, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 230, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 172, in deepcopy y = _reconstruct(x, memo, *rv) File "/root/miniconda3/lib/python3.8/copy.py", line 296, in _reconstruct value = deepcopy(value, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 172, in deepcopy y = _reconstruct(x, memo, *rv) File "/root/miniconda3/lib/python3.8/copy.py", line 270, in _reconstruct state = deepcopy(state, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 146, in deepcopy y = copier(x, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 230, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 172, in deepcopy y = _reconstruct(x, memo, *rv) File "/root/miniconda3/lib/python3.8/copy.py", line 296, in _reconstruct value = deepcopy(value, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 172, in deepcopy y = _reconstruct(x, memo, *rv) File "/root/miniconda3/lib/python3.8/copy.py", line 270, in _reconstruct state = deepcopy(state, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 146, in deepcopy y = copier(x, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 230, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 172, in deepcopy y = _reconstruct(x, memo, *rv) File "/root/miniconda3/lib/python3.8/copy.py", line 296, in _reconstruct value = deepcopy(value, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 172, in deepcopy y = _reconstruct(x, memo, *rv) File "/root/miniconda3/lib/python3.8/copy.py", line 270, in _reconstruct state = deepcopy(state, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 146, in deepcopy y = copier(x, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 230, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 172, in deepcopy y = _reconstruct(x, memo, *rv) File "/root/miniconda3/lib/python3.8/copy.py", line 296, in _reconstruct value = deepcopy(value, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 172, in deepcopy y = _reconstruct(x, memo, *rv) File "/root/miniconda3/lib/python3.8/copy.py", line 270, in _reconstruct state = deepcopy(state, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 146, in deepcopy y = copier(x, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 230, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 172, in deepcopy y = _reconstruct(x, memo, *rv) File "/root/miniconda3/lib/python3.8/copy.py", line 296, in _reconstruct value = deepcopy(value, memo) File "/root/miniconda3/lib/python3.8/copy.py", line 172, in deepcopy y = _reconstruct(x, memo, *rv) File "/root/miniconda3/lib/python3.8/copy.py", line 264, in _reconstruct y = func(*args) File "/root/miniconda3/lib/python3.8/copyreg.py", line 91, in __newobj__ return cls.__new__(cls, *args) KeyboardInterrupt (base) root@autodl-container-0ed04896a6-758eee3c:~/car/zzz/ultralytics/models# import signal bash: import: command not found (base) root@autodl-container-0ed04896a6-758eee3c:~/car/zzz/ultralytics/models# from ultralytics import YOLO bash: from: command not found (base) root@autodl-container-0ed04896a6-758eee3c:~/car/zzz/ultralytics/models# (base) root@autodl-container-0ed04896a6-758eee3c:~/car/zzz/ultralytics/models# def save_and_exit(signum, frame): bash: syntax error near unexpected token `(' (base) root@autodl-container-0ed04896a6-758eee3c:~/car/zzz/ultralytics/models# print("Saving model before exit...") bash: syntax error near unexpected token `"Saving model before exit..."' (base) root@autodl-container-0ed04896a6-758eee3c:~/car/zzz/ultralytics/models# model.save("manual_save.pt") bash: syntax error near unexpected token `"manual_save.pt"' (base) root@autodl-container-0ed04896a6-758eee3c:~/car/zzz/ultralytics/models# exit(0) bash: syntax error near unexpected token `0' (base) root@autodl-container-0ed04896a6-758eee3c:~/car/zzz/ultralytics/models# (base) root@autodl-container-0ed04896a6-758eee3c:~/car/zzz/ultralytics/models# signal.signal(signal.SIGINT, save_and_exit) bash: syntax error near unexpected token `signal.SIGINT,' (base) root@autodl-container-0ed04896a6-758eee3c:~/car/zzz/ultralytics/models# model = YOLO("yolov8n.pt") bash: syntax error near unexpected token `(' (base) root@autodl-container-0ed04896a6-758eee3c:~/car/zzz/ultralytics/models# model.train(data="your_data.yaml", epochs=500)
07-05
从错误信息来看,您尝试在 **Linux 终端** 中直接输入 Python 代码(如 `import signal`、`from ultralytics import YOLO`),但终端默认执行的是 **Shell 命令** 而非 Python 代码,导致语法错误。以下是解决方案: --- ### **正确操作步骤** #### **1. 进入 Python 交互环境** 在终端中输入 `python` 或 `python3` 启动交互式环境,再输入 Python 代码: ```bash python ``` 然后粘贴以下代码: ```python import signal from ultralytics import YOLO def save_and_exit(signum, frame): print("Saving model before exit...") model.save("manual_save.pt") exit(0) signal.signal(signal.SIGINT, save_and_exit) model = YOLO("yolov8n.pt") model.train(data="your_data.yaml", epochs=500) ``` #### **2. 或直接运行 Python 脚本** 将代码保存为 `train.py` 文件,然后执行: ```bash nano train.py # 粘贴代码并保存 python train.py ``` --- ### **针对原问题的解决方案** #### **1. 立即恢复训练** 由于训练已中断,但日志显示模型性能良好(mAP50=0.995),优先检查是否已保存权重: ```bash ls -lh runs/detect/train/weights/ ``` - 如果存在 `last.pt` 或 `best.pt`,直接加载验证: ```python from ultralytics import YOLO model = YOLO("runs/detect/train/weights/last.pt") model.val() # 测试性能 ``` #### **2. 修复 EMA 保存错误** 如果问题仍为 `deepcopy` 递归错误,建议以下方法: ##### **方法 1:禁用 EMA** 在训练命令中添加 `--ema=False`: ```bash yolo train model=yolov8n.pt data=your_data.yaml epochs=500 ema=False ``` ##### **方法 2:升级环境** ```bash pip install --upgrade torch ultralytics ``` ##### **方法 3:手动保存检查点** 在训练脚本中添加周期性保存逻辑: ```python from ultralytics import YOLO import os model = YOLO("yolov8n.pt") for epoch in range(500): model.train(data="your_data.yaml", epochs=1, save=True) if epoch % 10 == 0: # 每10个epoch保存一次 model.save(f"backup_epoch{epoch}.pt") ``` --- ### **关键注意事项** 1. **终端与 Python 环境** - Shell 命令(如 `ls`、`cd`)和 Python 代码需在对应环境中执行。 - 混淆环境会导致 `syntax error`(如直接在终端输入 `import signal`)。 2. **模型保存路径** - YOLO 默认保存到 `runs/detect/train/weights/`,可通过 `project=` 和 `name=` 自定义路径: ```bash yolo train model=yolov8n.pt data=your_data.yaml project=my_project name=exp1 ``` 3. **远程服务器训练** - 使用 `tmux` 或 `screen` 防止终端断开导致训练中断: ```bash tmux new -s yolov8_train yolo train model=yolov8n.pt data=your_data.yaml epochs=500 # 按 Ctrl+B, D 脱离会话 ``` --- ### **后续步骤** 1. **验证权重文件** ```python model = YOLO("runs/detect/train/weights/last.pt") metrics = model.val() # 输出验证指标 print(metrics.box.map) # 检查mAP ``` 2. **导出模型** ```bash yolo export model=best.pt format=onnx # 转换为ONNX格式 ``` 3. **排查环境问题** - 检查 Python 和 PyTorch 版本: ```bash python --version pip show torch ultralytics ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值