烦人的dp

来源:互联网 发布:unity3d 录屏插件 编辑:程序博客网 时间:2024/05/20 06:29
1050

 1 #include<cstring> 2 #include<iostream> 3 #include<cstdio> 4  5 using namespace std; 6  7 int main() 8 { 9     int n;10     while(cin>>n)11     {12         int a[200][200];13         memset(a,0,sizeof(a));14         for(int i=1;i<=n;i++)15             for(int j=1;j<=n;j++)16             {17                 cin>>a[i][j];18                 a[i][j]+=a[i-1][j];19             }20         int maxn=-0x3f3f3f3f;21         int b[200],dp[20000];22         memset(dp,0,sizeof(dp));23         for(int i=1;i<=n;i++)24         {25             for(int j=i;j<=n;j++)26             {27                 for(int k=1;k<=n;k++)28                 {29                     b[k]=a[j][k]-a[i-1][k];30                 }31                 int sum=0;32                 for(int k=1;k<=n;k++)33                 {34                     if(sum+b[k]<0){35                         sum=b[k];36                     }37                     else {38                         sum+=b[k];39                         if(sum>maxn) maxn=sum;40                     }41                 }42             }43         }44         cout<<maxn<<endl;45     }46 }47 //最大连续子序列
LIS

 1083

 1 #include<cstring> 2 #include<iostream> 3 #include<cstdio> 4  5 using namespace std; 6  7 int main() 8 { 9     int T;10     cin>>T;11     while(T--)12     {13         int n;14         int a[500];15         int b[500];16         cin>>n;17         memset(a,0,sizeof(a));18         memset(b,0,sizeof(b));19         while(n--)20         {21             int x,y;22             cin>>x>>y;23             if(x>y) swap(x,y);24             if(y%2) y++;25             for(int i=x;i<=y;i++)26             {27                 if(i%2) a[i]++;28                 else b[i]++;29             }30         }31         int maxn=0;32         for(int i=0;i<=400;i++)33         {34          //   cout<<a[i]<<' '<<b[i]<<endl;35             maxn=max(maxn,max(a[i],b[i]));36         }37         cout<<maxn*10<<endl;38     }39 }40 //标记走过路径
YY

 1088

DFS+DP

 

0 0