申明:大概題意是從牛客網討論區嫖的,題目的輸入、輸出以及資料資料範圍也有些不知,大家看看思路就好,這些細節就不管了qaq。有錯歡迎糾正~
3.27
給定字串s1,s2,求從s1變為s2的最小移動次數(要求每一次只能從s1選取任意乙個字元放到s1最後)
思路:貪心。首先如果兩個字串對應的字元數不匹配的話,那麼答案一定是-1。否則的話,我們一定可以構造新的s,使得和t相等。由於s的字元可以移動,而t的字元不能移動。所以該本質是求s的最長不連續子串,使得和t的字首子串匹配。由於是匹配t的字首子串,那麼我們可以貪心的匹配即可,每遇到乙個s的字元和t的當前字元匹配,則t的字元向前移動一位。最終答案就是n-可以匹配 的最多位數。
#include
using
namespace std;
const
int maxn =
100010
;char s[maxn]
,t[maxn]
;int mp1[27]
,mp2[27]
;//統計各個字元數
int n;
intmain()
bool flag =1;
for(
int i =
0;i <
26;i++)}
if(flag ==0)
printf
("-1\n");
else
printf
("%d\n"
,n-j)
;return0;
}
參考
給定n個區間(範圍1~2000),每個區間包含左右範圍(1<=l<=r<=2000),每次從所有區間範圍內選擇乙個整數,求所有選出的數的最小值的期望。
思路:這裡單個值的概率不好求,但是反過來我們可以先求》=p
os
>=pos
>=p
os的概率,繼而用差分即可求出單個值的概率。
#include
using
namespace std;
#define ll long long
const
int maxn =
2010
;int n;
int l[maxn]
,r[maxn]
;double p[maxn]
;int
main()
if(l[i]
<=pos && pos <= r[i]
) tmp *
=1.0
*(r[i]
-pos+1)
/(r[i]
-l[i]+1
);}if
(!flag)
p[pos]
= tmp;
//計算出最小值》=pos的概率
}for
(int i = mn;i < mx;
++i)
ans +
= p[mx]
*mx;
printf
("%.6f\n"
,ans);}
/*21 23 3
*/
阿里春招筆試2020 4 1 貪心 優隊
阿里筆試4.1 給一串二進位制字串如00011001,希望把他改為全為0,如果更改某個字元,那麼他兩邊的字元也要更改,例如把第二位的0換成1,那麼就變成了11111001.求最少翻轉次數。如果無法全0,輸出no。思路 貪心。分兩種情況,第乙個值修改 不修改,之後每個值都會受前面數影響,如果到了最後乙...
阿里筆試題20春招筆試題彙總 python版本
有一疊撲克牌,每張牌介於1和10之間 有四種出牌方法 單出1張 出2張對子 出五張順子,如12345 出三連對子,如112233 給10個數,表示1 10每種牌有幾張,問最少要多少次能出完 描述 給乙個數字n 1 n 1e9 代表集合中有n個人,現在每次選若干個人出來,然後把這若干個人裡面其中乙個置...
一道阿里校春招筆試題
a,b,c三位同學都是很聰明的同學,面試官給他們背上依次貼上了數字2,4,8,他們都能看見別人的數字但無法看見自己的數字,現在面試官告訴他們這些數字都是自然數並且構成乙個等比數列,讓a b c同學依次迴圈回答是否確定自己的數字是多少,每位同學的回答算作一次,經過 次有同學能準確說出自己的數字。2 3...