10 boar pig sheep gazelle sheep sheep alpaca alpaca marmot mole
sheep 3
题解:贪心ac,字典树me,map超时;
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<algorithm>
using namespace std;
const int INF=0x3f3f3f3f;
const double PI=acos(-1.0);
typedef long long LL;
#define mem(x,y) memset(x,y,sizeof(x))
#define T_T while(T--)
#define F(i,x) for(i=0;i<x;i++)
#define SI(x) scanf("%d",&x)
#define SL(x) scanf("%lld",&x)
#define PI(x) printf("%d",x)
#define PL(x) printf("%lld",x)
#define P_ printf(" ")
const int MAXN=4000010;
struct Node{
char s[12];
int num;
friend bool operator < (Node const &a,Node const &b){
if(strcmp(a.s,b.s)<0)return true;
return false;
}
}dt[MAXN];
int main(){
int N;
int i,j;
SI(N);
mem(dt,0);
F(i,N){
scanf("%s",dt[i].s);
dt[i].num=1;
}
sort(dt,dt+N);
int ans=0;
int ms=0;
for(i=1;i<N;i++){
if(strcmp(dt[i].s,dt[i-1].s)==0)dt[i].num=dt[i-1].num+1;
if(dt[i].num>ms){
ms=dt[i].num;
ans=i;
}
}
printf("%s %d\n",dt[ans].s,ms);
return 0;
}
map超时
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<algorithm>
#include<map>
#include<string>
using namespace std;
const int INF=0x3f3f3f3f;
const double PI=acos(-1.0);
typedef long long LL;
#define mem(x,y) memset(x,y,sizeof(x))
#define T_T while(T--)
#define F(i,x) for(i=0;i<x;i++)
#define SI(x) scanf("%d",&x)
#define SL(x) scanf("%lld",&x)
#define PI(x) printf("%d",x)
#define PL(x) printf("%lld",x)
#define P_ printf(" ")
map<string,int>mp;
int main(){
int N;
char s[15],t[15];
SI(N);
int i;
mp.clear();
F(i,N){
scanf("%s",s);
mp[s]++;
}
map<string,int>::iterator iter;
int ms=0;
for(iter=mp.begin();iter!=mp.end();iter++){
if(iter->second>ms){
ms=iter->second;strcpy(t,iter->first.c_str());
}
}
printf("%s %d\n",t,ms);
return 0;
}
字典树me
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<algorithm>
#include<map>
#include<string>
using namespace std;
const int INF=0x3f3f3f3f;
const double PI=acos(-1.0);
typedef long long LL;
#define mem(x,y) memset(x,y,sizeof(x))
#define T_T while(T--)
#define F(i,x) for(i=0;i<x;i++)
#define SI(x) scanf("%d",&x)
#define SL(x) scanf("%lld",&x)
#define PI(x) printf("%d",x)
#define PL(x) printf("%lld",x)
#define P_ printf(" ")
const int MAXN=4000010;
int word[MAXN],ch[MAXN][30],val[MAXN];
char dt[MAXN][12];
int sz;
void join(char *s){
int len=strlen(s),k=0;
for(int i=0;i<len;i++){
int j=s[i]-‘a‘;
if(!ch[k][j]){
mem(ch[sz],0);
ch[k][j]=sz++;
}
k=ch[k][j];
word[k]++;
}
val[k]=1;
}
int find(char *s){
int i,j,len=strlen(s),k=0;
F(i,len){
j=s[i]-‘a‘;
k=ch[k][j];
}
return word[k];
}
int main(){
int N;
char ans[12];
int i,j;
sz=0;
SI(N);
F(i,N){
scanf("%s",dt[i]);
join(dt[i]);
}int ms=0;
F(i,N){
int temp=find(dt[i]);
if(temp>ms){
ms=temp;
strcpy(ans,dt[i]);
}
}
printf("%s %d\n",ans,ms);
return 0;
}
大神的链表字典序ac;
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stack>
#include<iostream>
#include<algorithm>
#define fab(a) (a)>0?(a):(-a)
#define LL long long
#define MAXN 10010
#define mem(x) memset(x,0,sizeof(x))
#define INF 0xfffffff
using namespace std;
struct s
{
int num;
s *next[26];
};
s *root;
int ans=0;
char sa[12];
void create(char *str)
{
int len=strlen(str);
s *p=root,*q;
for(int i=0;i<len;i++)
{
int id=str[i]-‘a‘;
if(p->next[id]==NULL)
{
q=(s *)malloc(sizeof(s));
for(int j=0;j<26;j++)
q->next[j]=NULL;
q->num=0;
p->next[id]=q;
p=p->next[id];
}
else
{
//if(i==len-1)
p=p->next[id];
}
}
if(ans<++p->num)
{
strcpy(sa,str);
ans=p->num;
}
}
void begin()
{
for(int i=0;i<26;i++)
root->next[i]=NULL,root->num=0;
}
void freetree(s *t)
{
if(t==NULL)
return;
for(int i=0;i<26;i++)
{
if(t->next[i]!=NULL)
freetree(t->next[i]);
}
free(t);
return;
}
int main()
{
int t,i,n;
char ss[12];
int bz=0;
root=(s *)malloc(sizeof(s));
begin();
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s",ss);
create(ss);
}
printf("%s %d\n",sa,ans);
freetree(root);
return 0;
}
原文:http://www.cnblogs.com/handsomecui/p/5002632.html