P2671 NOIP2015 普及組 求和

2022-09-09 21:33:24 字數 1962 閱讀 8302

定義一種特殊的三元組:(x,y,z),其中x,y,z都代表紙帶上格仔的編號,這裡的三元組要求滿足以下兩個條件:

x y z是整數,xcolorx = colorz

通過第乙個條件易得x,y一定是同奇同偶

第二個條件無非是在限制這個三元組中x,z顏色相同

(u1s1,這個玩意跟y貌似沒什麼關係,所以是二元組

滿足上述條件的三元組的分數規定為(x+z)*(number_x+number_z)

題目的最終目標是計算所有三元組分數和

根據分數規定,純模擬,直接tle

細想其實這個三元組跟y沒關係,所以只用考慮x,z

那麼可以考慮把同奇同偶顏色相同的分為一組

如果此時再直接進行模擬,也還是會tle

那麼想想辦法優化?

(x+z) * (number_x+number_z)=x * number_x+x *number_y+y * number_x+y * number_y

所以同一組內的分數

設m為組內的個數

組內第乙個數所得得部分分數即

x * number_x+x *number_y

=i ∗∑

i=2m

num[

i]+(

n−1)

∗(i∗

num[

i]

)i*\sum_^mnum[i]+(n-1)*(i*num[i])

i∗∑i=2

m​nu

m[i]

+(n−

1)∗(

i∗nu

m[i]

)=i∗∑i

=1mn

um[i

]+(n

−2)∗

(i∗n

um[i

])

i*\sum_^mnum[i]+(n-2)*(i*num[i])

i∗∑i=1

m​nu

m[i]

+(n−

2)∗(

i∗nu

m[i]

)那麼乙個組的得分數

=∑ i=

1m(i

∗∑j=

1m∗n

um[j

]+(m

−2)∗

num[

i]

)\sum_^m(i*\sum_^m*num[j]+(m-2)*num[i])

∑i=1m​

(i∗∑

j=1m

​∗nu

m[j]

+(m−

2)∗n

um[i

]) ∑j=

1m∗n

um[j

]\sum_^m*num[j]

∑j=1m​

∗num

[j]這一部分可以再分組時用字首和優化

時間複雜度即可達到o(n)

#

include

#include

#include

using

namespace std;

const

int maxn=

1e5+10;

int n,m;

int num[maxn]

;long

long sum[maxn][3

];int t[maxn][3

];const

int mod=

10007

;int c[maxn]

;int

main()

long

long ans=0;

for(

int i=

1;i<=n;

++i)

cout

}

p2671 [noip2015 普及組] 求和

NOIP2015PJ 洛谷 P2671 求和

直接暴力肯定是不行的,我們需要把各種相同的顏色分離出來計算。但是只分離出來沒有用,因為三元組要求中間有乙個y。可以看出,x和z的奇偶性相同時,存在y使三元組成立。所以我們用兩個陣列儲存相同顏色的奇 偶情況,每次計算就變成計算這個序列的值。則原式 num 1 num 2 a num 1 a num 2...

P2669 NOIP2015 普及組 金幣

國王將金幣作為工資,發放給忠誠的騎士。第一天,騎士收到一枚金幣 之後兩天 第二天和第三天 每天收到兩枚金幣 之後三天 第 四 五 六天 每天收到三枚金幣 之後四天 第 七 八 九 十天 每天收到四枚金幣 這種工資發放模式會一直這樣延續下去 當連續n天每天收到n枚金幣後,騎士會在之後的連續n 1n 1...

NOIP 2015 普及組 初賽

noip 2015 普及組 初賽 疑難點 學習 感悟。本份試卷本人得分93,兩處錯誤,一錯在二 1.題,眼花了,多數了個資料3241 二錯在四 2.題 5 空,該空寫成rbound mid 1,這個錯誤在考試中是改正不了的,這是由本人解題方法決定的。也就是說該份試卷本人的極限是98。1.c.1000...