东北赛题目及反思

来源:互联网 发布:mac用什么翻墙 编辑:程序博客网 时间:2024/05/16 23:55

这次参加东北赛真的很郁闷,虽然主办方提供了很好的环境,但不知道是发挥的不好,还是水平不够,只拿了三等奖,虽然是三等奖的前几名,但还是很郁闷。。。。。

最重要的是合作问题,不知道为什么之前合作很愉快的团队,这次比赛合作的并不好,可能我占很大原因吧。。。。

最先出的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;}


原创粉丝点击