你尝试过在百度上使用site inurl语法查询吗? 如果还没有的话可以试一下:)
如输入 site:www.baidu.com inurl:news
则会搜出所有在www.baidu.com站点上的包含"news"子串的url。
现在我们有一个inurl查询列表和一个url列表,你能找出所有至少被查询过一次的url吗?
输入格式
输入第一行是一个整数n,表示一共有n个查询。以下n行每行一个查询。查询的site部分和inurl部分中间恰好用一个空格分割,且每行不包含其他空格。下一行是一个整数m,表示url列表中一共有m个url。以下m行每行一个url。
输出格式
每个url输出一行。如果至少符合一条查询,输出1,否则输出0。
输入样例 例
3
site:www.baidu.com inurl:/more
site:zhidao.baidu.com inurl:/browse/
site:www.sina.com.cn inurl:www20041223am
7
http://www.baidu.com/more/
http://www.baidu.com/guding/more.html
http://www.baidu.com/events/20060105/photomore.html
http://hi.baidu.com/browse/
http://hi.baidu.com/baidu/
http://www.sina.com.cn/head/www20021123am.shtml
http://www.sina.com.cn/head/www20041223am.shtml
1
1
0
0
0
0
1
竞赛时真是什么事情都发生了,VC每次编译都死机,卸载后又无法正确安装,总是安装失败,折腾了近一个小时,剩下的时间不多了,只好换到Linux下用GCC的命令来一点点编译,编译还好,找错就麻烦的很了,先要判断那里有错,然后通过Cout来输出,最后只提交了一道题目1,题目4调试正确后系统已经提示您的竞赛时间已经结束,不知能否通过,就把代码贴出来吧。
using namespace std;
const int N = 10000 ;
char site[N][ 260 ],url[N][ 260 ];
int main()
{
char ch,*p,str[300];
int n,i,j,t,m;
cin>>n;
for(i=0;i<n;++i)
{
while((ch=getchar())!=':');
cin>>site[i];
while((ch=getchar())!=':');
cin>>url[i];
//cout<<site[i]<<':'<<url[i]<<endl;
}
cin>>m;
for(i=0;i<m;++i)
{
cin>>str;
for(j=0,t=0;j<n && t==0;++j)
{
p=strstr(str,site[j]);
if(p!=NULL)
{
//cout<<j<<":"<<site[j]<<"--------"<<p<<endl;
//cout<<"site found---"<<str+7+strlen(site[i])-1<<"---";
p=strstr(str+7+strlen(site[j])-1,url[j]);
if(p!=NULL)
{
t=1;
//cout<<"url found----"<<endl;
//cout<<url[j]<<"---------"<<p<<endl;
}
}
}
cout<<t<<endl;
}
return 0;
}