122 条题解
-
0mick LV 8 @ 2007-06-11 17:40:13
求p1076数据01吖.
├ 测试数据 01:答案错误...
├ 标准行输出 Bad placement.
├ 错误行输出 There are 2 ships.
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms -
02007-06-06 00:08:18@
TO cauchy
3 3
..##.
.###.
...#.此时也应该是Bad placement.
虽然我也是用你那种方法...
但这题能过是因为数据太弱了. -
02007-03-27 16:56:14@
两个判断:
if (i>1) and (j>1) and (ord(s='#')+ord(s='#')+ord(s='#')=2) then
/*判断s='#'时是否为Bad*/
if (i>1) and (j>1) and (ord(s='#') + ord(s='#') + ord(s='#') = 3) then
/*判断s'#'时是否为Bad*/
我认为我的判断很好,推荐下. -
02007-03-14 22:56:22@
ac了,数据设计的还真好......
-
02007-01-25 19:13:42@
一不小心就AC了
-
02007-01-01 21:25:01@
第一次提交:没写There are X ships 而直接输出数目。。。30分
第二次提交:写了这句话没写句号!!~~~。。。还是30分
第三次提交:错了数据6。标准是1,我输出Bad placement. 90分。
第四次提交:骗数据。发现在本机运行是对的~~为什么传上去就错呢…… 当然0分!
第五次提交:CHEAT一个点也不会损失太多RP的。。。可又没打句号!!!……90分
第六次提交:终于100分…… -
02006-11-09 15:57:05@
今天RP真是好 连续2个一次AC
貌似我的方法和大家都不一样... -
02006-10-28 23:21:33@
枚举,累死我了
在fash上第10组数据超时,
交到puppy就过了! -
02006-10-24 20:57:01@
貌似楼下的大脑出问题了!!!!!!
(我俩同一学校的)。
枚举就过!!!!!!!!!!!!! -
02006-10-24 10:44:15@
狂汗~~~~~~~~~~~~~~~~~~~~~
用枚举+广搜居然过了。。。。。。。。。。。。。。
汗~~~~~~~~~~~~~~~~
暴汗~~~~~~~~~~~~~~
疯狂汗~~~~~~~~~~~~
汗流浃背~~~~~~~~~~~
汗死~~~~~~~~~~~~~~ -
02006-10-23 11:49:09@
嘎嘎,过啦~~~
枚举所有点,若这个点是船的一部分则找判断这个点在船的什么位置,如果合理且第一次找到这个船则船总数+1,如果不合理则退出 -
02006-10-22 20:45:37@
枚举,如是#则尽量沿行和列扩展,做上标记'true'.
看沿行线 每一列可扩展的节点数是否相同
不同则'bad placement'否则统计t:=t=1
只是注意...#.
..##.
...#. -
02006-10-10 16:05:06@
枚举就可以过
枚举每个点,如果这个点周围的点的个数是4,6,7则输出“bad placement”并结束
如果是1或者2,而且周围点的个数大于等于1也输出“bad placement”并结束
否则就不管,在枚举的时候记录哪个点走过,走到这个点的时候,周围有“#”的点也都改成走过…在枚举到一个新点的时候,如果该点没有走过则个数加1…如果所有点都枚举完而没有退出则输出个数。 -
02006-08-08 21:53:33@
呵呵,不妨将数据放大一点.比如5000*5000,然后卡一下内存.
-
02006-06-11 15:05:57@
floodfill
用x1,y1,x2,y2记录左上角和右下角坐标,若floodfill搜出的个数(x2-x1+1)*(y2-y1+1)then writeln('Bad Placement!') -
02006-03-17 22:41:12@
一个方法判断是否矩形,那就是记录下向右,向下的的连续值,一旦终短就不记录,只要floodfill搜出的数和向右,向下的的连续值的乘积不相等就输出Bad Placement!
-
02006-03-20 19:58:34@
最简单的判断方法:如果两个矩形相接 则必定会出现一个L形的内转角 只需考虑是否存在一个格子,其周围的8个格子有7个与其颜色相同......(四边界的格子特殊处理一下)
-
02006-03-16 22:56:39@
比较简单的方法:
floodfill+一个O(n^2)的判断
不过效率有点低 -
02006-03-16 21:13:59@
和1057.1063一样的题目
-
-12018-08-16 09:29:30@
#include<iostream> #include<algorithm> #include<cstdlib> #include<cstring> #include<cstdio> #include<queue> #define LiangJiaJun main using namespace std; char mp[1004][1004]; int n,m,ans=0; int dx[4]={0,1,0,-1}, dy[4]={1,0,-1,0}; queue<int>qx,qy; int GG=0; void bfs(int a,int b){ qx.push(a);qy.push(b); int lp=a,rp=b,gt=a,kt=b,g=1;mp[a][b]='.'; while(!qx.empty()){ int x=qx.front(),y=qy.front(); qx.pop();qy.pop(); for(int i=0;i<4;i++){ int nowx=x+dx[i],nowy=y+dy[i]; if(nowx>0&&nowx<=n&&nowy<=m&&nowy>0&&mp[nowx][nowy]=='#'){ qx.push(nowx);qy.push(nowy);++g; mp[nowx][nowy]='.'; lp=min(lp,nowx);gt=max(gt,nowx); rp=min(rp,nowy);kt=max(kt,nowy); } } } if((gt-lp+1)*(kt-rp+1) != g)GG=1; } int LiangJiaJun(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++)scanf("%s",mp[i]+1); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++){ if(mp[i][j]=='#'){ GG=0; ++ans;bfs(i,j); if(GG){ puts("Bad placement."); return 0; } } } printf("There are %d ships.\n",ans); return 0; }