首先,证明结果一定是取某些整行,再加上一个多余的一行的前几个。

假如:

x1<=x2<=x3<=x4<=x5

y1<=y2<=y3<=y4<=y5

取6个,最优解是取x3,x4,x5,y3,y4,y5。那么:

(1)如果y3>=x2,那么y3+y4>=x1+x2。就取掉y3,y4取x1,x2更优。

(2)如果y3<x2,那x3就>y2,那就去掉x3,x4取y1,y2更优。

因此结果不会出现2行不整的。给出条件了,那么要取的整行的数量也确定了。多出来几个(记为k)也确定了。那用sum[i]记录该行取整行时,maxk[i]记录该行取最大的k个时的结果。问题在于,一行被作为整行了就不能作为前k个了。这样不能贪心,能举反例。

比如

1 1 1 1

0 0 0 5

取5个。

这样只能dp了。dp[i][j][0]记录前i行,取了j个整行,还没取多余行的最小。dp[i][j][1]记录前i行,取了j个整行,已经取多余行的最小。那么第i行能作为整行取,dp[i][j][0]=dp[i-1][j-1][0]+sum[i]。也能不取,说明i-1行时已经有j个整行了。也能作为多余行取。注意开始时将不能到的点解决一下,给个大的值。

//#pragma comment(linker,"/STACK:1024000000,1024000000")
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<vector>
#include<cmath>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<algorithm>
#include <stack>
#include <iomanip>
using namespace std;
typedef long long lon;
const lon SZ=527000,INF=0x7FFFFFFF;
const double EPS=1e-8;
vector<lon> vct[1010];
lon sum[1010],maxk[1010];
lon dp[1010][1010][2];int main()
{//std::ios::sync_with_stdio(0);//freopen("d:\\1.txt","r",stdin); //for(;scanf("%d",&n)!=EOF;)
    {lon n,m,k;cin>>n>>m>>k;lon rem=k%m,num=k/m;for(lon i=1;i<=n;++i){vct[i].assign(m,0);for(lon j=0;j<m;++j)cin>>vct[i][j],sum[i]+=vct[i][j];sort(vct[i].begin(),vct[i].end(),greater<lon>());//for(int j=0;j<vct[i].size();++j)cout<<vct[i][j]<<" ";//cout<<vct[i].size()<<" "<<endl;for(lon j=0;j<rem;++j)maxk[i]+=vct[i][j];//cout<<maxk[i]<<endl;
        }memset(dp,0x3f,sizeof(dp));//for(lon i=0;i<=num;++i)dp[0][i][1]=0x3f3f3f3f,dp[0][i][0]=0x3f3f3f3f;dp[0][0][0]=0;for(lon i=1;i<=n;++i){for(lon j=0;j<=min(i,num);++j){if(j==0)dp[i][j][0]=0;else dp[i][j][0]=min(dp[i-1][j][0],dp[i-1][j-1][0]+sum[i]);dp[i][j][1]=min(dp[i-1][j][1],dp[i-1][j][0]+maxk[i]);dp[i][j][1]=min(dp[i][j][1],dp[i-1][j-1][1]+sum[i]);//cout<<i<<" "<<j<<" "<<dp[i][j][0]<<" "<<dp[i][j][1]<<" "<<maxk[i]<<endl;
            }}if(rem==0)cout<<dp[n][num][0]<<endl;else cout<<dp[n][num][1]<<endl;}return 0;
}

转载于:https://www.cnblogs.com/gaudar/p/9782711.html

Wannafly挑战赛26 B 冥土追魂相关推荐

  1. Wannafly挑战赛26: B. 冥土追魂(思维题)

    链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 题目描述 有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏.... Misa ...

  2. Wannafly挑战赛26 B.冥土追魂 贪心

    链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 题目描述 有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏.... Misa ...

  3. nowcoder (牛客)Wannafly挑战赛26 B: 冥土追魂 (思维)

    链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言104 ...

  4. Wannafly挑战赛26 B 冥土追魂(暴力)

    题意:链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏.... Misaka ...

  5. Wannafly挑战赛26 B冥土追魂

    链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言104 ...

  6. wannafly挑战赛26 B 冥土追魂 (思维+排序)

    大致题意 有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏- Misaka和Kuroko在一个 n x m 的棋盘上玩游戏,每个格子上都放着一些呱太.游戏共进行 k 回合,每一回合 ...

  7. Wannafly挑战赛26-B 冥土追魂

    地址:https://www.nowcoder.com/acm/contest/212/B 思路:对于行列选取,是选择所有行中的最大值的最小值,当是并不能用贪心来做,例如 2 2 2 7 8 1 9 ...

  8. Wannafly挑战赛26:B冥土追魂(模拟?贪心?暴力?)

    题目描述 有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏.... Misaka和Kuroko在一个 n x m 的棋盘上玩游戏,每个格子上都放着一些呱太.游戏共进行 k 回合,每一 ...

  9. [贪心] 冥土追魂 Wannafly挑战赛26

    链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 冥土追魂 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他 ...

最新文章

  1. cocos2d-x 2.0启用HD高清图片支持
  2. 网络埋藏了怎样的物联网智慧?
  3. 数据流图中flow不显示文字_发动机系统数据流一般参数的解读
  4. Tomcat与Jre绿色环境配置(生产环境)
  5. vue/cli3 配置vux
  6. centos7 搭建keepalived+Nginx+tomcat
  7. Python使用XGBoost
  8. [BZOJ3297][USACO2011 Open]forgot
  9. Synonyms: 中文近义词工具包
  10. 填空什么的月牙_部编一年级上册语文第四单元知识梳理填空,附答案
  11. 各类软件激活码(更新中)
  12. TSW马宝国杯 web(我马宝国被黑了)
  13. python 微博自动点赞_用 Python 自动定时发微博
  14. 我的世界服务器怎么弄无限矿物,minecraft mod教程:在世界上生成矿石:GameRegistry的使用5...
  15. java多线程之线程安全----铁路售票系统的实现
  16. GWO灰狼优化算法综述(Grey Wolf Optimization)
  17. 如何ssh连接本地的虚拟机
  18. Android 跳转外部浏览器坑
  19. gta5oracle.yft原文件,GTA5林肯城市mod_侠盗猎车5 1991款林肯城市古典豪车MOD下载 - 游乐网...
  20. 支小蜜智慧食堂刷脸就餐让学生不再刷卡吃饭

热门文章

  1. 标签打印软件如何制作医院输液卡
  2. AE基础教程(3)——第3章 合成窗口-缩放,网格,参考线使用
  3. OpenCV学习之播放视频
  4. 大唐天下全返app系统开发
  5. 【算法练习】罗马数字转整数与整数转罗马数字
  6. 一、手把手教你 Vue2+Ts
  7. 如果在简历中描述项目
  8. 校园地理信息系统的设计与实现
  9. nginx 代理的简单配置
  10. 计算机病毒和恶意软件有哪些,恶意软件上常见的病毒有哪些