小w的a b問題(高效能優化 減少誤差

2021-09-24 15:54:19 字數 2078 閱讀 4239

題目描述

給你兩個陣列,乙個aa陣列,長度為n,另乙個是bb陣列,長度為m。

現在問你∏ni=1a[i]!∏i=1na[i]!是否等於∏mi=1b[i]!∏i=1mb[i]!

其中∏∏是連乘符,它表示n個元素的乘積。"!「為階乘運算,表示小於等於該數所有正整數的積,並且規定0!=1。

我們認為階乘運算」!「的優先順序大於連乘運算"∏∏」。

輸入描述:

第一行是乙個正整數t,(1⩽t⩽2∗102)(1⩽t⩽2∗102)表示案例的數目

對於每組案例,第一行是兩個正整數n,m,(1⩽n,m⩽105)(1⩽n,m⩽105)。

接下來一行輸入n個整數a[i],(0⩽a[i]⩽105)(0⩽a[i]⩽105)。

接下來一行輸入m個整數b[i],(0⩽b[i]⩽105)(0⩽b[i]⩽105)。保證n,m的總和不多於2∗1062∗106

輸出描述:

對於每組案例,輸出一行乙個字串,如果∏ni=1a[i]!∏i=1na[i]!等於∏mi=1b[i]!∏i=1mb[i]!,請輸出"equal"。

反之請輸出"unequal"。

示例1輸入

32 1

5 36

4 64 2 3 0

2 3 2 2 1 3

3 45 6 7

3 4 5 6

輸出equal

equal

unequal

說明對於第一組案例:

5! * 3!=1 * 2 * 3 * 4 * 5 * 1 * 2 * 3=720

6!=1 * 2 * 3 * 4 * 5 * 6=720

完全相等。

對於第二組案例:

4! * 2! * 3! * 0!=1 * 2 * 3 * 4 * 1 * 2 * 1 * 2 * 3 * 1=288

2! * 3! * 2! * 2! * 1! * 3!=1 * 2 * 1 * 2 * 3 * 1 * 2 * 1 * 2 * 1 * 1 * 2 * 3=288

完全相等。

對於第三組案例:

5!*6!*7!=435456000

3!*4!*5!*6!=12441600

兩者不等。

不得不說這道題目的要求還真是高啊!

說到底還是自己太弱gei了,有的大佬十幾分鐘就ac了qaq

話不多說了,這道題注意幾個問題:

1.暴力不可取!絕對tle!

2.盡量採用read()快速讀入,因為資料要求比較高

3.階乘運算中數字過大,採用高精度計算麻煩費時間,並且容易tle,最好的方法是取模運算

4.取模盡量取大且為質數,同時要多次取不同的模計算避免誤差!!(個人測試出至少要取四組不同的摸才能ac,5555555qaq一直wa)

剩下就上**了,算是比較好理解的,類似於雙雜湊減少誤差的思想,如下:

#include

#include

#include

#include

using namespace std;

const

int n=

1e6+5;

intread()

while

(ch>=

'0'&&ch<=

'9')

return x*f;

}struct node

void

add1

(int x)

void

add2

(int x)

}c[4];

intmain()

for(

int i=

1;i<=m;i++

) bool flag=true;

for(

int i=

0;i<

4;i++)if

(c[i]

.v1!=c[i]

.v2)

flag=false;

if(flag)

cout<<

"equal"

cout<<

"unequal"

<}return0;

}

小w的a b問題

大家一定都做過各大oj上面不同版本的a b problem,如果現在反過來給你c,請你給我輸出一組a和b,使得a b的和等於c呢?這同樣還是乙個簡單的問題。我們假設某種語言中的32位整形被定義成int 型別,該語言中負整數以二進位制補碼的形式儲存,第32位為符號位,前31位為數值位。例如 1就被儲存...

小w的a b問題

可以利用雜湊對映,但是可以要選擇合適的模數,一開始選擇的是 1e9 7 不行,換成 1e9 9 才可以,或者 2147483587 include using namespace std typedef long long ll const int n 1e5 10 const int mod 1e...

CSS 優化 提高效能的方法

如何提高css效能,根據頁面的載入效能和css 效能,主要總結有下面幾點 1 盡量將樣式寫在單獨的css檔案裡面,在head元素中引用 有時候為了圖方便或者快速搞定功能,我們可能會直接將樣式寫在頁面的style標籤或者直接內聯在元素上,這樣雖然簡單方便,但是非常不利於日後的維護。將 寫成單獨的css...