B1789 Y型項鍊 貪心

2022-03-13 06:03:09 字數 1722 閱讀 9322

想明白之後就是一道大水題,就是兩兩把最長公共字首求出來,然後直接取最長的,然後就直接暴力算就行了。。。

題幹:

description

歡樂島上眾多新奇的遊樂專案讓小可可他們玩的非常開心。現在他們正在玩比賽串項鍊的遊戲,誰串的最快就能得到優厚的獎品。這可不是普通的項鍊,而是一種y型項鍊,項鍊的最中間有一顆大珍珠作為結合點,從大珍珠上連出來3條由各種寶石串起來的鍊子。比賽的規則是這樣的:每次可以從三條鍊子中某一條的一端取下來乙個寶石,或者安上去乙個寶石,稱為一次操作,經過若干次操作,最終使得三條鍊子完全相同。想要贏得比賽,那麼只能使用盡量少的操作次數。假設每種寶石都有無數多個以供使用,且鍊子足夠長。你能幫助小可可贏得比賽嗎?注:由於對y型項鍊的寶石數沒有特殊的要求,所以即使你把所有寶石都取下來,也是乙個可以接受的方案(三根沒有串寶石的繩子也是完全一樣的).

input

一共有3行,表示y型項鍊的三條鍊子,每行開始有乙個數字n,表示初始時這條鍊子上串有n個寶石(n

<=50),隨後是乙個空格,然後是n個'

a'和'z'

之間的字元,表示這個鍊子上的寶石,每個字母表示一種不同的寶石,這個字串最左邊的字元表示的是離大珍珠最近的那個寶石,而最右邊的表示的是在鍊子末端的寶石。

output

只有乙個整數,表示所需要的最少的操作次數.

sample input

3cat

3tac

5catch

sample output

8hint

100%的資料中,n<=50

.50%的資料中,n<=20

.source

**:

#include#include

#include

#include

#include

#include

#include

using

namespace

std;

#define duke(i,a,n) for(int i = a;i <= n;i++)

#define lv(i,a,n) for(int i = a;i >= n;i--)

#define clean(a) memset(a,0,sizeof(a))

const

int inf = 1

<< 30

;typedef

long

long

ll;typedef

double

db;template

void read(t &x)

template

void

write(t x)

char s1[60],s2[60],s3[60

];int dp[100

],l1,l2,l3;

int x,y,num = 0

;int

ans1,ans2,ans3,ans;

intmain()

duke(i,

0,min(l1,l3) - 1

)

duke(i,

0,min(l2,l3) - 1

)

if(ans1 >=max(ans2,ans3))

else

if(ans2 >=max(ans1,ans3))

else

printf("%d

",num);

return0;

}

B 小y的序列

又是一年 csp,機房的oier都在刷題,alan卻在發呆想著小y,正巧忽然聽到隔壁機房某神zlk熟悉的聲音 找規律就可以了吧,這個序列感覺很熟悉啊,就是1,2,4,6,11這其實就是乙個a i 1 a i i的序列哦,突然隔壁的聲音大了起來,zlk,你好像有個數寫錯了 大霧 課後,alan在紙上寫...

Wannafly挑戰賽8 小Y和小B睡覺覺

時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld brother ya和brother bo現在要開始睡覺啦!假設當前的時間為yyyy mm dd hh mm ss,他們兩個會一覺睡t秒,請問他們睡醒的時刻是幾天以後 ...

牛客IOI周賽19 普及組 B 小y的序列

題目鏈結 長度為n的序列,最少需要修改多少個數字,滿足a i 1 a i i,i 2,n a i 1 a i i,i in 2,n a i 1 a i i,i 2 n 滿足等式的序列是固定的,可以用序列的首元素a 0a 0 a0 表示整個序列,也就是說序列的首元素a 0a 0 a0 對應乙個唯一的序...