我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: ACM题征解(活动结束) 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

richardxx





性别: 保密 状态: 该用户目前不在线
等级: 品行端正
发贴: 193
威望: 0
浮云: 1144
在线等级:
注册时间: 2005-10-01
最后登陆: 2009-02-28

5come5帮你背单词 [ neck /nek/ n. 脖子,颈 ]


ACM题征解(活动结束)

Binary codes   poj1147
Time Limit:1000MS Memory Limit:65536K
Total Submit:1695 Accepted:626

Description

Consider a binary string (b1…bN) with N binary digits. Given such a string, the matrix of Figure 1 is formed from the rotated versions of the string.

  b1   b2 … bN-1 bN

  b2   b3 … bN   b1

  …

  bN-1 bN … bN-3 bN-2

  bN   b1 … bN-2 bN-1



  Figure 1. The rotated matrix

Then rows of the matrix are sorted in alphabetical order, where ‘0’ is before ‘1’. You are to write a program which, given the last column of the sorted matrix, finds the first row of the sorted matrix.

As an example, consider the string (00110). The sorted matrix is

  0 0 0 1 1

  0 0 1 1 0

  0 1 1 0 0

  1 0 0 0 1

  1 1 0 0 0

and the corresponding last column is (1 0 0 1 0). Given this last column your program should determine the first row, which is (0 0 0 1 1).

Input

The first line contains one integer N ≤ 3000, the number of binary digits in the binary string. The second line contains N integers, the binary digits in the last column from top to bottom.

Output

The first line contains N integers: the binary digits in the first row from left to right.

Sample Input

5
1 0 0 1 0

Sample Output

0 0 0 1 1

Source
IOI 2001 (back-up task)


[ 此贴被kangtalc在2007-04-16 12:28重新编辑 ]
顶端 Posted: 2007-04-10 13:14 | [楼 主]
solo独奏



性别: 帅哥 状态: 该用户目前不在线
头衔: 冰是睡着的水
等级: 荣誉会员
家族: YD一族
发贴: 6989
威望: 3
浮云: 379
在线等级:
注册时间: 2006-12-01
最后登陆: 2008-06-26

5come5帮你背单词 [ scarf /ska:f/ n. 围巾,头巾,披肩 ]


是我的了,别跟我抢
顶端 Posted: 2007-04-11 12:54 | [1 楼]
solo独奏



性别: 帅哥 状态: 该用户目前不在线
头衔: 冰是睡着的水
等级: 荣誉会员
家族: YD一族
发贴: 6989
威望: 3
浮云: 379
在线等级:
注册时间: 2006-12-01
最后登陆: 2008-06-26

