原oj网址点击打开链接
vj网址点击打开链接
这道题 嗯 说实话啊 打比赛的时候我们感觉是水题 但是我们学长说暴力存不下 然后我们就天真的相信这道题存不下了 (也是因为这道题 没有几个人ac)然后我们这道题就很懵 然后最后我们试了一下 卡一下内存 然后 最后20分钟给ac了 啊 这道题是真心我们队 掉进坑里面了 我们一直在思考怎么存 其实这道题 就是一个 怎么处理字符串 然后加上卡一下内存就行了 我们开了 string 2000000 然后内存超限了 所以我们开了1000000 然后就ac了 其他队 应该是直接暴力搜??? 反正我们的是二分 大家可以看一看 我个人感觉还是比较好理解的
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
string a[1000000];
string b, c;
char j;
int k=0,ans,er,ac,er2;
int erfen()
{
int l = 0;
int r = k - 1, pan;
while(l <= r)
{
pan=(l+r)/2;
if(a[pan] >= c)
r = pan - 1;
else
l = pan + 1;
}
return l;
}
int main()
{
while(1)
{
j=getchar();
if(j!='\n')
a[k]+=j;
else
{
k++;
j=getchar();
if(j=='\n')
break;
a[k]+=j;
}
}
sort(a, a + k);
while(cin >> c)
{
er=erfen();
ac=c.size()-1;
c[ac]+=1;
er2=erfen();
cout<<er2-er<<endl;
}
return 0;
}