題解 總結 普轉提七聯測 Day2

2021-09-30 01:17:11 字數 2376 閱讀 8144

小強作為oi圈爸爸級別的人物,有一天隨手ak的zroi的j轉s模擬賽。

ak完了的小強閒得無聊,於是隨手在紙上面寫了幾個看上去非常有規律的數字,555655,24444,7787,110。他覺得這些數字非常的有趣,並開心地拍起了手。

於是小強定義乙個有趣的數為:對於乙個正整數,對於其所有的數字,當且僅當它恰好有一位與其他位不同,則稱這個數為有趣的數。

比如:555655,24444,7787,110都為有趣的數,而 6996,4444 都不是。

小強想要知道在[l,r]中有多少個有趣的數.

#include

using

namespace std;

#define int long long

int l,r;

bool

check

(int le,

int s,

int d,

int p)

signed

main()

printf

("%lld"

,ans)

;}

#include

using

namespace std;

#define mp make_pair

map < pair <

int,

int>

,int

> m;

string s;

int suma[

1010100

],sumb[

1010100

],sumc[

1010100];

intmain()

printf

("%lld"

,ans)

;return0;

}

#include

using

namespace std;

int t;

bool f[

201][20

][501]

;int a[

10110000];

void

work()

memset

(f,0

,sizeof

(f))

; f[0]

[0][

0]=1

;//初值

for(

int i=

1;i<=len;i++

)for

(int j=

0;j<

11;j++

)for

(int k=

0;k<=i;k++

) f[i]

[j][k]

|=f[i-1]

[(j-a[i]+11

)%11]

[k-1

]| f[i-1]

[(j+a[i])%

11][k];

//轉移

int ans =

10000000000000

;for

(int i=

0;i<=len;i++)if

(f[len][0

][i])if

(i*2

== len) ans =

min(ans,len)

;//可以不放0的搞出來

else ans =

min(ans,

max(i,len-i+1)

*2-1

);//需要由最大的長度的兩倍-1得出

printf

("%d\n"

,ans>

2*len-1?

-1:ans);}

main()

#include

using

namespace std;

#define int long long

int n,m,ans =0;

int h[

1010100];

signed

main()

//群體攻擊

if(h[k]==1

&& m && k<=n)

else

if(m)

//重擊

break

;// cout

for(

int i=k;i<=n;i++

) ans+

=(n-i+1)

*(h[i]-1

)+n-i;

//普通攻擊

printf

("%lld"

,ans)

;}

ZR 539 19普轉提 4 和 題解

給定乙個數字 n 請問有哪些區間 l,r 使得 sum r i n 請按 l 從小到大的順序輸出所有區間。根據題意我們可以列出方程 frac n 也就是 l r r l 1 n times 2 於是我們可以列舉 n 的因數 x 令 y frac n x 判斷是否有兩數和為 y 差為 x 即可。這裡假...

20ZR普轉提七連測 Day1

進行 dmo d360 d bmod 360 dmod36 0 討論一下,發現有四個 兩個 乙個一迴圈。然後預處理前四次操作的答案即可,注意對絕對值的處理。如果能確定吃哪些餐館,當然就是不回頭依次吃。那麼列舉那個餐館一定吃,在它之前的餐館可能吃也可能不吃,二分一下吃耗時最小的多少個餐館,套個區間前 ...

20ZR普轉提七連測 Day1

進行 dmo d360 d bmod 360 dmod36 0 討論一下,發現有四個 兩個 乙個一迴圈。然後預處理前四次操作的答案即可,注意對絕對值的處理。如果能確定吃哪些餐館,當然就是不回頭依次吃。那麼列舉那個餐館一定吃,在它之前的餐館可能吃也可能不吃,二分一下吃耗時最小的多少個餐館,套個區間前 ...