考試反思 0910csp s模擬測試42 追求

2022-02-18 15:26:54 字數 3133 閱讀 6050

顯而易見的暴力騙分。

t1想到了bitset但是發現mle後棄了,部分分都沒拿。

t2想到正解貪心打暴力過不了大樣例棄了。

t3牛逼題暴力。

考場沒什麼大失誤,還可以。

不要輕易放棄每乙個思路,可能再優化一下就是正解。不要知足於暴力。

t1:世界線

經典問題:求dag中每乙個點能到達多少點。

很容易想到bitset,但是這題卡空間讓人愣了一下。

其實很簡單,分兩次跑,第一次處理出每乙個點能到前30000號點裡的哪些點。

第二次同理處理後30000個點。這樣記憶體就減半了。

時間複雜度不變。o(n2/32)

1 #include2 #include3

using

namespace

std;

4 bitset<30002>b[60001];long

long

ans;

5int n,m,fir[60005],l[100005],to[100005],cnt,a,bs,in[100005],q[60005],qt,in2[60005];6

void link(int a,int b)

7int

main()

18for(int i=1;i<=n;++i)ans+=b[i].count(),b[i].reset();

19for(int i=30001;i<=n;++i)b[i][i-30000]=1

;20 qt=0;21

for(int i=1;i<=n;++i)if(!in2[i])q[++qt]=i;

22for(int qh=1;qh<=qt;++qh)for(int j=fir[q[qh]];j;j=l[j])

27for(int i=1;i<=n;++i)ans+=b[i].count();

28 printf("

%lld\n

",ans-n);

29 }

view code

思路積累:

t2:時間機器

直接貪心。

運用單調性,把供給與需求的左端點排序,然後對於每乙個需求找最小的能覆蓋它的右端點。

最優性/貪心正確性比較顯然。

1 #include2 #include3 #include

4using

namespace

std;

5struct

ps8 }p[100005];9

bool com(ps a,ps b)

10 multisetss;

11int n,m,t,lft[50005

];12

int main())==ss.end())goto

fal;

24 ps gt=*ss.lower_bound((ps));

25int num=lft[gt.ord];

26if(num>p[i].num)lft[gt.ord]-=p[i].num,p[i].num=0;27

else p[i].num-=num,ss.erase(ss.lower_bound((ps)));//

printf("%d\n",p[i].num);28}

29 puts("

yes");continue

;30 fal:puts("no"

);31

}32 }

view code

思路積累:

t3:密碼

神仙題。跟題解。

求$\sum\limits_^ \sum\limits_^ [c_i^j \ mod\  p^k==0] $

組合數可以表示為階乘形式,設$f[i]$表示i的階乘分解質因數後因子p的個數。

那麼問題轉化為$\sum\limits_^ \sum\limits_^ [f[i]-f[j]-f[i-j]>k]$

對於n的階乘,其含有的因子p個數為$\sum n/p_i$

組合數$c_n^m$也就可以轉化為$\sum (n/p^i + m/p^i + (n-m)/p^i) $

$\sum$後面的項的值只可能是0或1,那麼考慮其含義:p進製下兩數相加不超過n而加法過程當中的進製次數

問題就是p進製下兩數相加不超過n而加法過程當中的進製次數大於等於k的方案數

p進製數字dp。dp[i][j][k][l]表示考慮到第i位,已進製j次,是否受限制,這一位是否需要進製(後兩維大小為1)

列舉p進製下每一位中[0,p)的取值,複雜度$o(log_p^n \times p^2)$

但是其實很多列舉所進入的下一層狀態是完全相同的,不用列舉,所有方案數都是等差數列之和。根據含義推即可。

至於進製轉化,while高精下模一下除一下即可。

1 #include2 #include3 #include4

using

namespace

std;

5#define mod 100000000

6#define mod 1000000007

7#define l lim[al]

8int lim[3333],l,p,k,pw[10];char n[1005];9

int dp[3333][3333][2][2

];10

#define dp dp[al][up][islim][nup]

11struct

int19

}n;20

long

long sch(int al,int up,int islim,int

nup)else32}

33int main()

42 memset(dp,0xff,sizeof

dp);

43 printf("

%lld\n

",sch(1,0,1,0

));44 }

view code

0910CSP S模擬測試賽後總結

外校參加國賽大佬kai神220 rank1 以上選手實力開掛 skyh nc鍋180 rank2 神牛170 rank4 迪哥 有錢人160 rank5 話說我剛頹完bitset就考這回事 看來我bitset還是沒頹全啊qaq 掛成41名了 t1想的時間太長了。一直以為有什麼特殊性質可以優化。結果是...

考試反思 1114csp s模擬測試115 零遲

最後一次了,允許自己混進榜裡吧。沒有心態,原題不會做 真的忘了 t2的搜尋沒有分。零 遲 酷刑 只有在最後的時刻才開始意識到,一切的一切都已經晚了。就在眼前了。沒有機會了。退役,告別oi,粉碎夢想,這,就是最嚴苛的酷刑。生存,生存!hzoi2018!所有人!一年走來,我們還要繼續走下去!csp s,...

考試反思 1112csp s模擬測試111 二重

還是ak場。考前信心賽?而且t3的部分分還放反了所有80的都其實只有50。總算在ak場真正ak了一次。手感好,整場考試很順利。要不是因為t3是原題可能就沒這麼好看了。20mint1,50mint2,去趟廁所回來70min想到t3,110min寫完調完對拍完,然後去學skyh寫平衡樹了。然後我發現我不...