noip模拟赛(有点bug,明日调)
来源:互联网 发布:shopwwi 统计无数据 编辑:程序博客网 时间:2024/05/26 07:29
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
const int maxn=302;
short a[maxn][maxn],n,m,p,minn[maxn][maxn][maxn][2];
int s[maxn][maxn],f[maxn],las[maxn],las3[maxn];
int main(){
scanf("%d%d",&n,&m,&p);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
scanf("%d",&a[i][j]);
}
}
int las1=-100000000,ans=-100000000;
for(int i=1;i<=m;i++){
las1=-100000000;
for(int j=1;j<=n;j++){
int now=p-a[j][i];
if(now>las1){
for(int k=1;k<=j;k++){
minn[i][k][j][0]=now;
//minn[i][k][j][1]=a[j][i];
}
las1=now; //las2=a[j][i]
}
else{
for(int k=1;k<=j;k++){
minn[i][k][j][0]=las1;
// minn[i][k][j][1]=las2;
}
}
s[j][i]=s[j][i-1]+a[j][i];
}
}
for(int i=1;i<=n;i++){
for(int j=i;j<=n;j++){
int las1=-100000000,las2=-100000000;
for(int k=1;k<=m;k++) las[i]=-100000000,las3[i]=-100000000;
for(int k=1;k<=m;k++){
f[i]=0;
}
for(int k=1;k<=m;k++){
if(k==1){
las[k]=minn[k][i][j][0];
//las3[k]=minn[k][i][j][1];
f[k]=f[k-1]+s[k][j]-s[k][i-1]+las[k];
continue;
}
f[k]=s[k][j]-s[k][i-1];
if(minn[k][i][j][0]>las[k-1]){
las[i]=minn[k][i][j][0];
las3[i]=minn[k][i][j][0]+minn[k][i][j][1];
if(f[k-1]-(las[k-1])){
f[k]+=f[k]-las[k-1];
}
f[k]+=las[i];
}
else{
las[i]=las[i-1];
if(f[k-1]) f[k]+=f[k-1];
}
}
for(int k=1;k<=m;k++)
ans=max(ans,f[k]);
}
}
cout<<ans<<endl;
return 0;
}
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
const int maxn=302;
short a[maxn][maxn],n,m,p,minn[maxn][maxn][maxn][2];
int s[maxn][maxn],f[maxn],las[maxn],las3[maxn];
int main(){
scanf("%d%d",&n,&m,&p);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
scanf("%d",&a[i][j]);
}
}
int las1=-100000000,ans=-100000000;
for(int i=1;i<=m;i++){
las1=-100000000;
for(int j=1;j<=n;j++){
int now=p-a[j][i];
if(now>las1){
for(int k=1;k<=j;k++){
minn[i][k][j][0]=now;
//minn[i][k][j][1]=a[j][i];
}
las1=now; //las2=a[j][i]
}
else{
for(int k=1;k<=j;k++){
minn[i][k][j][0]=las1;
// minn[i][k][j][1]=las2;
}
}
s[j][i]=s[j][i-1]+a[j][i];
}
}
for(int i=1;i<=n;i++){
for(int j=i;j<=n;j++){
int las1=-100000000,las2=-100000000;
for(int k=1;k<=m;k++) las[i]=-100000000,las3[i]=-100000000;
for(int k=1;k<=m;k++){
f[i]=0;
}
for(int k=1;k<=m;k++){
if(k==1){
las[k]=minn[k][i][j][0];
//las3[k]=minn[k][i][j][1];
f[k]=f[k-1]+s[k][j]-s[k][i-1]+las[k];
continue;
}
f[k]=s[k][j]-s[k][i-1];
if(minn[k][i][j][0]>las[k-1]){
las[i]=minn[k][i][j][0];
las3[i]=minn[k][i][j][0]+minn[k][i][j][1];
if(f[k-1]-(las[k-1])){
f[k]+=f[k]-las[k-1];
}
f[k]+=las[i];
}
else{
las[i]=las[i-1];
if(f[k-1]) f[k]+=f[k-1];
}
}
for(int k=1;k<=m;k++)
ans=max(ans,f[k]);
}
}
cout<<ans<<endl;
return 0;
}
阅读全文
0 0
- noip模拟赛(有点bug,明日调)
- [noip模拟赛]祖先(dp)
- [noip模拟赛]旅行Pod(spfa)
- [noip模拟赛]二进制(dp)
- [noip模拟赛]求和(快速幂)
- [noip模拟赛]中位数(乱搞)
- [noip模拟赛]邮递员送信(spfa)
- [noip模拟赛]敲砖块(dp)
- noip模拟赛(一)魔法树
- noip模拟赛(一)密码
- NOIP 模拟赛 nan (暴力?)
- #NOIP模拟赛#排列问题(DP)
- #NOIP模拟赛#TSP(树型DP)
- #NOIP模拟赛#捕鼠器mousetrap(树)
- noip模拟赛财富(单调队列)
- noip模拟赛 双城记
- 【noip模拟赛】密码
- 10.10NOIP模拟赛
- Centos CPU 核数 和 型号 和 主频
- 关于Struts2模型驱动封装的细节
- BZOJ 1997 [Hnoi2010]Planar
- maven出现红色感叹号的一种可能性
- linux 简单调试 の 琐碎知识
- noip模拟赛(有点bug,明日调)
- 尽量不要使用#define,而是用const、enum、inline替换。
- postgresql表的导入导出
- 第一次用 stable_sort
- MAMP虚拟站点的构建
- JAVA第四次作业(1)继承多态
- 图论 基础篇
- java面试中的二叉树题目汇总
- Java多线程编程-(9)-ThreadLocal造成OOM内存溢出案例演示与原理分析