codeforces 539 div1 做題記錄

2022-07-22 06:30:15 字數 1827 閱讀 9552

a.

考慮前一半異或和等於後一半可以轉化為子串異或和為0

然後就做個字首和,統計奇偶相同的有多少字首和相同

1 #include2

#define ll long long

3#define maxn 300005

4using

namespace

std;

5intn;6

inta[maxn],s[maxn];

7 mapmp1,mp2;

8int

main()

917 map::iterator it;

18 ll ans=0;19

for(it=mp1.begin();it!=mp1.end();++it)

2024

for(it=mp2.begin();it!=mp2.end();++it)

2529 cout

30return0;

31 }

view code

b.考慮乙個顯然的性質:

因為原串回文,所以從對稱位置切,然後調換前後兩段,cut次數不超過2(impossible除外)

然後我們考慮是否有比2更小的答案1;

列舉每個位置暴力判判就行了;

1 #include2

#define maxn 5005

3using

namespace

std;

4char

s[maxn],s2[maxn];

5bool

ispalindrome()611

intmain()

1228

for(int i=1;i<=n;++i)

2937

if(ans==n)puts("

impossible");

38else printf("

%d\n

",ans);

39return0;

40 }

view code

c.碼碼碼題,留坑

d.計數題

考慮列舉a,b之間有多少條邊,記邊數為e;

然後相當於我們在把長度m分成e份,每份為正,這個就是隔板,c(m-1,e-1)

然後考慮中間的點,方案是a(n-2,e-1)

然後考慮其他的點怎麼放,這個等價於n個點構成森林,其中有e+1個點兩兩不處於同乙個連通塊,由cayley定理,方案數是f(n,e+1)

其中f(x,y)=y*pow(x,x-y-1)

注意e==n-1時特判,此時方案數為1

最後考慮其他的邊,亂選就行,pow(m,n-1-e)

乘上就是最終答案

1 #include2

#define maxn 1000005

3#define ll long long

4using

namespace

std;

5const ll mod = 1000000007;6

ll n,m,s,t;

7ll fac[maxn],invfac[maxn];

8ll fastpow(ll a,ll p)916

return

ans;17}

18ll a(ll x,ll y)

1922

ll c(ll x,ll y)

2326

ll f(ll x,ll y)

2731

intmain()

3243 cout

44return0;

45 }

view code

Codeforces 703D 樹狀陣列

codeforces 703d 題意 給1e6長度的區間,每個單位代表乙個數。給1e6個詢問,每次問區間內出現次數為偶數次的數異或和。思路 賽中的時候想莫隊水過去,結果pretest都沒過233 正解是樹狀陣列。首先假設是奇數次的話,就是乙個簡單字首和。現在偶數次,有乙個處理技巧就是記錄這個區間出現...

codeforces 912D 期望計算

題目鏈結 題意 在乙個n m的魚塘裡面放置k條魚,每次可以選定乙個r r的矩陣並獲得矩陣內魚的數量的分數。請問該如何在魚塘裡面放置魚,使得最後的期望得分最大。思路 直接通過列舉放置魚的位置計算期望得分明顯非常非常不現實,於是我們換一種計算思路我們去計算各點放置魚之後可以得到的期望得分,然後取前k大的...

codeforces 523D 優先佇列

題意 給你n個任務單和k個機器,每個任務單有兩個變數開始的時間,完成所需要的時間,問你最優去做的話,每個訂單的結束時間是?題解 題目保證了資料是遞增排序的,那麼我們就不用sort了,直接做。然後這裡有個小套路 因為題目可以有k個機器,那我們可以先用k個0進去乙個優先佇列以達到模擬k個優先佇列的作用,...