T2695 桶哥的問題 吃桶

2022-04-12 04:02:37 字數 1967 閱讀 9279

前傳

1.t2686 桶哥的問題——買桶

這題真的hin簡單,真的

2.t2691 桶哥的問題——送桶

前言

這是一道看上去不是毒瘤但實際上有那麼一seisei毒瘤的題目

在我多次提交**仍然屢教不改最後痛改前非的慘痛經歷下,總結出以下#¥@¥#%:

1.可以用結構體存 a , b   qaq實錘啦是取模的鍋

不用結構體的話那就換成兩個一維陣列  a[  ]  b[  ]

2.多取模,越多越好,能往**mod就往**mod

(一開始mod少了,然後就wa了)

解析

1.把這個式子化簡一下

z - x = 3 y 

也就是說明 z,x 屬於同乙個mod(3)的剩餘類

如果 z 是 15 的話,那麼 x 可以是 3   6   9   12         (%3……0)

如果 z 是 16 的話,那麼 x 可以是 1   4   7   10         (%3…… 1)

如果 z 是 17 的話,那麼 x 可以是 2   5   8   11         (%3…… 2)

所以我們就可以列舉 z ,那麼符合條件的 x 就是和它同屬乙個剩餘類並且

的啦2.

我們把這個式子拆一下  

(  x + z  )·(  bx - bz  )

=  x·bx  +  z·bx  -  x·bz  -  z·bz

所以說,對於每乙個 z ,它可以有很多個對應的 x ,雖然 x ,bx

不確定,但是 z , bz 是確定的

也就是說對於每乙個 z 都可以得到以下這個式子

∑( x·bx ) +  z·∑bx  -  bz·∑x  -  z·bz·(z的個數)

從前往後列舉 z ,對於每乙個 z ,可以滿足這個 z 要求的 x 一定也可以滿足下乙個和這個 z 相類似的 z ,所以說我們就開陣列統計一下

s[  ]       到當前為止的滿足 z 的 x 的數目

sx[  ]     到當前為止的滿足 z 的 x 的和

sbx[  ]   到當前為止的滿足 z 的 bx 的和

sxbx[  ]  到當前為止的滿足 z 的 x*bx 的和

每次先統計,再更新陣列

對於**當中呢,是列舉三種剩餘類,也就是

每次操作之前都要初始化一下

然後開始 for 迴圈列舉 z ,計算

然後更新陣列,按照 a 的種類更新到陣列中的不同地方,陣列中每乙個小格仔代表乙個種類的桶

注意保證答案不為負數 貌似取模就已經保證了

最後輸出答案即可

**

#includeusing

namespace

std;

const

int maxn=100001

;const

int mod=10007

;int

n,m;

long

long

ans;

ints[maxn],sx[maxn],sbx[maxn],sxbx[maxn];

struct

rqytong[maxn];

void caozuo(int

rqy)

}int

main()

printf(

"%ld

",ans%mod);

return0;

}

題目鏈結ac的關鍵    瘋狂mod

這個題要注意是列舉2的剩餘類啦

~~~~~~qwq寫完之後我發現我要好好組織語言  mod一mod ~~~~~~

校內題目T2695 桶哥的問題 吃桶

同t2一樣外校蒟蒻可能沒看過 題目描述 桶哥桶哥的桶沒有送完。桶哥的桶沒有送完,他還有n個桶。他決定把這些桶吃掉。他的每乙個桶兩個屬性 種類aia iai 和美味值bib ibi 若下標為x,y,z 下標從1開始 的三個桶滿足 xx那麼它們構成乙個 會產生 x z bx bz x z b x b z...

洛谷 桶哥的問題 送桶 題解

一讀題,發現與貪心中的任務排程有點類似。保證答案大於等於零,言外之意即為所有任務都可以在合法時間內完成。那麼只要按照任務排程的思路做就行了 用結構體 方便sort 陣列t讀入所有ai bi後按照結束時間從大到小排序。設ans為答案,i為當前要處理的任務在排序後的編號。ans初始為t 1 b,i 1,...

洛谷 P哥的桶(線段樹 線性基)

p哥在ioi取得了金牌,現在他開始找女朋友了!p哥現在有nn個桶,他們排成了一排,這些桶可以裝下任意多個女朋友。每個女朋友有乙個固定的顏值 p哥時不時地會找新女朋友,並把新找的女朋友丟進某個桶裡面。我們用1 k x1kx來表示p哥找了乙個顏值為xx的女朋友,並且丟進了kk號桶裡面 p哥每天晚上需要在...