csp-c模拟测试「set·read·」
set
题解
只要求一组特解
像入阵曲一样就好了(入阵曲真是好题啊$!$)
$(sum[r]-sum[l])\%n==0$
拆成$sum[r]\%n==sum[l]\%n$桶里存$sum[l]\%n$每次找$sum[r]$桶里有没有对应的#sum[l]#
存$tong[0]=1$,别的先查后存
证明
证明一下正确性
$0$自己合法$(sum[r]\%n)==0$不需要找对应
其他都要找一个来匹配
假设我们有$n+1$个$sum'$值,(这里假设$sum[0]$也要找一个匹配)
$\%n$意义下$sum$范围取遍$[0,n-1]$
$n+1$个$sum$,$n$种取值一定有一种合法
故得证
read
题解
要求$max(cnt[k])-$$\sum \limits_{i=1}^{N \&i!=maxid} cnt[i]$ $ -1$
然后式子稍微一化$maxcnt*2-n-1$求$maxcnt$
然而$n$实在是太巨了$50000000$,出题人卡空间$16MB$$1000ms$怎么办
主要解决空间问题
事实上我们设$id$和$cnt$,$cnt==0$时$id设为now$$cnt=1$
$id==now$ $cnt++$
$id!=now$ $cnt--$
最后$id$就是$max$,
我已没有下降的余地