17.8.17B组总结
来源:互联网 发布:《幻》知乎 编辑:程序博客网 时间:2024/06/04 23:26
17.8.17B组总结
前言
奇怪的一天,第一题莫名WA了,只有后两题暴力分80,但改题特别快,立马280(第三题很奇怪,不会做)。
T1
其实只是一个树形DP,但考试时我状态设得不太对,第二维只有0/1,没有很好的表示出状态。于是连这个点都没过:
4
0 68 70
1 2 10
1 1 9
1 1 1
(图画得有些丑)
坑惨我了。其实设f[i,j]表示第i个点,有j的能量的最多可以满足的点,即可。
大致dg过程:
procedure dg(x:longint);var i,y,k,j:longint;begin for i:=e[x] to w[x] do f[x,i]:=1; i:=last[x]; while i<>-1 do begin y:=tov[i]; if y<>c[x] then begin dg(y); for j:=w[x] downto 0 do for k:=0 to j do f[x,j]:=max(f[x,j],f[y,k]+f[x,j-k]); end; i:=next[i]; end;end;
T2
这是道水题,我考试时已经接近想到了正解,然而并没有深入思考(skb),于是只拿了50。
其实,只要按b[i]排个序,一个一个搜,找出正解即可(这题方法也很多,什么线段树,差分约束,二分之类的也可以做)。
神奇的枚举过程:
for i:=1 to n*2 do begin if a[i,2]=1 then begin dec(sum,a[i,1]); inc(g); end else begin if ans<sum+g*a[i,1] then begin ans:=sum+g*a[i,1]; w:=a[i,1]; end; dec(g); end; end;
T3
考试实在没时间了,就匆匆打了个暴力,尴尬的发现还有个点错了,本来可以拿40的(其实30还算不错了)。
看到正解时我一脸懵逼,不过,我还是在第9次提交后ac了。本题看起来十分繁琐,实则……额,还是很繁琐,调了我半天。事实上,先将b复制一遍,再记录一个next数组即可,next[i,j]表示在B串的第i个位置之后,第一次出现hash值为j的串的位置。然后从1~m的b扫一遍,每次扫的时候更新一下答案,最后输出即可。(推荐每个数*123^n,模数10000007)。
预处理(next数组):
for i:=1 to t do begin next[m*2+1,i]:=m*2+1; next[(m+1)*2,i]:=m*2+1; end; for i:=m*2 downto 1 do begin fillchar(y,sizeof(y),254); y[0]:=0; ss:=1; for j:=0 to n-1 do begin if i+j<=2*m then y[j+1]:=y[j]+((ord(b[i+j])-96)*ss) mod mo; ss:=(ss*123) mod mo; end; for j:=1 to t do begin next[i,j]:=next[i+1,j]; if y[d[j]]=c[j] then next[i,j]:=i+d[j]-1; end; end;
考试还是要把握好时间,不要再出现想到正解却没时间码这种尴尬之事。
阅读全文
0 0
- 17.8.17B组总结
- 17.8.6B组总结
- 17.8.8 B组总结
- 17.8.14B组总结
- 17.8.15B组总结
- 17.8.18B组总结
- 17.8.12B组总结
- 17.8.18 B组总结
- 17.8.19B组总结
- 17.1.17 B组总结
- 16.7.12 B组总结
- 16.7.13 B组总结
- 16.7.14 B 组总结
- 16.7.15 B组总结
- 2017.2.11B组总结
- 17.3.25 B组总结
- 17.7.11B组总结
- 17.7.13B组总结
- NONBrowser
- JavaScript表单域验证
- URL 中 ‘#’ 号的含义与作用
- uoj 118 赴京赶考
- 2. FreeRTOS----堆内存管理
- 17.8.17B组总结
- Docker 的前世今生
- 测试驱动编程的心得
- 8.17 婚礼上的小杉 1533
- Google InceptionNet
- numpy.random.normal函数
- ssh-keygen 基本用法
- HTML笔记(五)bootstrap之Button按钮
- JavaScript学习之自定义对象--小游戏贪吃蛇