24 条题解
- 
  0Veili LV 9 @ 2009-11-10 18:38:05 编译通过... 
 ├ 测试数据 01:答案正确... 0ms
 ├ 测试数据 02:答案正确... 0ms
 ├ 测试数据 03:答案正确... 0ms
 ├ 测试数据 04:答案正确... 0ms
 ├ 测试数据 05:答案正确... 134ms
 ├ 测试数据 06:答案正确... 150ms
 ├ 测试数据 07:答案正确... 259ms
 ├ 测试数据 08:答案正确... 150ms
 ├ 测试数据 09:答案正确... 275ms
 ├ 测试数据 10:答案正确... 134ms
 ---|---|---|---|---|---|---|---|-
 Accepted 有效得分:100 有效耗时:1102ms话说耗时都不是很理想。。 
- 
  0@ 2009-11-07 13:51:23一开始想法就对了,竟然交了6次(其中n次开小数组,唉,做人不能太抠门),还碰到vj被卡,rp啊 
 顺便orzLX...神牛
 用一种稍有别于括号的想法得到了相同的算法,我的题解
- 
  0@ 2009-10-25 01:23:25编译通过... 
 ├ 测试数据 01:答案正确... 0ms
 ├ 测试数据 02:答案正确... 0ms
 ├ 测试数据 03:答案正确... 0ms
 ├ 测试数据 04:答案正确... 0ms
 ├ 测试数据 05:答案正确... 119ms
 ├ 测试数据 06:答案正确... 400ms
 ├ 测试数据 07:答案正确... 181ms
 ├ 测试数据 08:答案正确... 541ms
 ├ 测试数据 09:答案正确... 634ms
 ├ 测试数据 10:答案正确... 369ms
 ---|---|---|---|---|---|---|---|-
 Accepted 有效得分:100 有效耗时:2244ms呃~果然我是最笨的~~方法就是跟1663一样,加了一个树状数组………… 
- 
  0@ 2009-10-24 10:27:56^我人品都花在这了^70分都AC^ 
- 
  0@ 2009-10-12 18:30:38erer 
- 
  0@ 2009-10-11 18:34:36看别人得题解看得头晕发恶心才终于看懂。。。。。。说真的,真的是看之前好好的,看完头晕发恶心。 
- 
  0@ 2009-10-11 16:55:56Flag 
 题号 P1664
 类型(?) 其它
 通过 22人
 提交 66次
 通过率 33%
 难度 0
- 
  0@ 2009-10-11 12:04:28http://user.qzone.qq.com/281589210/blog/1255232846 
 我的题解
 下面教主的题解不是一般人能够看懂的(包括我)
- 
  0@ 2009-10-10 19:40:24编译通过... 
 ├ 测试数据 01:答案正确... 0ms
 ├ 测试数据 02:答案正确... 0ms
 ├ 测试数据 03:答案正确... 0ms
 ├ 测试数据 04:答案正确... 0ms
 ├ 测试数据 05:答案正确... 103ms
 ├ 测试数据 06:答案正确... 166ms
 ├ 测试数据 07:答案正确... 181ms
 ├ 测试数据 08:答案正确... 353ms
 ├ 测试数据 09:答案正确... 353ms
 ├ 测试数据 10:答案正确... 228ms
 ---|---|---|---|---|---|---|---|-
 Accepted 有效得分:100 有效耗时:1384ms
 var
 map , right , sum : array [ 0 .. 1000 , 1 .. 1000 ] of longint;
 now : array [ 1 .. 1000000 , 1 .. 2 ] of longint;
 vis : array [ 1 .. 1000 , 1 .. 1000 ] of boolean;
 tot : array [ 1 .. 1001 ] of longint;
 n , m , ans : longint;procedure main; 
 var
 i , j , k , s , t : longint;
 begin
 for j := 1 to m do
 begin
 for i := 1 to n do
 begin
 k := map[i , j];
 if vis[i , j] then
 if now[k , 1] = 0 then
 begin
 inc(tot[i]); dec(tot[right[i , j]]);
 now[k , 1] := i; now[k , 2] := right[i , j];
 end
 else begin
 s := now[k , 1]; t := now[k , 2];
 dec(tot); inc(tot[t]);
 if (i >= s) and (i < t) then t := i;
 if i < s then begin t := s; s := i; end;
 if t > right[i , j] then t := right[i , j];
 inc(tot); dec(tot[t]);
 now[k , 1] := s; now[k , 2] := t;
 end;
 sum[i , j] := sum[i-1 , j] + tot[i];
 end;
 end;for i := 1 to n do 
 begin
 for j := 1 to m do
 ans := ans xor sum[i , j];
 end;
 writeln(ans);
 end;procedure init; 
 var
 i , j , k : longint;
 begin
 readln(n , m);
 for i := 1 to n do
 for j := 1 to m do read(map[i , j]);
 for j := 1 to m do
 for i := 1 to n do
 begin
 k := map[i , j];
 if (now[k , 2] < j) then
 begin
 now[k , 1] := i; now[k , 2] := j;
 vis[i , j] := true;
 right[i , j] := n+1;
 continue;
 end;
 if right[now[k , 1] , j] = n+1 then
 begin
 right[now[k , 1] , now[k , 2]] := i;
 end;
 end;
 fillchar(now , sizeof(now) , 0);
 end;begin 
 init;
 main;
 end.想了许久,才想了一个好写点的! 