5come5帮你背单词 [ tendency /'tendənsi/ n. 趋势,倾向 ]


Quote:
As an example, consider the string (00110). The sorted matrix is

  0 0 0 1 1

  0 0 1 1 0

  0 1 1 0 0

  1 0 0 0 1

  1 1 0 0 0

跟给出的排列方式有差异啊???
按照上面的来应该是

  0 0 0 1 1

  0 0 1 1 0

  0 1 1 0 0

  1 1 0 0 0

  1 0 0 0 1

这才对嘛,那么对应的最后一列为(10001),它的第一行应该是(00011)

怀疑楼主的题哟点问题,如果不是那就是我笨了

 

顶端 Posted: 2007-04-11 15:00 | [2 楼]
solo独奏



性别: 帅哥 状态: 该用户目前不在线
头衔: 冰是睡着的水
等级: 荣誉会员
家族: YD一族
发贴: 6989
威望: 3
浮云: 379
在线等级:
注册时间: 2006-12-01
最后登陆: 2008-06-26

5come5帮你背单词 [ knit /nit/ v. 编织,针织,使紧密结合 ]


哦,是我笨...我知道是什么意思了.上课归来马上来搞




[ 此贴被solo独奏在2007-04-13 23:27重新编辑 ]

顶端 Posted: 2007-04-11 18:16 | [3 楼]
solo独奏



性别: 帅哥 状态: 该用户目前不在线
头衔: 冰是睡着的水
等级: 荣誉会员
家族: YD一族
发贴: 6989
威望: 3
浮云: 379
在线等级:
注册时间: 2006-12-01
最后登陆: 2008-06-26

5come5帮你背单词 [ kidney /'kidni/ n. 肾,腰子 ]


不好意思我的编译器不知道哪抽疯了,说少什么CODES...用不了为了抢时间,我把代码给出来谁帮帮调试一下,我仔细检查了没发现什么问题.... 

#include
#include
#include
#define N 3000
int main()
{
int *zzw;
zzw=(int*)malloc(N*sizeof(int));
int i,n;
int TO_FIND_THEFIRSTROW(int *, int n);
printf("input the number of the row\n");
scanf("%d",&n);
printf("the number of the binary digits is n=%d,and the last column of the matrix\n",n);
for(i=0;iscanf("%d",&(*(zzw+i)));
TO_FIND_THEFIRSTROW(zzw,n);
free(zzw);
return 0;
}
int TO_FIND_THEFIRSTROW(int*zzw,int n)
{
int i,m;
m=0;
for(i=0;i  {
  if(*(zzw+i)==0)
  m++;
  }
for(i=0;i  {
  if(i  *(zzw+i)=0;
  else
  *(zzw+i)=1;
  }
printf("the first row of the matrix is \n");
for (i=0;iprintf("%d ",*(zzw+i));
}

错的哈,不好意思,改正中




[ 此贴被solo独奏在2007-04-13 14:19重新编辑 ]

顶端 Posted: 2007-04-11 19:14 | [4 楼]
solo独奏



性别: 帅哥 状态: 该用户目前不在线
头衔: 冰是睡着的水
等级: 荣誉会员
家族: YD一族
发贴: 6989
威望: 3
浮云: 379
在线等级:
注册时间: 2006-12-01
最后登陆: 2008-06-26

5come5帮你背单词 [ term /tə:m/ n. 学期,期限,期间,术语,措词,(pl.)条款,条件;vt. 称为,叫做 ]


截个图  

我不知道我理解错没哈

英语啊英语啊...永远的痛 




[ 此贴被solo独奏在2007-04-11 22:48重新编辑 ]
远程图片:20070411224043062.JPG
本帖最近评分记录:
  • 浮云:5 (by kangtalc) | 理由: 請到poj上提交,并且将AC的图截下来哈~~~ 小奖励你一下,这么积极的做题~~
  • 顶端 Posted: 2007-04-11 22:41 | [5 楼]
    solo独奏



    性别: 帅哥 状态: 该用户目前不在线
    头衔: 冰是睡着的水
    等级: 荣誉会员
    家族: YD一族
    发贴: 6989
    威望: 3
    浮云: 379
    在线等级:
    注册时间: 2006-12-01
    最后登陆: 2008-06-26

    5come5帮你背单词 [ organ /'o:gən/ n. 器官,机构,风琴 ]


    我用不来那个POJ,不明白他所谓的提交格式.提交两次都是COMPILING ERROR
    谁能指点一下,我 想我写的没错是正解
    顶端 Posted: 2007-04-13 11:34 | [6 楼]
    solo独奏



    性别: 帅哥 状态: 该用户目前不在线
    头衔: 冰是睡着的水
    等级: 荣誉会员
    家族: YD一族
    发贴: 6989
    威望: 3
    浮云: 379
    在线等级:
    注册时间: 2006-12-01
    最后登陆: 2008-06-26

    5come5帮你背单词 [ poison /'poizn/ n. 毒药,毒物;v. 放毒,毒害 ]


    对不住各位了,再次证明了我的愚蠢...我的是WRONG ANSWER.
    我一定回做出来的
    顶端 Posted: 2007-04-13 14:15 | [7 楼]
    solo独奏



    性别: 帅哥 状态: 该用户目前不在线
    头衔: 冰是睡着的水
    等级: 荣誉会员
    家族: YD一族
    发贴: 6989
    威望: 3
    浮云: 379
    在线等级:
    注册时间: 2006-12-01
    最后登陆: 2008-06-26

    5come5帮你背单词 [ stature /'stætə/ n. 身材,身高 ]


    对不住各位了,再次证明了我的愚蠢...我的是WRONG ANSWER.呵呵很不好意思的讲,我也知道算法很不严密了,改好了在去试
    顶端 Posted: 2007-04-13 14:16 | [8 楼]
    solo独奏



    性别: 帅哥 状态: 该用户目前不在线
    头衔: 冰是睡着的水
    等级: 荣誉会员
    家族: YD一族
    发贴: 6989
    威望: 3
    浮云: 379
    在线等级:
    注册时间: 2006-12-01
    最后登陆: 2008-06-26

    5come5帮你背单词 [ paralyse /'pærəlaiz/ vt. 使麻痹,使无力,使停顿 ]


    我整理出来了,谢谢楼主的鼓励.不过我刚提交时一直是TIME LIMIT EXCEED,是我的算法过于复杂然后超过了时间了吗??还是网速慢提交的时间过长导致的??
    #include <stdio.h>
    #include<stdlib.h>
    #include<math.h>
    #define N 3000
    int main()
    {
    int i;
    int n;
    int *zzw=(int*)malloc(N*sizeof(int));
    int TO_FIND_THEFIRSTROW(int *, int n);
    scanf("%d",&n);
    for(i=0;i<n;i++)
    scanf("%d",&(*(zzw+i)));
    TO_FIND_THEFIRSTROW(zzw,n);
    free(zzw);
    return 0;
    }
    int TO_FIND_THEFIRSTROW(int*zzw,int n)
    {
    int i,j,sum=0,m,k,min=0,l;

    for(j=0;j<n;j++)
    {
    l=(int)pow(2,(double)j);

    min=min+*(zzw+n-1-j)*l;
    }

    for(i=0;i<n;i++)
    {
    m=*zzw;
    for(k=1;k<n;k++)
    *(zzw+k-1)=*(zzw+k);
    *(zzw+n-1)=m;

    for(j=0;j<n;j++)
    {
    l=(int)pow(2,(double)j);
    sum=sum+*(zzw+n-1-j)*l;
    }

    if(min>sum)min=sum;
    sum=0;
    }

    for(i=0;i<n;i++)
    {
    for(j=0;j<n;j++)
    {
    l=(int)pow(2,(double)j);
    sum=sum+*(zzw+n-1-j)*l;
    }
    if(sum==min)
    {
    for(i=0;i<n;i++)
    printf("%d ",*(zzw+i));
    }
    m=*zzw;
    for(k=1;k<n;k++)
    *(zzw+k-1)=*(zzw+k);
    *(zzw+n-1)=m;
    sum=0;
    }
    }
    新的哈
    调试了很久才过
    寒一个
    本帖最近评分记录:
  • 浮云:0 (by kangtalc) | 理由: 肯定的是你的算法复杂度太高才会超时的嘛~~继续加油~
  • 顶端 Posted: 2007-04-13 23:24 | [9 楼]
    solo独奏



    性别: 帅哥 状态: 该用户目前不在线
    头衔: 冰是睡着的水
    等级: 荣誉会员
    家族: YD一族
    发贴: 6989
    威望: 3
    浮云: 379
    在线等级:
    注册时间: 2006-12-01
    最后登陆: 2008-06-26

    5come5帮你背单词 [ apprentice /ə'prentis/ n. 学徒工,初学者 ]


    wrong answer... 再寒.

    耍了回来嘿再做.




    [ 此贴被solo独奏在2007-04-14 09:22重新编辑 ]
    顶端 Posted: 2007-04-14 09:04 | [10 楼]
    我来我网·5come5 Forum » 程序员之家

    Total 0.048920(s) query 6, Time now is:02-19 03:25, Gzip enabled
    Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号