在乙個n*m矩陣中,有k個選定的子矩陣,每個矩陣有乙個代價,現在讓你選兩個子矩陣(有相交的),使他們覆蓋的元素之和減去他兩的代價最大(重複的只算一次)
3 3 3
2 1 -1
-1 0 1
1 -2 1
2 1 3 2 -1
1 1 3 3 2
1 1 1 1 0
1
1 2 2
0 01 1 1 1 0
1 2 1 2 0
f
直接暴力列舉所有子矩陣即可
#include
#define max(a,b) (a)>(b)?(a):(b)
#define min(a,b) (a)<(b)?(a):(b)
using
namespace std;
long
long n,m,k,x0,x1,y0,y1,s1,s2,s3,ans,c[
1500
],x[5]
[1500
],y[5]
[1500
],f[
1500][
1500];
intread()
while
(x>=
'0'&&x<=
'9') o=
(o<<3)
+(o<<1)
+x-48
,x=getchar()
;return d*o;
}int
main()
}if(ans==
-1152921504606846976
)printf
("f");
else
printf
("%lld"
,ans)
;return0;
}
暴力 NOIP普及組T1 心中報情
又敗給了long long呢。link 暴力列舉每兩個矩陣即可。開long long 快讀就可以了。emmmmmmmmmm include include using namespace std long long n,m,k long long x1 1001 y1 1001 x2 1001 y2...