problem
solution
codes
//思路就是對於每個狀態下的字串,列舉可以替換的部分替換作為下乙個新的狀態。
#include
#include
#include
#include
using
namespace
std;
int n = 1, flag;
string a, b, ai[1010], bi[1010];
queue
q;mapma;//map判重防mle
int main()
if(ma[t]>10)break;
//如果沒有這層迴圈的話,就只能找到第乙個子串,後面的會被忽略,如abaaaba abcdaba
for(int j = 0; j < t.size(); j++)}}
}if(flag)cout
<"\n";
else
cout
<<"no answer!\n";
return
0;}
#include
#include
#include
#include//set判重
#define maxn 1010
using
namespace
std;
string ai[maxn],bi[maxn];
struct node
};set
s;int ans;
int main()
if(t.st > 10)
for(int j = 0; j < t.str.size(); j++)}}
}//如果<10就因為找不到出來也是不成立的, 即ans沒有被賦過值的話
if(ans == 20 || ans == 0)cout
<<"no answer!\n";
else
cout
<"\n";
return
0;}
noip2002 矩形覆蓋
在平面上有 n 個點 n 50 每個點用一對整數座標表示。例如 當 n 4 時,4個點的座標分別為 p1 1,1 p2 2,2 p3 3,6 p4 0,7 如圖1。這些點可以用 k 個矩形 1 k 4 全部覆蓋,矩形的邊平行於座標軸。當 k 2 時,可用如圖2的兩個矩形 sl,s2 覆蓋,s1,s2...
NOip2002均分紙牌
題目描述 有 n 堆紙牌,編號分別為 1,2,n。每堆上有若干張,但紙牌總數必為 n 的倍數。可以在任一堆上取若於張紙牌,然後移動。移牌規則為 在編號為 1 堆上取的紙牌,只能移到編號為 2 的堆上 在編號為 n 的堆上取的紙牌,只能移到編號為 n 1 的堆上 其他堆上取的紙牌,可以移到相鄰左邊或右...
noip2002 均分紙牌
題目描述 有 n 堆紙牌,編號分別為 1,2,n。每堆上有若干張,但紙牌總數必為 n 的倍數。可以在任一堆上取若於張紙牌,然後移動。移牌規則為 在編號為 1 堆上取的紙牌,只能移到編號為 2 的堆上 在編號為 n 的堆上取的紙牌,只能移到編號為 n 1 的堆上 其他堆上取的紙牌,可以移到相鄰左邊或右...