首页 > 其他分享 >POJ 3844(同余)

POJ 3844(同余)

时间:2022-10-25 12:35:30浏览次数:52  
标签:begin end longint while POJ 3844 ans dec 同余


果断同余……

D[j]-D[i]  mod  k =0

D[j]=D[i]

求有多少相等数对,用队列O(n)


Program P3844;
const
maxn=50000;
maxd=1000000;
var
ans,t,f,n,i,j:longint;
d:array[0..maxn] of longint;
procedure qsort(l,r:longint);
var
i,j,m,p:longint;
begin
i:=l;j:=r;
m:=d[(l+r) shr 1];
repeat
while d[i]<m do inc(i);
while d[j]>m do dec(j);
if i<=j then
begin
p:=d[i];
d[i]:=d[j];
d[j]:=p;
inc(i);dec(j);
end;

until i>j;
if l<j then qsort(l,j);
if i<r then qsort(i,r);

end;
begin
read(t);
d[0]:=0;
while (t>0) do
begin
read(f,n);
for i:=1 to n do
begin
read(d[i]);
d[i]:=(d[i]+d[i-1]) mod f;
end;
qsort(1,n);

ans:=0;
i:=0;j:=0;
while (i<=n) do
begin
while (d[i]=d[j]) and (j<n) do inc(j);
if d[i]<>d[j] then dec(j);
inc(ans,((j-i+1)*(j-i)) shr 1);
i:=j+1;
inc(j);
end;


writeln(ans);

dec(t);
end;
end.



标签:begin,end,longint,while,POJ,3844,ans,dec,同余
From: https://blog.51cto.com/u_15724837/5794483

相关文章

  • POJ 3122(二分答案)
    二分答案……Programpie;constlef=0.00001;vart,n,f,i,j:longint;r:array[1..10000]oflongint;s:array[1..10000]ofdouble;maxs:double;procedures......
  • POJ 3842(质数判断)
    7!=5040所以这题直接求质数比打一千万的表都快这提高诉我们阶乘其实不算大&看(算)清数据规模Programcc;varn,t,len,i,j,ans:longint;s:string;b:array[0..9]oflong......
  • POJ 1125(Floyd)
    裸FloydProgramP1125;constmaxn=100;maxedge=10;NULL=-2139062144;varn,i,j,k,m,v,t,ans:longint;f:array[1..maxn,1..maxn]oflongint;functionmax(a,b:......
  • POJ 1700(过河问题)
    玩过《雷顿》就知道这题可以贪心小等于2人:1,2->3人时:1,3->1<-1,2->1<-否则:1,2->2<-max1,max2->1<-OR:1,max1->1<-2,max2->2<-于是数据规模-2ProgramP1700;vart,n,i,j:long......
  • POJ 3264(STRMQ)
    forj:=1toln(n)/ln(2)  fori:=1ton-(1shlj)+1do    f[i,j]:=min(f[i,j-1],f[i+(1shl(j-1),j-1];f[l,r]:=min(f[l,j],f[r-(1shlj)+1,j];j=ln(r-l+1......
  • POJ 3748(C++的16进制读法 %x)
    P党写几小时的程序C++才几行……首先P的位运算有上限2^30此时即便是int64也会因为补码坑死人的到1shl31时 int64是负数故这个时候不能shr为多出好多位造成以......
  • POJ 2185(最大平铺矩阵)
    DefaultMilkingGridDescription(1<=R<=10,000) *C (1<=C<=75) 的矩阵,求它的最大平铺矩阵,不够的地方可部分平铺,但不可重叠。Input......
  • POJ 3661(贝茜晨练)
    经典Dp,果断记忆化……#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<functional>usingnamespacestd;#defineMAXN10000+10#defineM......
  • POJ 3575(计算几何与二分-无尽的小数处理)
    这题写了将近半个月……总是在D各种Bug总的说来-这题最难应该是在精度处理上11001这组数据过了就说明精度处理差不多了……Programkingdom;constmaxn=100;maxm=10......
  • POJ 3049(输出字母)
    果断搜ProgramP3049;varn,i,j,m:longint;a:array[1..26]ofchar;b:array['a'..'z']ofboolean;c:char;procedureswap(vara,b:char);vart:char;begin......