- 
  0@ 2009-10-08 19:16:10编译通过... 
 ├ 测试数据 01:答案正确... 0ms
 ├ 测试数据 02:答案正确... 0ms
 ├ 测试数据 03:答案正确... 0ms
 ├ 测试数据 04:答案正确... 0ms
 ├ 测试数据 05:答案正确... 353ms
 ├ 测试数据 06:答案正确... 556ms
 ├ 测试数据 07:答案正确... 556ms
 ├ 测试数据 08:答案正确... 931ms
 ├ 测试数据 09:答案正确... 962ms
 ├ 测试数据 10:答案正确... 853ms
 ---|---|---|---|---|---|---|---|-
 Accepted 有效得分:100 有效耗时:4211mssunny好慢啊 
- 
  0@ 2009-10-07 20:40:31编译通过... 
 ├ 测试数据 01:答案正确... 0ms
 ├ 测试数据 02:答案正确... 0ms
 ├ 测试数据 03:答案正确... 0ms
 ├ 测试数据 04:答案正确... 0ms
 ├ 测试数据 05:答案正确... 25ms
 ├ 测试数据 06:答案正确... 119ms
 ├ 测试数据 07:答案正确... 88ms
 ├ 测试数据 08:答案正确... 259ms
 ├ 测试数据 09:答案正确... 181ms
 ├ 测试数据 10:答案正确... 197ms
 ---|---|---|---|---|---|---|---|-
 Accepted 有效得分:100 有效耗时:869ms
- 
  0@ 2009-10-09 10:22:16啊...沙茶了~~ 
 真的没必要用数据结构,这题改完也挺水的...
 http://user.qzone.qq.com/740436286/infocenter?ptlang=2052
- 
  0@ 2009-10-07 11:28:57这题还想过要用线段树,以后真该认真分析题目 
 想得再透彻些,orz做出的牛人们!!!
- 
  0@ 2009-10-06 15:50:01枚举数字,然后通过扫描线把问题转化成: 
 有N*M个格子,N行M列,初始值为0,每次,将坐标为(x1,y1)à(x2,y2)这个矩形内的格子的值全部+c,求出所有格子的最后的值。
 该问题可以这么解决:
 f[i][j]=f[j]-上边穿越(i+1,j)的矩形的值和(令其为c(i+1,j))+下边穿越(i,j)的矩形的值的和(令其为d(i,j))。
 如何求c(i,j)呢?其实c(i,j)=c(i,j-1)-右上角在(i,j-1)的矩形的值的和+左上角在(i,j)的矩形的值的和。
 d(i,j)同理。
 至此,该问题解决。
- 
  0@ 2009-10-07 11:27:29................ 
- 
  0@ 2009-10-07 15:50:33AC了,速度巨慢(用了getchar读入): 
 ├ 测试数据 01:答案正确... 0ms
 ├ 测试数据 02:答案正确... 0ms
 ├ 测试数据 03:答案正确... 0ms
 ├ 测试数据 04:答案正确... 0ms
 ├ 测试数据 05:答案正确... 56ms
 ├ 测试数据 06:答案正确... 228ms
 ├ 测试数据 07:答案正确... 197ms
 ├ 测试数据 08:答案正确... 416ms
 ├ 测试数据 09:答案正确... 400ms
 ├ 测试数据 10:答案正确... 338ms
 ---|---|---|---|---|---|---|---|-
 Accepted 有效得分:100 有效耗时:1635ms强烈膜拜fjxmlhx神牛!!!!!!!!!!!!!!!!! 
- 
  0@ 2009-10-04 12:29:17有没有人告诉我怎么做啊 
- 
  0@ 2009-10-05 10:41:11c++中scanf和getchar好像都挺快的 
- 
  0@ 2009-10-03 23:30:43pascal应该好过很多 
- 
  0@ 2009-10-03 22:28:34占 
信息
- ID
- 1664
- 难度
- 6
- 分类
- (无)
- 标签
- 递交数
- 135
- 已通过
- 41
- 通过率
- 30%
- 被复制
- 2
- 上传者