一夜回到解放前。
三道題中最水的題,$a$了十幾個,我$wa$ 0。
不得不說,實力至此。
將同行同列操作合併,歸成乙個操作,然後合併成乙個串。
這需要感性的思考一下。假設我們現在讓矩陣按列分成乙個含$m$個元素的串,同一行中的每一位都乘上了乙個相同元素,因為一行中原本元素與元素之間就是成等差數列的關係,乘上相同元素後肯定也還是等差數列的關係。每一行都是如此。
那麼我們就得到了$n$個等差數列,讓他們中的元素按列相加,得到的仍然是等差數列。這麼算下來,時間不是$o(nm)$的麼?其實,當我們暴力算出第一列的合併之後的元素,那麼就可以遞推地求出它之後的$m$個元素,原理還是等差數列,稍微想想就可以想懂了。
小弟不才。
1 #include2矩陣遊戲#define ll long long
3#define int long long
4using
namespace
std;
5const ll maxn=1e7+3;6
const ll mod=1e9+7;7
intn,m,q;
8 ll ans,d,res,qp[2
][maxn];
9signed main()
1022
for (int i=1; i<=n; ++i)
23 res=((res+((i-1)*m*1ll%mod+1)*1ll*qp[0][i]%mod)+mod)%mod,d=(d+qp[0][i])%mod;
24 ans=res%mod*qp[1][1]*1ll%mod;
25for (int i=2; i<=m; ++i)
26 res=(res+d)%mod, ans=(ans+res%mod*1ll*qp[1][i])%mod;
27 printf("
%lld\n
",ans);
28return0;
29 }
ACM訓練日誌
今天的比賽我們隊倆大佬出了倆題,後來過了時間又補了f題,總的來說我覺得今天訓練不簡單,被d題整的心態有點炸,後來于衡a掉了,貪心字首和,仔細看了隊友的 還是很有啟發的,附上原題和隊友的 原題 ac include using namespace std const int maxn 4e5 10 t...
訓練日誌 2018 10 11
昨天晚上打比賽,感覺手好生,題意看了半天,才看懂,然後就是tle,這回還好一點,馬上想到了,修改的演算法,但是細節沒處理好,wa了,找了好一會才發現 的錯誤,第二題就更艱辛了,一開始就跑偏了方向,以為是乙個找規律的事關鍵是以為自己找到了規律,開始麻煩的敲 敲完了才發現,有好多錯誤情況不在規律內,無奈...
4 27訓練日誌
關於三分法的一些知識總結 三分法主要用於求解乙個函式在某個區間內的極大 極小 值點首先對於乙個凹函式y f x 我們要求它的極小值點。首先確定它的極小值點所在的區間為 l,r 計算出兩個三分點 mid l r 2 mid2 mid r 2 其實這兩個點的位置是靈活的 此時 l mid f mid2 ...