距離GDOI 141天 滾入數字DP的坑

2022-03-30 20:43:09 字數 1609 閱讀 1446

作為的第一篇...我都不知道要寫什麼了 ...

其實今天很沒狀態,就當吐槽吧...

嗯,被黃神帶去寫treap+可持久化線段樹,然後在可持久化的刪除上面跪了兩天,真的是一跪不起。我已經連續多久沒有ac一道題了?有時候真心會覺得,學一些東西,到達差不多就應該先放手,一次性鑽太深對自己沒好處。其實之前到可持久化結束就可以結束了,還順手搞掉配對堆和替罪羊,已經很不錯了。這時候再來搞什麼可持久化的加深...額有點感覺無效率。加上自己這兩天社團有事,狀態直接變成渣了...自己的錯,都是蒟蒻的藉口罷了。說好每天都要有一點小進步,哪去了...

數字dp

數字dp的概念在這個東西裡面講的很清楚

第一道題寫的是hdu 2089,其實裡面也講了題解...然後,主要是別忘了在計算的時候,x本身沒有被考慮,所以考慮區間的時候應該要 solve(m+1)-solve(n) ...

var

f:array[0..7,0..9] of

longint;

d:array[0..7] of

longint;

n,m:longint;

function

calc(x:longint):longint;

varsum:longint;

begin

sum:=0

; fillchar(d,sizeof(d),0);

while x>0

dobegin

inc(sum);

d[sum]:= x mod10;

x:= x div10;

end; calc:=sum;

end;

function

solve(x:longint):longint;

varans,len,i,j,k:longint;

begin

ans:=0

; len:=calc(x);

for i:= len downto1do

begin

for j:= 0

to d[i]-1

doif (j<>4) and ((j<>2) or (d[i+1]<>6)) then ans:=ans+f[i,j];

if (d[i]=4) or ((d[i]=2) and (d[i+1]=6)) then

break;

end; solve:=ans;

end;

procedure

init;

vari,j,k:longint;

begin

f[0,0]:=1;

for i:= 1to7

dofor j:= 0to9

dofor k:= 0to9

doif (j<>4) and ((j<>6) or (k<>2)) then f[i,j]:=f[i-1,k]+f[i,j];

end;

begin

init;

readln(n,m);

while (n<>0) or (m<>0) do

begin

writeln(solve(m+1)-solve(n));

readln(n,m);

end;end.

view code

距離GDOI 131天 字尾陣列完畢

用了近兩周的時間,終於把羅神那篇字尾陣列應用看完了,題目也寫了一遍,t了無數次.詳見前幾篇博文.字尾陣列很重要的是那個height陣列,可以用來做各種奇奇怪怪的東西.常用方法去是去二分,比較少見的是單調棧維護.明天把切的12道題題型整理歸納後再補在後面吧,有點晚了.明天覆習ac自動機去!預備 最長公...

GDOI2013模擬1 屏保

平面直角座標系內有n個點,第i個點的座標為 i,hi 順次連線這n個點。現在給出一條直線y h,求這條直線以下的由這條直線和其他線段圍成的圖形的面積。茲瓷單點修改。n 10 5,hi 1000 語文不好,放圖來講講道理。左邊這張圖的答案是3.75,右圖為6.考慮hi和hi 1所連的線段。若h i,那...

GDOI模擬4 24 4 26總結DAY1

day1 第一題,一看就知道是字尾陣列,不過忘記了字尾陣列有乙個東西怎麼線性處理,所以就只能夠暴力搞字尾陣列,所以也只能暴力搞字尾陣列,然後暴力的來求。把height從大到小填進去是乙個很套路的東西,但是只打過一次字尾陣列,對他的用法還不太熟練。所以對於很多省選的知識,由於打得不多,所以很多東西還不...