顯而易見的暴力騙分。
t1想到了bitset但是發現mle後棄了,部分分都沒拿。
t2想到正解貪心打暴力過不了大樣例棄了。
t3牛逼題暴力。
考場沒什麼大失誤,還可以。
不要輕易放棄每乙個思路,可能再優化一下就是正解。不要知足於暴力。
t1:世界線
經典問題:求dag中每乙個點能到達多少點。
很容易想到bitset,但是這題卡空間讓人愣了一下。
其實很簡單,分兩次跑,第一次處理出每乙個點能到前30000號點裡的哪些點。
第二次同理處理後30000個點。這樣記憶體就減半了。
時間複雜度不變。o(n2/32)
1 #include2 #include3view codeusing
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 }
思路積累:
t2:時間機器
直接貪心。
運用單調性,把供給與需求的左端點排序,然後對於每乙個需求找最小的能覆蓋它的右端點。
最優性/貪心正確性比較顯然。
1 #include2 #include3 #includeview code4using
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 }
思路積累:
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 #include4view codeusing
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 }
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寫平衡樹了。然後我發現我不...