第十六屆浙江省大學生程式設計競賽

2021-09-20 12:48:40 字數 1784 閱讀 3242

目錄

e sequence in the pocket

f abbreviation

g lucky 7 in the pocket

h singing everywhere

i fibonacci in the pocket

j welcome party

k strings in the pocket

【題意】已知交換前數列的x,y,該數列某兩個位置互換後得到給定數列,根據x,y計算現數列由原序列交換位置的方案數。

【解題思路】推公式題。將原序列的x,y值設為x1,y1,現序列的x,y值設為x2,y2,設互換了p,q兩個位置,易得以下兩個等式dx=x2-x1=(p-q)(ap-aq)與dy=y2-y1=(p-q)(ap^2-aq^2),兩式聯立後易得dy=dx*(ap+aq),所以遍歷一遍陣列,對於每個樹都能得到乙個可以與她交換的數,再判斷一下是否成立即可。對啦dx==0 &&dy==0的情況是只要數列中相同的數交換都可以,記得一定要特判,不然一直浮點錯誤。

【**】

#includeusing namespace std;

const int maxn=1e5+100;

typedef long long ll;

ll a[maxn],tot[maxn],c[maxn];

int main()

ll dx=x2-x1,dy=y2-y1;

if(dx==0 && dy==0)

}else if(dx!=0 && dy!=0)}}

}}

printf("%lld\n",ans);

}}

【題意】給乙個長度為n的陣列,每次操作可以把乙個數放到最前面,問最少幾次操作可以使這個陣列變成非遞減數列。

【解題思路】簽到題,排序後倒序查詢即可。

【**】

#includeusing namespace std;

const int maxn=1e5+5;

int a[maxn],b[maxn];

int main()

}printf("%d\n",n-cnt);

}}

【題意】除單詞的首字母外,去除原因字母。

【解題思路】簽到題。

【**】

#includeusing namespace std;

const int maxn=1e5+5;

char a[maxn],b[maxn];

int main()}}

}

【題意】給n個數,最多可以刪去乙個數使這個數列中的峰值出現次數最少。

【解題思路】簽到題。先把峰值位置都找出來,分類討論一下即可。

(1)當峰值位置只相隔1個位置時,且兩個峰值一樣大時,刪去中間那個數達到最優,ans-2。

(2)其餘只要判斷一下前後的大小關係,最多隻可能-1。

【**】

#includeusing namespace std;

const int maxn=1e5+5;

long long a[maxn],b[maxn];

vectorv;

int main()

int ans=v.size(),f=0;

if(v.size()>=1)

void bfs()

}while(!pq.empty())}}

}printf("%lld\n",ans);

}}

浙江省第十六屆大學生ACM程式設計競賽部分題解

sol 將陣列copy乙份,然後sort一下,找尋後面最多多少個元素在原陣列中保持有序,用總個數減去已經有序的就是我們需要移動的次數。sol 首字母不刪直接輸出,剩下的逐個判斷。注意一下 y 也是要刪的 sol 這題只要找7的倍數,所以可以直接暴力,如果是1e9 7這種比較大的數就不行了。既然可以暴...

2018 第十五屆浙江省大學生程式設計競賽總結

這一天過去了。上午出發到紫金港校區。吃完午飯短暫休息後就進場了。賽前又莫名的緊張 大概是因為第一次打省賽 好久沒打現場賽了 不得不說現場賽環境真的很嘈雜,可能是因為機房環境比較密閉。開場三人三題,然後zjh連過兩個簽到題。前乙個小時過了五題,已經有點落後了。我讀了下f感覺大概可以做,先上去寫了一會。...

2019河北省大學生程式設計競賽

theme 給定q,n,p,1 n,q,p 10 9,求s i 1,n q i mod p solution 求q i很簡單,用快速冪就行,關鍵是n到10 9,切丁超時。開始是想求出等比數列的和,但要除以q 1,而q 1與p又不一定互質,所以也沒法用乘法逆元。可以看出完全沒必要乙個乙個地用快速冪算,...