142 条题解
-
0SinkUnderIce LV 3 @ 2008-11-13 08:47:03
编译通过...
├ 测试数据 01:答案正确... 322ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 134ms
├ 测试数据 04:答案正确... 72ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 416ms
├ 测试数据 07:答案正确... 244ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:1188ms -
02008-11-13 07:29:24@
Program Vijos_P1146;
const
SIZE = 5;
M = SIZE * SIZE;
MAXK = 12;
d: array[1..M] of dword = (
\(00000001, \)00000002, \(00000004, \)00000008, \(00000010,
\)00000020, \(00000040, \)00000080, \(00000100, \)00000200,
\(00000400, \)00000800, \(00001000, \)00002000, \(00004000,
\)00008000, \(00010000, \)00020000, \(00040000, \)00080000,
\(00100000, \)00200000, \(00400000, \)00800000, \(01000000);
jgr: array[1..SIZE] of dword = (
\)0000001F, \(000003E0, \)00007C00, \(000F8000, \)01F00000);
jgc: array[1..SIZE] of dword = (
\(00108421, \)00210842, \(00421084, \)00842108, \(01084210);
jgd1: dword = \)01041041;
jgd2: dword = $00111110;
var
n, k, tot: longint;
h, g: dword;
a: array[0..M] of longint;procedure dfs(depth: longint);
var
i: longint;function Count: longint;
var
c: longint;
begin
c := 0;
c := c + ord(g and jgr[1] = jgr[1]) + ord(g and jgr[2] = jgr[2]) + ord(g and jgr[3] = jgr[3]) + ord(g and jgr[4] = jgr[4]) + ord(g and jgr[5] = jgr[5]);
c := c + ord(g and jgc[1] = jgc[1]) + ord(g and jgc[2] = jgc[2]) + ord(g and jgc[3] = jgc[3]) + ord(g and jgc[4] = jgc[4]) + ord(g and jgc[5] = jgc[5]);
c := c + ord(g and jgd1 = jgd1) + ord(g and jgd2 = jgd2);
exit(c);
end;begin
if depth = n then
h := h or d[Count + 1]
else if a[depth] - depth -
02008-11-08 12:10:34@
居然。。。居然。。。居然。。。居然。。。居然。。。居然。。。居然。。。居然。。。居然。。。居然。。。居然。。。居然。。。居然。。。居然。。。居然。。。居然。。。要交表
-
02008-11-03 19:07:22@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms没打表,程序71行!!提交了3次,,第二次竟然忘把调试输出去掉!!!
我的AC率啊!!! -
02008-10-29 21:52:34@
打表过了,但是哪位大牛能告诉我你们怎么打出的表啊???
既然都打出表了,为什么不直接交打表的那个程序呢?
用搜索打的表吗?
那个随机化打表是什么意思啊 ??????? -
02008-10-29 19:31:12@
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms严重BS自己..!!
ps:在想搜索方法~~
-
02008-10-21 13:14:42@
交表 怎么能这样——————————?????????????!!!!!!!!!!
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:运行超时...
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms -
02008-10-16 15:14:27@
表。。。。。。。。。。。。
-
02008-10-10 23:41:20@
宁愿超时也不愿交表……自欺欺人的通过率……
dfs+回溯,优化为棋子数>=13时把“摆棋子”变成“摆空格”,还是有2个超时,想不到更好的优化方法,请有心做这题的高手指点。
program P1146;
var
map:array[1..5,1..5]of boolean;
k:array[1..12]of boolean;
i,sum,maxN:integer;
putspace:boolean;
procedure init;
begin
readln(maxN);
fillchar(k,sizeof(k),false);putspace:=false;
if maxN>12 then
begin
putspace:=true;
maxN:=25-maxN;
fillchar(map,sizeof(map),true);
end
else fillchar(map,sizeof(map),false);
end;
procedure count;
var
i,j,c:integer;
flag:boolean;
begin
c:=0;
for i:=1 to 5 do
begin
flag:=true;
for j:=1 to 5 do if not map then begin flag:=false; break; end;
if flag then inc(c);
flag:=true;
for j:=1 to 5 do if not map[j,i] then begin flag:=false; break; end;
if flag then inc(c);
end;
flag:=true;
for i:=1 to 5 do if not map then begin flag:=false; break; end;
if flag then inc(c);
flag:=true;
for i:=1 to 5 do if not map then begin flag:=false; break; end;
if flag then inc(c);
k[c]:=true;
end;
procedure search(n,x,y:integer);
var
i,j:integer;
begin
if n=maxN+1 then count else
begin
if x>5 then exit;
if y -
02008-10-08 17:37:43@
随机化产生表,交. 要相信自己的表!我的原来对的...多交一次
-
02008-10-03 12:53:52@
program vijos_1146;
const a:array[1..25]of integer=(0,0,0,0,1,1,1,1,3,3,3,6,6,10,10,15,21,21,28,28,35,30,30,27,12);
var n:integer;
begin
read(n);
write(a[n]);
end.
哎,这是一道数学题.
算出来然后CHEAT就可以了. -
02008-09-29 22:39:32@
├ 测试数据 01:答案正确... 494ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 212ms
├ 测试数据 04:答案正确... 56ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 838ms
├ 测试数据 07:答案正确... 447ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms回溯法,逐格做
用一个[1..12]的数组记录“五横五纵对角线”的棋子个数 -
02008-09-28 23:39:18@
编译通过...
├ 测试数据 01:答案正确... 588ms
├ 测试数据 02:答案正确... 103ms
├ 测试数据 03:答案正确... 353ms
├ 测试数据 04:答案正确... 181ms
├ 测试数据 05:答案正确... 259ms
├ 测试数据 06:答案正确... 712ms
├ 测试数据 07:答案正确... 462ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:2658ms
我没交表,是这个效果 -
02008-09-26 21:50:48@
...纯洁地搜索剪枝,再搜再剪... 结果, 为了通过率能保持在双位数,只能无奈地交表了..
-
02008-09-24 20:03:05@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
CHEAT的。 -
02008-09-15 15:23:03@
我编了个随机化的程序来打表
-
02008-09-11 20:00:39@
直接CHEAT。。
不想做。。
0,0,0,0,1,1,1,1,3,3,3,6,6,10,10,15,21,21,
28,28,35,30,30,27,12); -
02008-09-09 17:56:25@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms原来so easy!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
02008-08-31 17:22:34@
不想交表,无奈交表
-
02008-08-31 14:17:18@
//const a:array[1..25]of integer=(0,0,0,0,1,1,1,1,3,3,3,6,6,10,10,15,21,21,
28,28,35,30,30,27,12);