Henau 2018ACM訓練賽 部分題解

2021-08-20 12:23:58 字數 2737 閱讀 8917

a-hdu-#2087 剪花布條--

題目大意:給出乙個字串,以及模板串,求字串中有多少個模板串即子串?

但如果資料範圍較大用暴力就會超時,則需要使用kmp演算法,我看到題目也沒多想直接模板kmp (t_t)。

#include#includeint main()

return;

}void kmp()

cout << fixed << setprecision(1) << sum << endl;

return 0;

}

g-hdu 2094 產生冠軍-

思路:這個可以用set容器來做,每輸入一場比賽都將名兩個字inset入總的容器中,講失敗的人insert入失敗的容器中,如果能分出勝負,那總的容器的長度=失敗的容器+1;因為勝者是不會進入失敗的容器的!!!這樣就不用模擬整個過程那麼複雜了!!

#include#include#include#include#includeusing namespace std;  

int n,m;

setzon; //總參賽人

setshu; //比賽輸過的人

int main()

if(zon.size()-1==shu.size())

cout<<"yes"<j-hdu 2098分拆素數和-

題解:這題先打乙個素數表,然後進行列舉符合計數器++就可以,水題。

#include#includeusing namespace std;

int su[10100]=;

int main()

long long int n;

int cnt;

while(cin>>n&&n)

for(int i=0;i<100;i++)

}

cout<l-洛谷1223排隊接水-

題解:先排序,然後計算總等待時間,最後輸出順序和平均等待時間。

#include #include #include #include #include #include using namespace std;

int x[505];

int main()

sort(x,x+n);

for(int i=0;i解題思路:這道題在這套題裡面我感覺是相對較難的一道題,是一道最小生成樹的模板題,用kruskal演算法來寫。將每條路的資訊儲存起來,並將邊的權值按從小到大進行排序,每次選擇權值最小的邊加入樹中,並把邊的兩個頂點加入到乙個集合中,若這兩個頂點本身就在乙個集合中(即加入這條邊就構成了迴路),就捨棄這條邊判斷下乙個。直到選取了n-1條邊加入樹中,最小生成樹構造完成。具體看**。

#include#include#include#include#define inf 0x3f3f3f3f //定義極大值inf

using namespace std;

int n, m, sum, ans;

int f[1010]; //陣列f判斷點的集合狀態

struct node

q[50010];

bool cmp( node a, node b )

int getf( int v )

int lian( int t1, int t2 )

return 0;

}void kruskal()

}}int main()

; cin>>n;

for(int i=0;i>a[i][j];

for(int i=0;i>b[i][j];

for(int i=0;ip-51nod 1283 最小周長-

題解:就考了乙個數學公式,a+b>=2*sqrt(a*b);其實當a==b時,周長最短,因為題意要求

都是整數,我們需要列舉一下就行了

#include#includeusing namespace std;

int main()

} int b=s/a;

cout<<(b+a)*2<q-51nod 1381 硬幣遊戲-

題解:半徑為r的硬幣相交的直線的的條數有2*r和2*r+1,其中2r+1的情形只有一種就是硬幣和直線相切,而硬幣落在桌子上的情形有無數種,故概率為0,所以另一種情形的概率是1,所以答案就是2*r

#include#includeusing namespace std;

int main()

} int b=s/a;

cout<<(b+a)*2<因為u,v題目基本一樣相差一行**所以直接一起給出題解

u-求a,b最小公倍數-

v-求a,b最大公約數-

題解:因為資料範圍比較大,直接暴力求會超時,所以需要使用輾轉相除法

# include#includeusing namespace std;

int main()

while (b!=0)

c=x*y/a;

cout

}

訓練賽 2023年1月16日訓練賽總結

訓練賽位址 rank 3 總結一下訓練賽的情況,53分鐘出6道水題以後暫列第一,手速其實還可以,狀態也不錯,不過之後可能就浮躁了,然後看題目也看不全,寫 也是缺三漏四。c題錯在沒有初始化陣列。wa1。d題沒有看資料範圍一看題就以為是最長上公升子串行,然後t了,然後重新看題目,才發現是每次上公升1的子...

訓練 9 13 訓練賽

a.hdu 6230 乙個合法的子串 s 3n 2 滿足條件即1 2n 1 為以n為回文中心的回文串,n 3n 2為以2n 1為中心的回文串。故我們可以通過尋找回文中心對,來判斷相應合法子串的個數。利用manacher求出每個位置的最長回文半徑,則若i,j滿足條件 i j 則應有 p i geqsl...

訓練賽 詠歎

安師大附中訓練題目 給定乙個1到n的排列a,對其進行氣泡排序 counter 0 while a不是公升序的 counter counter 1 for i 1 to n 1 if a i a i 1 then swap a i a i 1 endifend forend while那麼經過幾輪排序...