2019牛客暑期多校训练营(第六场)J Upgrading Technology
题意:
就是给你n个技能,每个技能最高升到m级,每升一级就是耗费Cij钱,这个Cij可能是负的,如果所有技能都升到或者说超过j等级,就会获得Dj钱,这个Dj也有可能是负值,让你求你最多得到多少钱(技能没有固定说要升到多少级,你也可以不升,这样就获得了0)
题解:
把所以获取的钱都变成正值,耗费的钱转化成负值,只需要处理一下Cij即可
之后计算最大后缀sum[i][j]代表第i个技能,从j+1---m级最大能获得多少钱
1 for(int i=1;i<=n;++i)
2 {
3 sum[i][m]=0;
4 for(int j=m-1;j>=0;j--)
5 {
6 sum[i][j]=max(0ll,sum[i][j+1]+a[i][j+1]);
7 }
8 }
之后再算一下假设所有技能都是j级是能获得的钱,然后再找n个技能的最大后缀,所有加到一起,还要再后缀里面找到最小的那个,要减去它
因为如果所以后缀都是正值,那么相当于所有技能都升了一级,如果这个时候Dj是负值,而且这个负值还不小,那我们求出来的就不是最小值了
代码:
1 #include<stdio.h>
2 #include<string.h>
3 #include<iostream>
4 #include<algorithm>
5 using namespace std;
6 typedef long long ll;
7 const int maxn=1005;
8 const int mod = 998244353;
9 ll sum[maxn][maxn];
10 int d[maxn],a[maxn][maxn];
11 int main()
12 {
13 int cnt=1,t,n,m;
14 scanf("%d",&t);
15 while(t--)
16 {
17 scanf("%d %d",&n,&m);
18 for(int i=1;i<=n;++i)
19 for(int j=1;j<=m;++j)
20 scanf("%d",&a[i][j]),a[i][j]=-a[i][j];
21 for(int i=1;i<=m;++i)
22 scanf("%d",&d[i]); //有可能为负值
23 for(int i=1;i<=n;++i)
24 {
25 sum[i][m]=0;
26 for(int j=m-1;j>=0;j--)
27 {
28 sum[i][j]=max(0ll,sum[i][j+1]+a[i][j+1]);
29 }
30 }
31 ll now=0,ans=0;
32 for(int j=0;j<=m;++j)
33 {
34 for(int i=1;i<=n;++i)
35 now+=a[i][j];
36 now+=d[j];
37 ll temp=0,minn=1e18;
38 for(int i=1;i<=n;++i)
39 temp+=sum[i][j],minn=min(minn,sum[i][j]);
40 ans=max(ans,temp-minn+now);
41 }
42 printf("Case #%d: %lld\n",cnt++,ans);
43 }
44 return 0;
45 }
2019牛客暑期多校训练营(第六场)J Upgrading Technology的更多相关文章
- 2019牛客暑期多校训练营(第六场)C - Palindrome Mouse (回文自动机)
https://ac.nowcoder.com/acm/contest/886/C 题意: 给出一个串A , 集合S里面为A串的回文字串 , 现在在集合S里面找出多少对(a,b),b为a的字串 分析: ...
- 2019牛客暑期多校训练营(第九场)A:Power of Fibonacci(斐波拉契幂次和)
题意:求Σfi^m%p. zoj上p是1e9+7,牛客是1e9: 对于这两个,分别有不同的做法. 前者利用公式,公式里面有sqrt(5),我们只需要二次剩余求即可. 后者mod=1e9,5才 ...
- 2019牛客暑期多校训练营(第一场)A题【单调栈】(补题)
链接:https://ac.nowcoder.com/acm/contest/881/A来源:牛客网 题目描述 Two arrays u and v each with m distinct elem ...
- 2019牛客暑期多校训练营(第一场) B Integration (数学)
链接:https://ac.nowcoder.com/acm/contest/881/B 来源:牛客网 Integration 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 5242 ...
- 2019牛客暑期多校训练营(第一场) A Equivalent Prefixes ( st 表 + 二分+分治)
链接:https://ac.nowcoder.com/acm/contest/881/A 来源:牛客网 Equivalent Prefixes 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/ ...
- 2019牛客暑期多校训练营(第二场)F.Partition problem
链接:https://ac.nowcoder.com/acm/contest/882/F来源:牛客网 Given 2N people, you need to assign each of them ...
- 2019牛客暑期多校训练营(第一场)A Equivalent Prefixes(单调栈/二分+分治)
链接:https://ac.nowcoder.com/acm/contest/881/A来源:牛客网 Two arrays u and v each with m distinct elements ...
- [状态压缩,折半搜索] 2019牛客暑期多校训练营(第九场)Knapsack Cryptosystem
链接:https://ac.nowcoder.com/acm/contest/889/D来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言52428 ...
- 2019牛客暑期多校训练营(第二场)J-Subarray(思维)
>传送门< 前言 这题我前前后后看了三遍,每次都是把网上相关的博客和通过代码认真看了再思考,然并卵,最后终于第三遍也就是现在终于看懂了,其实懂了之后发现其实没有那么难,但是的的确确需要思维 ...
随机推荐
- 【Oracle】转:通过案例学调优之--Oracle Time Model(时间模型)
转自:http://blog.51cto.com/tiany/1596012 通过案例学调优之--Oracle Time Model(时间模型) 数据库时间 优化不仅仅是缩短等待时间.优化旨在缩短最终 ...
- 单片机—Arduino UNO-R3—学习笔记002
led控制 本篇主要介绍Arduino数字引脚及相关函数,通过数字I/O输出控制板载LED灯亮灭状态(数字引脚13). 数字信号是以0.1表示的电平不连续变化的信号,也就是以二进制的形式表示的信号. ...
- nodejs中使用worker_threads来创建新的线程
目录 简介 worker_threads isMainThread MessageChannel parentPort和MessagePort markAsUntransferable SHARE_E ...
- springmvc 字符串转日期格式
http://www.mamicode.com/info-detail-2485490.html
- 集成多种协议、用于 USB-A 和 TYPE-C 双端口输出的快充协议芯片IP2726
1. 特性 支持 1A1C 支持 USB-A 和 TYPE-C 双端口输出 单口输出支持全部快充协议 双口同时插入时降压到 5V 快充规格 集成 QC2.0/QC3.0/QC4/QC4+输 ...
- 1.2V升压5V和2.4V升压5V芯片,适用于镍氢电池产品
一节镍氢电池1.2V升压5V电路芯片,两节镍氢电池2.4V升压到5V的电源芯片 PW5100具有宽范围的输入工作电压,从很低的0.7V到5V电压. PW5100输出电压固定3V,3.3V,5V可选固定 ...
- SpringBoot JPA简单使用
引自B站楠哥:https://www.bilibili.com/video/BV137411B7vB 一.新建Springboot项目 pom.xml文件 <?xml version=&qu ...
- innodb锁和事物
• InnoDB存储引擎支持行级锁,其大类可以细分为共享锁和排它锁两类• 共享锁(S):允许拥有共享锁的事务读取该行数据.当一个事务拥有一行的共享锁时,另外的事务可以在同一行数据也获得共享锁,但另外的 ...
- requests模块的基本使用
requests模块的基本使用 基于网络请求的模块. 环境的安装:pip install requests 作用:模拟浏览器发起请求 分析requests的编码流程: 1.指定url 2.发起了请求 ...
- oracle模糊查询mysql的区别
https://blog.csdn.net/weixin_38673554/article/details/86503982#_1 oracle与使用mysql的区别 https://www.cnbl ...