5
1 2
Data Constraint
10%的数据,n<=10(来自题目的馈赠).
30%的数据,n<=1000.
100%的数据,0<n<=100000,0<m<=100000,0<z<=10,0<q[i]<=100.
Solution
魔音增加的量其实是曼哈顿距离,所以横纵坐标互不影响,因为数据较小,所以暴力枚举横坐标和纵坐标。
1 #include<cstdio>
2 using namespace std;
3 int n,m,x[1000000],y[1000000];
4 long long s,l,r,z;
5 int cc(int xx)
6 {
7 if (xx<0) return -xx;
8 return xx;
9 }
10 int main()
11 {
12 scanf("%d%d%lld",&n,&m,&z);
13 for (int i=1;i<=m;i++)
14 {
15 long long xx,yy,qq;
16 scanf("%lld%lld%lld",&xx,&yy,&qq);
17 x[xx]++;
18 y[yy]++;
19 l=l+xx-1;
20 r=r+yy-1;
21 s=s+qq;
22 }
23 l=l;r=r;
24 long long ll=l,rr=r;
25 int xx=1,yy=1;
26 for (int i=2;i<=n;i++)
27 {
28 x[i]=x[i]+x[i-1];
29 y[i]=y[i]+y[i-1];
30 }
31 for (int i=2;i<=n;i++)
32 {
33 l=l+x[i-1]*2-m;
34 if (l<ll)
35 {
36 ll=l;
37 xx=i;
38 }
39 }
40 for (int i=2;i<=n;i++)
41 {
42 r=r+y[i-1]*2-m;
43 if (r<rr)
44 {
45 rr=r;
46 yy=i;
47 }
48 }
49 printf("%lld\n",s+ll+rr);
50 printf("%d %d\n",xx,yy);
51 }
View Code