暑期集训 Day5 —— 模拟赛复盘
${\color{Green} \mathrm{Problem\ 1 :选数 }} $
签到题,一眼二分,但是打模板时死循环了:
while(L<R){
int mid=(L+R)>>1;
if(check(mid)) L=mid;
else R=mid+1;
}
后来发现 +1
要写在 check
通过的地方,不然容易 mid
值永远不变。
while(L<R){
int mid=(L+R)>>1;
if(check(mid)) L=mid+1;
else R=mid;
}
二分模板不够熟,需要多打。
${\color{White} \mathrm{}} $
${\color{White} \mathrm{}} $
${\color{White} \mathrm{}} $
${\color{Green} \mathrm{Problem\ 2 :搬砖 }} $
乍一看像是01背包的变种,只要改一下内层循环的范围就行,于是便有了开始的代码:
#include <bits/stdc++.h>
using namespace std;
struct Node{
int w;
int c;
}A[1005];
int N,M,DP[40005],ans;
int main()
{
scanf("%d",&N);
for(int i=1;i<=N;i++){
scanf("%d%d",&A[i].w,&A[i].c);
M=max(M,A[i].c*2);
}sort(A+1,A+1+N,[](Node a,Node b){return a.c<b.c;});
for(int i=1;i<=N;i++){
for(int j=A[i].w+A[i].c;j>=A[i].w;j--){
DP[j]=max(DP[j],DP[j-A[i].w]+A[i].c);
}
}
for(int i=1;i<=M;i++){
ans=max(ans,DP[i]);
}printf("%d",ans);
return 0;
}
后来样例和大样例都过了,准备打 T3
,听老师说,他到现在为止没看到一个 T2
正确的排序,于是慌慌又张张,再检查一遍,发现物品的顺序要满足 j
的最大范围递增,于是把排序规则改成了 a.w+a.c<b.w+b.c
,把 j
的初值改成了 min(A[i].w+A[i].c,M)
,终于过了。
${\color{White} \mathrm{}} $
${\color{White} \mathrm{}} $
${\color{White} \mathrm{}} $
${\color{Green} \mathrm{Problem\ 3 :语文1 }} $
下次是不是有语文2
看到题目中的这句话,立马明白是线段树。
但是区间排序怎么实现啊喂?!
赛时没想出来,打了暴力,后来才知道,需要建 26
棵线段树来维护这个字符串。线段树变化真的多。
要多打线段树题QwQ。
${\color{White} \mathrm{}} $
${\color{White} \mathrm{}} $
${\color{White} \mathrm{}} $
${\color{Green} \mathrm{Problem\ 4 :旅行者 }} $
思路考场上没想出来,一直想不到可以把编号二进制分组。打了一个 36
分的暴力,吸氧 63
分。
后来知道了思路,写代码时最后一个点一直 TLE
,后来用 bitset
代替 bool
才卡过。
${\color{White} \mathrm{}} $
${\color{White} \mathrm{}} $
${\color{White} \mathrm{}} $
总结
期望(不开 O2
):\(100+100+30+20=250\)
实际(不开 O2
):\(100+100+21+36=257\)
实际( \({\color{White} \mathrm{\ \!}}\) 开 ${\color{White} \mathrm{\ !}} $ O2
):\(100+100+21+63=284\)
这次比赛的分数还是比较满意的。但是时间没有规划好,导致最后一分钟才写完最后一题的暴力,大样例测完只剩几十秒了。以后要做好时间分配,正解不要想太久。
暑期集训 Day5 —— 模拟赛复盘的更多相关文章
- 暑期集训日志(Day0~Day5)
章·五:2019-07-15:明月不谙离恨苦,斜光到晓穿朱户 ·昨日小结: 昨天考试又是爆零边缘,除了难过就剩难过了. T1暴力打崩了只拿了5分. T2没给分时间.最后20分钟打了个残码.没仔细观察数 ...
- 8.8 正睿暑期集训营 Day5
目录 2018.8.8 正睿暑期集训营 Day5 总结 A 友谊巨轮(线段树 动态开点) B 璀璨光滑 C 构解巨树 考试代码 A B C 2018.8.8 正睿暑期集训营 Day5 时间:3.5h( ...
- 7.30 正睿暑期集训营 A班训练赛
目录 2018.7.30 正睿暑期集训营 A班训练赛 T1 A.蔡老板分果子(Hash) T2 B.蔡老板送外卖(并查集 最小生成树) T3 C.蔡老板学数学(DP NTT) 考试代码 T2 T3 2 ...
- 2019暑期金华集训 Day5 树上数据结构
自闭集训 Day5 树上数据结构 前置知识 点分治 边分治 树链剖分 LCT Top Tree LCT时间复杂度 线段树每次查询是严格\(\log n\)的,然而splay维护连续段的时候,如果每次查 ...
- 2019暑期金华集训 Day5 生成函数
自闭集训 Day5 生成函数 一般生成函数 无脑地把序列变成多项式: \[ \{a_i\}\rightarrow A(x)=\sum_{n} a_nx^n \] 形式幂级数 生成函数是一种形式幂级数. ...
- 冲刺$\mathfrak{CSP-S}$集训模拟赛总结
开坑.手懒并不想继续一场考试一篇文. 既没必要也没时间侧边栏的最新随笔题解反思相间也丑 而且最近越来越懒了竟然都不写题解了……开坑也是为了督促自己写题解. 并不想长篇大论.简要题解也得写啊QAQ. 目 ...
- [10.18模拟赛] 序列 (DP)
[10.18模拟赛] 序列 题目描述 山山有一个整数序列s1,s2,-,sn,其中1≤si≤k. 求出有多少个准确移除m个元素后不同的序列.答案模(1e9+7) 输入 输入包括几个测试用例,并且由文件 ...
- NOIp2018模拟赛四十二
今天看标题终于回到了“NOIP模拟赛”,十分高兴啊! 然后一打开题目: ********** 所以今天又是一场NOIPlus模拟赛(微笑) 成绩:0+70+0=70 A题想了个贪心被myh两分钟cha ...
- 洛谷 P5594 【XR-4】模拟赛
洛谷 P5594 [XR-4]模拟赛 洛谷传送门 题目描述 X 校正在进行 CSP 前的校内集训. 一共有 nn 名 OIer 参与这次集训,教练为他们精心准备了 mm 套模拟赛题. 然而,每名 OI ...
- [NOIP10.6模拟赛]2.equation题解--DFS序+线段树
题目链接: 咕 闲扯: 终于在集训中敲出正解(虽然与正解不完全相同),开心QAQ 首先比较巧,这题是\(Ebola\)出的一场模拟赛的一道题的树上强化版,当时还口胡出了那题的题解 然而考场上只得了86 ...
随机推荐
- use shell scrpit to jlink download bin file
一 JLINK 下载 JLINK作为一个arm的调试工具,是很多基于arm芯片无法绕过去的调试和下载工具.这里有一个问题,就是该工具链接和使用需要的命令特别多,假如不做成脚本,会浪费很多时间,笔者花了 ...
- day07-Java方法01
Java方法01 1.什么是方法? Java是语句的集合,它们在一起执行一个功能 方法是解决一类问题的步骤的有序集合 方法包含于类或者对象中 方法在程序中被创建,在其他地方被引用 设计方法的原则:方法 ...
- PAT 甲级1008【1008 Elevator】
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...
- CentOS 安装后必需所做的初始化操作
CentOS 安装后必需所做的初始化操作 #关闭SELinux sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config #关闭防火墙 sy ...
- [LeetCode] 5933. k 镜像数字的和
一.摘要 本文介绍了一种通过模拟寻找十进制镜像数字,然后判断其对应的k进制表示是否也是镜像的方法.具体来讲即从小到大遍历10进制的镜像数字,然后对10进制镜像数字转为k进制,然后判断转为k进制后是否还 ...
- javascript 把嵌套的 map 转成 object,再转 json 字符串
使用 JSON.stringify 转 map 时发现并没有转成想要的 JSON 数据,搜索发现要转成 Object 才能够转成完整的 JSON, 用递归转换: const message = new ...
- 记录--用JS轻松实现一个录音、录像、录屏的工具库
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 最近项目遇到一个要在网页上录音的需求,在一波搜索后,发现了 react-media-recorder 这个库.今天就跟大家一起研究一 ...
- 文件与Base64的互转
/** * 本地文件转换成Base64字符串 */ public String convertFileToBase64(String Path) { byte[] data = null; // 读取 ...
- bram_to_vid
Entity: bram_to_vid File: bram_to_vid.v Diagram Description Company: Fpga Publish Engineer: FP Revis ...
- KingbaseES 数据插入更新操作
数据库使用过程中,经常会遇到一种场景:业务系统对数据进行dml操作,当数据库中数据不存在时,将数据做为新记录插入到表中,当数据库中数据存在时,对现有数据进行更新操作. 下面介绍KingbaseES中对 ...