1 条题解

  • 0
    @ 2025-5-5 0:43:22

    🔍 解题思路

    题目意思大致如下:

    首先给你一个可用字符集,比如:prog

    那么我们需要计算的单词,都是在这个集合内的元素,否则单词的权值是0

    那么可以组成的单词rog pog rop等等

    计算单词的最大权值,但是单词可以拼接起来。

    但是拼接起来后还是要在可用集合中,且个数都不能超支

    
    #include<bits/stdc++.h>
    using namespace std;
    char s[16];
    int cnt[256];
    int tot[256];
    int m[256];
    struct DICT
    {
    	char words[10];
    	int len,val;
    }dic[40010];
    
    int tovalue(char ch[])
    {
    	int sum=0;
    	for(int i=0;ch[i]!='\0';++i)
    		sum+=m[ch[i]];
    	return sum;
    }
    
    int add(int list[],char ch[])
    {
    	for(int i=0;ch[i]!='\0';++i){
    		++list[ch[i]];
    		if(list[ch[i]]>tot[ch[i]])
    			return false;		
    	}	
    	return true;
    }
    
    int main()
    {
    	m['q']=7;m['w']=6;m['e']=1;m['r']=2;m['t']=2;m['y']=5;m['u']=4;m['i']=1;m['o']=3;m['p']=5;
    	m['a']=2;m['s']=1;m['d']=4;m['f']=6;m['g']=5;m['h']=5;m['j']=7;m['k']=6;m['l']=3;
    	m['z']=7;m['x']=7;m['c']=4;m['v']=6;m['b']=5;m['n']=2;m['m']=5;
    	int ans=0;
    	scanf("%s",s);
    	for(int i='a';i<='z';++i)
    		tot[i]=0;
    	for(int i=0;s[i]!='\0';++i)
    		++tot[s[i]];
    	int s_len=strlen(s);
    	int dic_index=0;
    	while(scanf("%s",s)==1&&s[0]!='.'){
    		for(int i='a';i<='z';++i)
    			cnt[i]=0;
    		int v=tovalue(s);
    		int len=strlen(s);
    		if(add(cnt,s)==1)
    			ans=max(ans,v);
    		if((s_len==6&&len==3)||(s_len==7&&len<=4)){
    			strcpy(dic[dic_index].words,s);
    			dic[dic_index].len=len;
    			dic[dic_index].val=v;
    			++dic_index;
    		}
    	}
    	if(s_len>=6){
    		for(int i=0;i<dic_index;++i)
    			for(int j=i+1;j<dic_index;++j){
    			for(int k='a';k<='z';++k)
    				cnt[k]=0;
    			if(!add(cnt,dic[i].words))
    				continue;
    			if(!add(cnt,dic[j].words))
    				continue;
    			ans=max(ans,dic[i].val+dic[j].val);
    		}
    		
    	}		
    	printf("%d",ans);
    	return 0;	
    }
    • 1

    信息

    ID
    172
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    4
    已通过
    1
    上传者