39 条题解
-
1孙鹤鸣 (sunheming) LV 10 @ 2020-11-23 16:24:13
// luogu-judger-enable-o2 #include<cstdio> #include<algorithm> using namespace std; const int N=110; const int M=11; int n,m,K,s1[N],s2[N],dp[N][M],f[N][N][M]; int main(){ scanf("%d%d%d",&n,&m,&K); if(m==1){ for(int i=1,x;i<=n;i++) scanf("%d",&x),s1[i]=s1[i-1]+x; for(int k=1;k<=K;k++){ for(int i=1;i<=n;i++){ dp[i][k]=dp[i-1][k]; for(int j=0;j<i;j++) dp[i][k]=max(dp[i][k],dp[j][k-1]+s1[i]-s1[j]); } } printf("%d\n",dp[n][K]); } else{ for(int i=1,x,y;i<=n;i++) scanf("%d%d",&x,&y),s1[i]=s1[i-1]+x,s2[i]=s2[i-1]+y; for(int k=1;k<=K;k++){ for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ f[i][j][k]=max(f[i-1][j][k],f[i][j-1][k]); for(int l=0;l<i;l++) f[i][j][k]=max(f[i][j][k],f[l][j][k-1]+s1[i]-s1[l]); for(int l=0;l<j;l++) f[i][j][k]=max(f[i][j][k],f[i][l][k-1]+s2[j]-s2[l]); if(i==j) for(int l=0;l<i;l++) f[i][j][k]=max(f[i][j][k],f[l][l][k-1]+s1[i]-s1[l]+s2[j]-s2[l]); } } } printf("%d\n",f[n][n][K]); } return 0; }
-
02019-10-02 19:36:24@
QWQ
-
02017-07-25 20:40:31@
从思考到抄题解。
#include<iostream> #include<cstring> #define INF (0x3f3f3f3f) #define MAX(a,b) ((a)=((a)>(b)?(a):(b))) using namespace std; int n,m,k; int da[110][5],sum[110][5],dp[110][110][20]; int main () { ios::sync_with_stdio(false); cin>>n>>m>>k; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { cin>>da[i][j]; sum[i][j]=sum[i-1][j]+da[i][j]; if (m==1) sum[i][2]=-INF; } int ans=-INF; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) for(int o=1;o<=k;o++) { MAX(dp[i][j][o],dp[i-1][j][o]); MAX(dp[i][j][o],dp[i][j-1][o]); MAX(dp[i][j][o],dp[i-1][j-1][o]); for(int p=0;p<i;p++) MAX(dp[i][j][o],dp[p][j][o-1]+sum[i][1]-sum[p][1]); for(int p=0;p<j;p++) MAX(dp[i][j][o],dp[i][p][o-1]+sum[j][2]-sum[p][2]); if (i==j) for(int p=0;p<i;p++) MAX(dp[i][j][o],dp[p][p][o-1]+sum[i][1]-sum[p][1]+sum[j][2]-sum[p][2]); ans=max(ans,dp[i][j][o]); } cout<<ans<<endl; return 0; }
-
-12016-03-10 10:31:53@
VIJOS逗我,NOI OJ AC在这就一个点?
#include<cstdio>
#include<cstring>
int a[110][110],b[110][110];
int maxsum(int x,int y){return x>y?x:y;}
int main()
{
int n,sum,ans;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
scanf("%d",&a[i][j]);
if(i==1)b[i][j]=a[i][j];
else b[i][j]=b[i-1][j]+a[i][j];
}
}
ans=-1;
for(int i=1;i<=n;i++)
{
for(int j=i;j<=n;j++)
{
sum=b[j][1]-b[i-1][1];
int s=0;
for(int k=1;k<=n;k++)
{
s+=b[j][k]-b[i-1][k];
if(s>sum)sum=s;
if(s<0)s=0;
}
ans=maxsum(sum,ans);
}
}
printf("%d\n",ans);
return 0;
} -
-12016-02-12 18:31:59@
-
-12015-12-14 18:29:04@
-
-12013-10-30 09:05:04@
测试数据 #0: Accepted, time = 15 ms, mem = 2444 KiB, score = 10
测试数据 #1: Accepted, time = 15 ms, mem = 2448 KiB, score = 10
测试数据 #2: Accepted, time = 0 ms, mem = 2448 KiB, score = 10
测试数据 #3: Accepted, time = 0 ms, mem = 2444 KiB, score = 10
测试数据 #4: Accepted, time = 0 ms, mem = 2444 KiB, score = 10
测试数据 #5: Accepted, time = 0 ms, mem = 2444 KiB, score = 10
测试数据 #6: Accepted, time = 15 ms, mem = 2448 KiB, score = 10
测试数据 #7: Accepted, time = 15 ms, mem = 2448 KiB, score = 10
测试数据 #8: Accepted, time = 15 ms, mem = 2444 KiB, score = 10
测试数据 #9: WrongAnswer, time = 15 ms, mem = 2448 KiB, score = 0
WrongAnswer, time = 90 ms, mem = 2448 KiB, score = 90
代码
var
a:array[0..200,0..200]of longint;
d,gg,g:array[1..3,0..200,0..200]of longint;
f:array[0..101,0..101]of longint;
n,m,k,l,i,j,p:longint;
function max(x,y:longint):longint;
begin
if x>y then max:=x else max:=y;
end;
beginreadln(n,m,k);
for i:=1 to n do
for j:=1 to m do
read(a[j,i]);
for i:=1 to n do
a[3,i]:=a[1,i]+a[2,i];
for i:=1 to 3 do{d数组可无视}
for j:=1 to n do
for l:=j to n do
d[i,j,l]:=d[i,j,l-1]+a[i,l];fillchar(g,sizeof(g),128);
for i:=1 to 3 do
for j:=1 to n do
for l:=j to n do
begin
for p:=j to l do
gg[i,j,p]:=max(gg[i,j,p-1]+a[i,p],a[i,p]);
for p:=j to l do
g[i,j,l]:=max(g[i,j,l],gg[i,j,p]);
end;fillchar(f,sizeof(f),128);
f[0,0]:=0;
for i:=1 to n do
for j:=1 to k do
for l:=0 to i-1 do
begin
for p:=1 to 3 do
if (f[i,j]<f[l,j-1]+g[p,l+1,i]) then
f[i,j]:=f[l,j-1]+g[p,l+1,i];
if (j>=2)and(g[1,l+1,i]+g[2,l+1,i]+f[l,j-2]>f[i,j]) then
f[i,j]:=g[1,l+1,i]+g[2,l+1,i]+f[l,j-2];
end;
writeln(f[n,k]);
end.
最后一个点是咋回事啊... -
-12009-11-03 16:24:15@
编译通过...
├ 测试数据 01:答案正确... 56ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 25ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:81ms
1,2分开写,好暴力的俄......
碰到好的评测机,就81MS过 - -!
瀑布汗 -
-12009-10-18 11:54:13@
m好小哦,如果m也100就麻烦了
-
-12009-10-10 08:32:34@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 150ms
├ 测试数据 10:答案正确... 306ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:456ms好丑的时间
-
-12009-10-09 16:17:40@
两种情况合起来更方便吧
-
-12009-10-08 17:23:51@
感谢rlf大牛这道神题终于过了。。这种题不要记忆化搜索
-
-12009-09-23 19:01:08@
-
-12009-09-03 09:15:33@
那位大牛指点一下,不会啊?????????????????????????????????????
-
-12009-09-02 13:27:51@
编译通过...
├ 测试数据 01:答案错误... ├ 标准行输出
├ 错误行输出├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 509ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Unaccepted 有效得分:90 有效耗时:509ms
第一个点有什么 特殊情况吗.... -
-12009-07-20 10:07:49@
纯水题
#include
using namespace std;
int main()
{
int dp[101][101][11],num[101][3],n,m,k,sum[3][101][101];
memset(dp,0,sizeof(dp));
memset(num,0,sizeof(num));
cin >> n >> m >> k;
for (int i=1;i num[i][j];
for (int s=1;s -
-12009-06-19 00:37:45@
此题一题抵2题......
-
-12009-03-18 16:17:19@
第100个AC,顺便提高通过率一个百分点,DP
编译通过...
├ 测试数据 01:答案正确... 1000ms
├ 测试数据 02:答案正确... 1000ms
├ 测试数据 03:答案正确... 1000ms
├ 测试数据 04:答案正确... 1000ms
├ 测试数据 05:答案正确... 1000ms
├ 测试数据 06:答案正确... 1000ms
├ 测试数据 07:答案正确... 1000ms
├ 测试数据 08:答案正确... 1000ms
├ 测试数据 09:答案正确... 1000ms
├ 测试数据 10:答案正确... 1000ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:10000ms
要说楼下的楼下,我这才叫危险 -
-12008-11-11 17:16:58@
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
-12008-11-06 15:31:04@
编译通过...
├ 测试数据 01:答案正确... 999ms
├ 测试数据 02:答案正确... 999ms
├ 测试数据 03:答案正确... 999ms
├ 测试数据 04:答案正确... 999ms
├ 测试数据 05:答案正确... 999ms
├ 测试数据 06:答案正确... 999ms
├ 测试数据 07:答案正确... 999ms
├ 测试数据 08:答案正确... 999ms
├ 测试数据 09:答案正确... 999ms
├ 测试数据 10:答案正确... 999ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:9990ms很危险的时间。