一如既往的垃圾,又回到了那個場場墊底的自己,明明考場上都想到正解了,但是就是拿不到分,可能是互奶把rp用光了吧以後一定加強訓練**能力。
t1:考場上一直yy矩陣快速冪,雖然自己矩陣快速冪一點都不會還是硬著頭皮yy,發現不可做之後並沒有及時轉化思路,但其實自己預處理的陣列就是正解。
切記:不僅矩陣快速冪是log的,普通快速冪也是2333
然後這題其實很水啊,我們設$dp[i][j]$為前$i$列放$j$個棋子的方案數,然後列舉最後一列放多少個棋子就好了。
轉移方程為$dp[i][j]=\sum$,這樣轉移m列顯然不行,考慮性質,第$i$列和第$i+kn$列的擺放方式一定相同,所以後面的組合數乘還有多少這樣的列就好了即$^+1}$,但這樣的複雜度是$o(n^4logn)$的,發現組合數可以預處理,於是去掉了log
1 #include2chessusing
namespace
std;
3const
int n=1e5+10,mod=1e9+7;4
#define int long long
5int
n,m,c,fac[n],inv[n];
6int f[105][105*105],pre[105][105*105];7
int min(int a,int
b)10
int qpow(int a,int
b)17
return ans%mod;18}
19int c(int a,int
b)22
signed main()37}
38}39 printf("
%lld
",f[n][c]%mod);40}
41/*
422 3 1
43*/
t2:考場上先想到單調棧,但是後來成功理解錯題意對拍5w組wa0 2333。
如果理解對題意的話單調棧就挺明顯了吧,肯定要找它前面第一各比他大的,那麼答案一定在這段區間中,有乙個比較明顯的貪心就是,最優決策點一定是在,高度最小的那個點,稍想一下就可以明白。
所以在彈棧的時候每次更新,高度最小的下標即可。
對於輸入量大的題,快讀真的很有必要。
1 #include2arrayusing
namespace
std;
3const
int n=1e7+10
;4 pairs[n];
5int
a[n],sta[n],top;
6 inline int min(int a,int b)
7 inline int max(int a,int b)
8 inline int
read()
1415
intmain()ans=max(ans,i-s[i].second+1
);28 sta[++top]=i;29}
30 printf("%d"
,ans);
31 }
t3:回滾莫隊裸題。
就維護兩個陣列now1,now2,分別代表x向左向右能伸展的最長連續值域。
分別用x+1,x-1更新。還有就是更新一下這整段區間的左右端點以保證以後更新答案正確,中間的不用更新因為不會在插入了。
當這個區間左端點和上乙個區間左端點不一樣時,直接清空你now1,now2陣列。
做完了之後覺的理解更加深入了。
放個回滾莫隊講解鏈結
1 #include2antsusing
namespace
std;
3const
int n=1e6+10;4
intblo[n];
5int
sta1[n],sta2[n],top;
6struct
node
11}ask[n];
12int
now1[n],now2[n],a[n],ans[n];
13int
main()
25for(int i=1;i<=n/size+1;++i)
28 sort(ask+1,ask+m+1
);29
int r=0,l=1,res=0;30
for(int i=1;i<=m;++i)
36while(ask[i].r>r)
46 top=0;47
int tmp=res;
48for(int j=ask[i].l;j<=min(ask[i].r,l);++j)
61for(int j=top;j;--j)
65for(int j=ask[i].l;j<=min(l,ask[i].r);++j)
69 ans[ask[i].id]=tmp;70}
71for(int i=1;i<=m;++i) printf("
%d\n
",ans[i]);
72 }
CSP S模擬測試94 題解
高精硬上似乎跑不過,其實可以都取個 log 那麼只需要比較 y times log x 和 sum limits y log i 就好了。includeusing namespace std int t double x,y void work int main 顯然目標區間合法的充要條件是 把位置...
CSP S 模擬測試 51 題解
慣例先看一遍三道題,t1 一開始反應要求割點,但是這是有向圖,肯定不能求割點,康了一下資料範圍,有40 是樹的,還不錯,決定待會在打。看t2 字串題,完了我字串最弱了,肯定只能打暴力了,帶著前兩題都不會的心情,看了t3發現是期望,完了爆0了,在一看,發現是sb原題,還簡單一點,趕緊把t3碼了一遍過大...
CSP S模擬測試50 反思 題解
大部分人都覺得t3是道不可做題去剛t1t2了,於是我就僥倖苟到了前面?這場考試比較成功的就是快速水掉了t1t2的部分分,1h拿到88分起碼為之後硬肝t3上了保險 賽後發現就算t3爆零也能rank15?剩下也就沒什麼了 t3的分完全是時間堆出來的,還有運氣成分。因為當時第乙個a掉了二分答案專題的奶牛健...