題目鏈結
題目大意:給出字串str1,再第二行給出字串str2,第三行給出刪除str1中的字元的順序,用陣列a存,問最多按第三行的順序刪除str1中的字元剩下的字串中str2
我們定義l為a的左邊界,r為a的右邊界,mid為a的中
我們要求的是最多能刪除的字元數,那麼mid的值越大越好,所以首先判斷mid~r中剩下的字元包括str2嗎?
如果包括包括我們令l=mid,看看mid可不可能取更大的值
如果不包括我們令r=mid(所以r永遠不可能是mid的取值,及區間為左閉右開),降低mid的取值。
**實現:
1 #include2 #include3 #include4 #include5 #include6 #include7 #include8#define ll long long
9using
namespace
std;
10int a[200005],b[200003];char str1[200005],str2[200005
];11
intr,l,l;
12int judge(int
m)13
24if(m==strlen(str2))
25return1;
26else
27return0;
28}29int
main()
3046
else
4751
}52 printf("
%d\n
",l);53}
54return0;
55 }
寵物收養場 vector, 加二分)
凡凡開了一間寵物收養場。收養場提供兩種服務 收養被主人遺棄的寵物和讓新的主人領養這些寵物。每個領養者都希望領養到自己滿意的寵物,凡凡根據領養者的要求通過他自己發明的乙個特殊的公式,得出該領養者希望領養的寵物的特點值a a是乙個正整數,a 2 31 而他也給每個處在收養場的寵物乙個特點值。這樣他就能夠...
DP最長子序列 (常規加二分)
所有的最長子序列都差不多,只是 的區別,所以要注意符號問題,之前學過常規寫法,今天又看到了乙個二分寫法,時間複雜度前者為n n,後者為nlogn,所以學一學還是很有必要的,挑了一道自己oj上的dp水題 傳送門 最長不上公升子串行 常規寫法很簡單,也當是複習了 include include incl...
nefu 復讀機 分塊加二分
有兩個操作,1操作,對於x,y區間內的值全部加1。2操作,求出第一次復讀y次跟最後乙個復讀y次的復讀機次數。a存復讀機原陣列,b存分塊陣列,對於分塊陣列每個進行排序操作,使區間有序,每次查詢對於第乙個區間查詢到最後乙個區間,進行二分查詢。更新時則對兩個區間都進行更新。也可對a更新後再對b賦值。inc...