codevs3945 完美拓印

2022-05-21 13:54:10 字數 916 閱讀 5953

(題目鏈結)

給出乙個詭異的圖形,再給出乙個歪七扭八的線,問圖形上下兩條邊與線的匹配→_→

前後求差然後kmp,這種數字的匹配還是kmp靠譜,hash太容易衝突了。

注意可以上下翻轉有4種匹配方式

// codevs3945

#include#include#include#include#include#include#include#define ll long long

#define inf 2147483640

#define pi acos(-1.0)

#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);

using namespace std;

const int maxn=1000010;

int next[maxn],t[maxn],p[maxn],a[maxn],b[maxn];

int n,m;

void calnext()

}int kmp()

return cnt;

}int main()

n--,m--;int ans=0;

for (int i=1;i<=n;i++) p[i]=a[i+1]-a[i];

for (int i=1;i<=m;i++) t[i]=b[i+1]-b[i];

ans+=kmp();

for (int i=1;i<=n;i++) p[i]=a[n-i+2]-a[n-i+1];

ans+=kmp();

for (int i=1;i<=n;i++) p[i]=0;

ans+=2*kmp();

printf("%d\n",ans);

return 0;

}

lintcode 394 硬幣排成線

有 n 個硬幣排成一條線。兩個參賽者輪流從右邊依次拿走 1 或 2 個硬幣,直到沒有硬幣為止。拿到最後一枚硬幣的人獲勝。請判定 第乙個玩家 是輸還是贏?樣例n 1,返回 true.n 2,返回 true.n 3,返回 false.n 4,返回 true.n 5,返回 true.挑戰o 1 時間複雜度...

394 字串解碼

給定乙個經過編碼的字串,返回它解碼後的字串。編碼規則為 k encoded string 表示其中方括號內部的 encoded string 正好重複 k 次。注意 k 保證為正整數。你可以認為輸入字串總是有效的 輸入字串中沒有額外的空格,且輸入的方括號總是符合格式要求的。此外,你可以認為原始資料不...

394 字串解碼

思路 思路一 使用棧 這種括號或者括號套括號的模式非常適合用棧來解決,設定乙個輔助棧,當遇到 的時候,開始將所有東西推到 棧中,直到遇到 時,開始取棧中的東西。取得方法 先取字元,再取數字,計算得到到的東西再壓入棧中 直到所有 都遍歷完為止 注意點 從棧中取的順序和最終生成結果得順序應該一致 cla...