[关闭]
@Rarfaeal 2019-12-27T05:30:37.000000Z 字数 4024 阅读 339

给你 个询问 , 每个询问包含四个正整数 , 查询 :

第一行一个正整数
以下 行每行四个正整数 , 意义如上。

每行一个正整数代表答案。

2
1 1 3 3
4 4 9 9

9
30

样例解释 :

的表如下 :

样例1 4 5 6 7 8 9
4 4 1 1 1 4 1
5 1 4 1 1 1 1
6 1 1 4 1 1 1
7 1 1 1 4 1 1
8 4 1 1 1 4 1
9 1 1 1 1 1 9

的时候贡献为
的时候贡献为
的时候贡献为 。总贡献

对于 % 的数据 ,
对于 % 的数据 ,
对于 % 的数据 ,

  1. Uses math;
  2. var
  3. left,right:array[-1..1000000] of longint;
  4. i,j,n,m,k,ans:longint;
  5. begin
  6. read(n,m);
  7. for i:=1 to m do read(left[i],right[i]);
  8. for i:=1 to m do
  9. begin
  10. k:=right[i]-left[i]+1;
  11. for j:=m downto 1 do if j<>i then k:=min(k,abs(right[i]-right[j])+abs(left[i]-left[j]));
  12. inc(ans,k);
  13. end;
  14. writeln(ans);
  15. end.
  1. var
  2. m,i,a,b,c,d:longint;
  3. sv:text;
  4. begin
  5. assign(sv,'C:\Users\Administrator\Desktop\Data\Data6.in');rewrite(sv);
  6. randomize;
  7. m:=1000000; writeln(sv,m);
  8. for i:=1 to m do
  9. begin
  10. c:=random(500); a:=random(c)+1;
  11. d:=random(500); b:=random(d)+1;
  12. writeln(sv,a,' ',b,' ',c,' ',d);
  13. end;
  14. close(sv);
  15. end.
  1. Uses math;
  2. Const
  3. total=500;
  4. var
  5. bucket:array[-1..total] of longint;
  6. q,k,i,j,m,a,b,c,d,ans,gcd:longint;
  7. function Alice(a:longint):longint; begin exit(sqr(trunc(sqrt(a)))); end;
  8. begin
  9. read(m);
  10. for q:=1 to m do
  11. begin
  12. for i:=0 to total do bucket[i]:=0; read(a,b,c,d); ans:=0;
  13. for i:=a to c do for j:=b to d do
  14. begin gcd:=0;
  15. for k:=min(i,j) downto 1 do if (i mod k=0)and(j mod k=0) then begin gcd:=k; break; end;
  16. gcd:=Alice(gcd);
  17. dec(ans,Alice(bucket[gcd]));
  18. inc(bucket[gcd]); inc(ans,Alice(bucket[gcd]));
  19. end;
  20. writeln(ans);
  21. end;
  22. end.
  1. Uses math;
  2. Const
  3. question=1000000+10;
  4. total=500+10;
  5. var
  6. point:array[-1..7,-1..question] of longint;
  7. gcd:array[-1..total,-1..total] of longint;
  8. bucket:array[-1..total] of longint;
  9. ans:array[-1..question] of longint;
  10. i,j,m,a,b,c,d,sum,node_num:longint;
  11. function Alice(a:longint):longint; begin exit(sqr(trunc(sqrt(a)))); end;
  12. function Locate(node:longint):longint;
  13. begin
  14. if node mod node_num=0 then exit(node div node_num);
  15. exit(node div node_num+1);
  16. end;
  17. procedure Sort(l,r:longint);
  18. var i,j,s1,s2,s3,s4:longint;
  19. begin
  20. i:=l; j:=r; s1:=point[5,i]; s2:=point[2,i]; s3:=point[6,i]; s4:=point[4,i];
  21. repeat
  22. while (point[5,i]<s1)or((point[5,i]=s1)and(point[2,i]<s2))or((point[5,i]=s1)and(point[2,i]=s2)and(point[6,i]<s3))
  23. or((point[5,i]=s1)and(point[2,i]=s2)and(point[6,i]=s3)and(point[4,i]<s4)) do inc(i);
  24. while (point[5,j]>s1)or((point[5,j]=s1)and(point[2,j]>s2))or((point[5,j]=s1)and(point[2,j]=s2)and(point[6,j]>s3))
  25. or((point[5,j]=s1)and(point[2,j]=s2)and(point[6,j]=s3)and(point[4,j]>s4)) do dec(j);
  26. if i<=j then begin point[0]:=point[i]; point[i]:=point[j]; point[j]:=point[0]; inc(i); dec(j); end;
  27. until i>=j;
  28. if i<r then Sort(i,r); if j>l then Sort(l,j);
  29. end;
  30. procedure Ready;
  31. var i,j,k:longint;
  32. begin
  33. read(m); node_num:=trunc(sqrt(m));
  34. for i:=1 to m do
  35. begin
  36. point[7,i]:=i; for j:=1 to 4 do read(point[j,i]);
  37. point[5,i]:=Locate(point[1,i]); point[6,i]:=Locate(point[3,i]);
  38. end;
  39. Sort(1,m); a:=1; b:=1; c:=1; d:=1; sum:=1; bucket[1]:=1;
  40. for i:=1 to total do for j:=1 to total do gcd[i,j]:=1;
  41. for i:=1 to total do for j:=1 to total do for k:=min(i,j) downto 2 do if (i mod k=0)and(j mod k=0) then begin gcd[i,j]:=Alice(k); break; end;
  42. end;
  43. procedure Transefer(key,l,r,mode:longint);
  44. var i:longint;
  45. begin
  46. if mode=1 then for i:=l to r do
  47. begin dec(sum,Alice(bucket[gcd[key,i]]));
  48. inc(bucket[gcd[key,i]]); inc(sum,Alice(bucket[gcd[key,i]])); end;
  49. if mode=2 then for i:=l to r do
  50. begin dec(sum,Alice(bucket[gcd[key,i]]));
  51. dec(bucket[gcd[key,i]]); inc(sum,Alice(bucket[gcd[key,i]])); end;
  52. end;
  53. begin
  54. Ready;
  55. for i:=1 to 2 do begin for j:=1 to 6 do write(gcd[i,j]:3); writeln; end;
  56. for i:=1 to m do
  57. begin
  58. while (c>point[3,i]) do begin Transefer(c,b,d,2); dec(c); end;
  59. while (c<point[3,i]) do begin inc(c); Transefer(c,b,d,1); end;
  60. while (d>point[4,i]) do begin Transefer(d,a,c,2); dec(d); end;
  61. while (d<point[4,i]) do begin inc(d); Transefer(d,a,c,1); end;
  62. while (a>point[1,i]) do begin Transefer(a,b,d,1); dec(a); end;
  63. while (a<point[1,i]) do begin inc(a); Transefer(a,b,d,2); end;
  64. while (b>point[2,i]) do begin Transefer(b,a,c,1); dec(b); end;
  65. while (b<point[2,i]) do begin inc(b); Transefer(b,a,c,2); end;
  66. ans[point[7,i]]:=sum;
  67. end;
  68. for i:=1 to m do writeln(ans[i]);
  69. end.
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注