这次参加东北赛真的很郁闷,虽然主办方提供了很好的环境,但不知道是发挥的不好,还是水平不够,只拿了三等奖,虽然是三等奖的前几名,但还是很郁闷。。。。。
最重要的是合作问题,不知道为什么之前合作很愉快的团队,这次比赛合作的并不好,可能我占很大原因吧。。。。
最先出的k题,很水的一个题,吕出的,一次就过,速度还不慢。
接下来是我和张的一道题,我的那道题也很水,但是键盘一直不在我手上,所以出的不是很早,出来了之后都60多名了。
接下来就是一道字符串处理题目和一个几何题目,这是我这次比赛最不爽的地方,明明是很简单的东西啊,做了那么长时间。。。。。
scanf输入lld不好使,强制类型转换也不好使,疯掉了,简单的四边形求面积,居然做的那么麻烦,还没过,最后用海伦公式过的。。。。。
最后是c题,也怪我,做完一个题之后就没静下心来好好看题,到最后半个小时还是吕说的c是个搜索,我一听,还真是,到还有二十分钟结束的时候才开始写。。。。
以下是我写的c题代码,自己测试的数据都过了,但是不知道会不会超时。。。。。
#include <cstdlib>
#include <iostream>
#include <string.h>
using namespace std;
int map[1010][1010];
int it[1010];
int sum[1010];
int ask[1010];
int n,m;
int answer;
int maxx;
void bfs(int x)
{
for(int i=1;i<=n;i++)
{
if(map[x][i]!=0)
{
answer+=it[i];
if(answer>maxx) maxx=answer;
bfs(i);
answer-=it[i];
}
}
}
int main(int argc, char *argv[])
{
int i,j,a,b,t,ans,fnode;
while(scanf("%d%d",&n,&m)!=EOF)
{
memset(sum,0,sizeof(sum));
memset(map,0,sizeof(map));
for(i=1;i<=n;i++)
cin>>it[i];
for(i=1;i<=m;i++)
{
scanf("%d%d",&a,&b);
map[a][b]=1;
sum[b]++;
}
int min=999999;
for(i=1;i<=n;i++)
if(sum[i]<min)
{ min=sum[i];}
t=0;
for(i=1;i<=n;i++)
if(sum[i]==min)
{ ask[t++]=i;}
if(t==1) {printf("%d\n",ask[0]);}
else if(t==n) printf("1\n");
else
{
sort(ask,ask+t);
ans=0;
for(i=0;i<t;i++)
{
answer=it[ask[i]];maxx=0;
bfs(ask[i]);
if(maxx>ans)
{
ans=maxx;
fnode=ask[i];
}
}
printf("%d\n",fnode);
}
}
system("PAUSE");
return EXIT_SUCCESS;
}