thupc2023游寄
Posted gmh77
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thupc2023游寄相关的知识,希望对你有一定的参考价值。
5.26 day-1
下午咕了体育课和心理课去高铁站,8点的高铁
5.27 day0
早上到了北京,在地铁站旁边的酒店放下东西
为了给zzz省钱所以住了家庭房(1小床+1大床)……
(结果一个人睡了小床,可喜可贺
之后先摸了一上午再前往thu,中午吃了个汉堡
下午去试机,之后等到5点见到了597
(以及见到了597十分炸裂的头型
之后和597去高级餐厅等dyp,5点半dyp来了,吐槽选的地方又贵又难吃
晚上拉着597去看了dyp的合唱团表演,前面越听越困但后面突然就精神了
走在回酒店的路上,有很多感慨其实并没有
想起之前高二thupc最离谱的事情,就是大晚上骑车1h走了几公里回酒店,期间把lyx关在了外面
先不写了,以后再说
5.28 day 1
榜单:https://rank.thupc.thusaac.com/
难蚌日
10点比赛,9点出的酒店,一番折腾之后压线进赛场
然后电脑打不开,没签到拿密码条
然后身份证丢了,在门口楼梯下面捡到了
折腾回来,M题输出柯洁解决
然后来构造H题,没想到直接用二进制+lowbit,写了个dp来一次分成3块,1大2小,大向小连1,小之间连2,然后递归
感受一下没问题,写了构造过了
然后队友开始疯狂演戏,J题和lyb一起想的,他想到了从下往上维护每个点的范围,然后向上合并
我:我觉得很对
lyb:(开始写)
(看着他敲键盘一个一个字敲非常捉急
0.5h之后:
lyb:怎么还是不对
我:(看代码)
我:你的上界哪去了?
lyb:什么上界,只用维护下界就好了吧
我:???
(一番交流之后)
lyb:OK,我懂了
然后又敲了半天才过了……
接下来wjt写D,他说直接枚举分母就好了,我没太听懂题目但感觉没问题,就是暴力题
然后他算分子之后没有震荡一下来考虑左右的可能性,调了1.5h才调出来
不过之后他们把B搞出来了,可喜可贺
搞完B之后刚好封榜(比赛延迟5min,封榜也延迟了),然后我开始写A……
(前面几个小时我在都想A,想了一些时间但也不算太慢,结果一直在等他们写BDJ
最后是dp+建图求dp值跑dij,t了几发之后改了把0边一次性bfs
这样理论就是正解,然后不出意外的出意外了
总之就是最后没调出来,我也一起演了
最后lyb还开了K,两边轮着写都没搞定
(结束时发现建图的边数可能不太对劲,之后有空看看……
总之在三人不懈的互演下,成功获得了rk75的好成绩,比高二时翻了一倍
下午讲题,A题dij,F题线性基+随机数据下暴力,K题数位dp,都是可以做的题
之后去地下(?)餐厅吃了顿好的,thu的酸奶确实好喝
dyp:来thu一定要喝酸奶和酸梅汤
8点的高铁,上车之后手机又丢了,可喜可贺
10点比赛,9点出的酒店,一番折腾之后
压线进赛场
然后电脑打不开,没签到拿密码条
然后身份证丢了,在门口楼梯下面捡到了
上午丢身份证,下午丢脑子,晚上丢手机
比较神奇的是,我是躺在卧铺上听歌时发现的手机消失了,然后打开蓝牙还能连上,说明手机没有出房间
然后找了1h之后发现是lyb拿了,十分甚至九分神必
5.29 day2
溜了溜了,回去上早十
总结
个人实力不够,队友演的时候带不动,同时自己也在演
THUPC2023 初赛 背包
[THUPC 2023 初赛] 背包
题目描述
本题中,你需要解决完全背包问题。
有 n n n 种物品,第 i i i 种物品单个体积为 v i v_i vi、价值为 c i c_i ci。
q q q 次询问,每次给出背包的容积 V V V,你需要选择若干个物品,每种物品可以选择任意多个(也可以不选),在选出物品的体积的和恰好为 V V V 的前提下最大化选出物品的价值的和。你需要给出这个最大的价值和,或报告不存在体积和恰好为 V V V 的方案。
为了体现你解决 NP-Hard 问题的能力, V V V 会远大于 v i v_i vi,详见数据范围部分。
输入格式
第一行两个整数 n , q n,q n,q,表示物品种数和询问次数。
接下来 n n n 行每行两个整数 v i , c i v_i,c_i vi,ci 描述一种物品。
接下来 q q q 行每行一个整数 V V V 描述一次询问中背包的体积。
输出格式
对于每组询问输出一行一个整数。若不存在体积和恰好为
V
V
V 的方案,输出 -1
;否则输出最大的选出物品的价值和。
样例 #1
样例输入 #1
2 2
6 10
8 15
100000000001
100000000002
样例输出 #1
-1
187500000000
提示
样例解释 1
第二组询问的最优方案为:选择 3 3 3 个物品 1 1 1 和 12499999998 12499999998 12499999998 个物品 2 2 2。
子任务
对于所有测试数据, 1 ≤ n ≤ 50 , 1 ≤ v i ≤ 1 0 5 , 1 ≤ c i ≤ 1 0 6 , 1 ≤ q ≤ 1 0 5 , 1 0 11 ≤ V ≤ 1 0 12 1 \\le n \\le 50, 1 \\le v_i \\le 10^5, 1 \\le c_i \\le 10^6, 1 \\le q \\le 10^5, 10^11 \\le V \\le 10^12 1≤n≤50,1≤vi≤105,1≤ci≤106,1≤q≤105,1011≤V≤1012。
题目来源
来自 2023 清华大学学生程序设计竞赛暨高校邀请赛(THUPC2023)初赛。
题解等资源可在 https://github.com/THUSAAC/THUPC2023-Pre 查看。
(from luogu)
考虑
c
p
/
v
p
c_p/v_p
cp/vp 最大的item
(
v
p
,
c
p
)
(v_p,c_p)
(vp,cp),最后的答案一定是尽量多取
当
i
i
i足够大时,
f
i
+
v
p
=
f
i
+
c
p
f_i+v_p=f_i+c_p
fi+vp=fi+cp
考虑同余最短路,模
v
p
v_p
vp
发现无法定义图中边的边权,最后会陷入无限负环,无法最短路。
令
f
i
=
g
i
m
o
d
m
+
⌊
i
v
p
⌋
∗
c
p
f_i=g_i \\mod m + \\lfloor \\frac i v_p \\rfloor *c_p
fi=gimodm+⌊vpi⌋∗cp
对于
g
i
g_i
gi求最短路
对于
f
i
f_i
fi取物品
(
v
x
,
c
x
)
(v_x,c_x)
(vx,cx)并转移到
f
j
f_j
fj
等价于
f
i
+
c
x
=
g
i
m
o
d
m
+
⌊
i
v
p
⌋
∗
c
p
+
c
x
f_i+c_x=g_i \\mod m + \\lfloor \\frac i v_p \\rfloor *c_p+c_x
fi+cx=gimodm+⌊vpi⌋∗cp+cx
=
g
i
m
o
d
m
+
c
x
+
(
⌊
i
v
p
⌋
−
⌊
i
+
v
x
v
p
⌋
)
c
p
+
⌊
i
+
v
x
v
p
⌋
∗
c
p
=g_i \\mod m +c_x + (\\lfloor \\frac i v_p \\rfloor -\\lfloor \\frac i+v_x v_p \\rfloor )c_p+ \\lfloor \\frac i+v_x v_p \\rfloor *c_p
=gimodm+cx+(⌊vpi⌋−⌊vpi+vx⌋)cp+⌊vpi+vx⌋∗cp
转移到 g j m o d m + ⌊ j v p ⌋ ∗ c p g_j \\mod m + \\lfloor \\frac j v_p \\rfloor *c_p gjmodm+⌊vpj⌋∗cp
#include<bits/stdc++.h>
using 以上是关于thupc2023游寄的主要内容,如果未能解决你的问题,请参考以下文章