我也是!这道题愣是做了一个小时没做出来郁闷死了
by sun坠坠 @ 2016-11-20 20:52:45
abcd应该都从1开始枚举……我差点就犯了这个错误……
by x_faraway_x @ 2016-11-20 21:24:03
同感,写得几乎一样
by Tritium @ 2016-11-20 22:22:51
啧为什么要这么枚举
可以发现4个数可以表示为
Xa,Xa+2k,Xa+8k+N,Xa+9k+n
枚举Xa,k,n就好了呀w
虽然只是80分做法没卵用
```cpp
#include<cstdio>
#include<cstring>
#include<cctype>
#define rep(a,b,c) for(int a=b;a<=c;a++)
using namespace std;
int form[40020],sort[15020],ans[40020][5],n,m,t,maxn;
inline int max(int a,int b){return a>b?a:b;}
inline int getint()
{
char ch;
while (!isdigit(ch=getchar()));
int x=ch-'0';
for (; isdigit(ch=getchar()); x=x*10+ch-'0');
return x;
}
int main()
{
n=getint();m=getint();
rep(a,1,m)
form[a]=getint(),sort[form[a]]++,maxn=max(maxn,form[a]);
rep(a,1,maxn) if(sort[a])
rep(b,1,(maxn-a)/9) if(sort[a+2*b])
rep(c,1,maxn-9*b-a) if(sort[a+8*b+c]&&sort[a+9*b+c])
{
int add=sort[a]*sort[a+2*b]*sort[a+8*b+c]*sort[a+9*b+c];
ans[a][1]+=add/sort[a],ans[a+2*b][2]+=add/sort[a+2*b],ans[a+8*b+c][3]+=add/sort[a+8*b+c],ans[a+9*b+c][4]+=add/sort[a+9*b+c];
}
rep(a,1,m)
printf("%d %d %d %d\n",ans[form[a]][1],ans[form[a]][2],ans[form[a]][3],ans[form[a]][4]);
}
然而我还是不会写正解qwq
```
by fcoaxt @ 2016-11-21 00:13:27
懂了,快排出来有可能两个数等于。。。。好吧@[x咫尺天涯x](/space/show?uid=9757)
by Sylar @ 2016-11-21 17:54:09
六十分TLE
```cpp
var
c:array[1..40000,1..4]of longint;
b,d:array[1..40000]of longint;
n,m,i,j,k,l:longint;
procedure js(l,r:longint);
var
i,j,m,t:longint;
begin
i:=l;j:=r;;m:=b[l+1];
repeat
while b[i]<m do inc(i);
while b[j]>m do dec(j);
if i<=j then
begin
t:=b[i];b[i]:=b[j];b[j]:=t;
t:=d[i];d[i]:=d[j];d[j]:=t;
inc(i);dec(j);
end;
until i>j;
if l<j then js(l,j);
if i<r then js(i,r);
end;
begin
read(n,m);
for i:=1 to m do begin read(b[i]);d[i]:=i;end;
js(1,m);
for i:=1 to m-3 do
for j:=i+1 to m-2 do if(b[i]<b[j])and((b[j]-b[i])mod 2=0)then
for k:=j+1 to m-1 do if(b[j]<b[k])and(b[k]>b[j]-b[i])and(b[j]-b[i]<(b[k]-b[j])/3)then
for l:=k+1 to m do if(b[k]<b[l])and(b[j]-b[i]=2*(b[l]-b[k]))then
begin
inc(c[d[i],1]);
inc(c[d[j],2]);
inc(c[d[k],3]);
inc(c[d[l],4]);
end;
for i:=1 to m do
begin
for j:=1 to 4 do write(c[i,j],' ');
writeln;
end;
end.
```
by liuyuli @ 2016-11-21 20:12:41