实战演练 text15 T3


实战演练 text15 T3_第1张图片

拿到手在想映射匹配【我一定是疯了

zn dalao 50分的暴力:


#include
using namespace std;
template  void read(T &x){
	x=0;int f=1;char ch=getchar();
	for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-1;
	for(;isdigit(ch);ch=getchar())x=(x<<1)+(x<<3)+ch-'0';
	x*=f;
}

int n;
string a[61]; 
int ans;
int d[61];
bool flag;

int main(){
	read(n);
	memset(d,0,sizeof(d));
	for(int i=1;i<=n;++i) cin>>a[i];
	for(int i=1;i<=n;++i){
		d[i]=1;
		for(int j=1;j<=i-1;++j){
				flag=0;
				int len1=a[i].length(),len2=a[j].length();
				int len=min(len1,len2);
				for(int k=0;k


实战演练 text15 T3_第2张图片


std1:

string 里面有find函数【大雾

做题要经常初始处理的呢 比如前缀和优化

用空间换时间

匹配的非常巧妙【orz


#include
using namespace std;
template  void read(T &x){
	x=0;int f=1;char ch=getchar();
	for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-1;
	for(;isdigit(ch);ch=getchar())x=(x<<1)+(x<<3)+ch-'0';
	x*=f;
}

typedef long long LL;

int n;
string a[55];
bool v[55][55];
LL f[55];

bool matching(string a,string b){
	if(a.length()>b.length()) swap(a,b);
	if(b.find(a)!=0) return 1;//非前缀 
	else return 0; //前缀 
}

void debug(){
	for(int i=1;i<=n;++i) cout<>a[i];
	for(int i=1;i<=n;++i){
		f[i]=1;
		for(int j=1;j<=n;++j)
			v[i][j]=matching(a[i],a[j]);
	}
	/*for(int i=1;i<=n;++i){
		for(int j=1;j<=n;++j) cout<trie树+DP




你可能感兴趣的:(实战演练,字母树,树形dp)