題意:
給出乙個字串,問兩個不相交的字串對稱相減的絕對值和小於等於 m的最長長度。
思路:
如果存在兩個不相交的字串,那麼必然兩個字串之間存在對稱軸,分為兩種:
1. 子串之間有奇數個其它字元,那麼列舉其中的字元。
2. 子串之間有偶數個其它字元,那麼列舉其中的空格。
對稱軸確定之後,對對稱的串計算出其對稱相減的和儲存在陣列中,那麼問題轉化為,在乙個陣列中找出和小雨等於m的最長連續字串,尺取法的經典應用。
#include
#include
#include
#include
using
namespace
std;
const
int maxn = 5005;
int m,ans,pos;
int a[maxn];
char s[maxn];
int find(int n)
sum -= a[t++];
if(t >= n) break;
}return ans;
}int main(int argc, char
const *argv)
ans = max(ans,find(pos));
}for(int i = 1;i <= len-1; i++)
ans = max(ans,find(pos));
}printf("%d\n",ans);
}return
0;}
永不言棄!!! HDU 6103 Kirinriki 尺取好題
傳送門 開始一直不知道怎麼寫 但是可以列舉a aa串的右端點和b bb串的左端點 然後可以一直把a aa串向左擴充套件,b bb串向右擴充套件 而且因為dis disdi s是個單增函式,所以一旦大於m mm就可以直接跳出 但這樣沒有優化複雜度,仍然是o n 3 o n 3 o n3 究其原因,是因...
hdu 1692 列舉 剪枝
題意 給你一些井的資訊,井中原有的水,當井中的水滿足一定量後會被破壞並且這些水全部流入下乙個井中,用多少能量能直接破壞這個井。然後問要想破壞第n口井至少要多少能量。解題思路 這題首先是要找到從哪口井開始破壞,因為要破壞第n口井,要麼直接破壞n,要麼n之前有連續的幾口井一同被破壞,如果中間出現了乙個不...
HDU3721 列舉 最長路
題意 給你一顆n個節點n 1條邊的樹,每條邊都有乙個權值,現在讓你任意移動一條邊然後把這條邊連線到任意兩個點上,最後問你怎樣移動才能使樹上相距最遠的兩個點距離最小。思路 先求出樹的最長路,然後列舉移動最長路上的所有邊,移走這條邊後,原樹必定分為不連線的兩顆子樹,分別求這兩顆子樹的最長路,然後分別找到...