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那麼經過幾輪排序...