题目链接:https://ac.nowcoder.com/acm/contest/886/J

题目大意

  略。

分析

  见代码。

代码如下

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define INIT() ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
  5. #define Rep(i,n) for (int i = 0; i < (n); ++i)
  6. #define For(i,s,t) for (int i = (s); i <= (t); ++i)
  7. #define rFor(i,t,s) for (int i = (t); i >= (s); --i)
  8. #define ForLL(i, s, t) for (LL i = LL(s); i <= LL(t); ++i)
  9. #define rForLL(i, t, s) for (LL i = LL(t); i >= LL(s); --i)
  10. #define foreach(i,c) for (__typeof(c.begin()) i = c.begin(); i != c.end(); ++i)
  11. #define rforeach(i,c) for (__typeof(c.rbegin()) i = c.rbegin(); i != c.rend(); ++i)
  12.  
  13. #define pr(x) cout << #x << " = " << x << " "
  14. #define prln(x) cout << #x << " = " << x << endl
  15.  
  16. #define LOWBIT(x) ((x)&(-x))
  17.  
  18. #define ALL(x) x.begin(),x.end()
  19. #define INS(x) inserter(x,x.begin())
  20. #define UNIQUE(x) x.erase(unique(x.begin(), x.end()), x.end())
  21. #define REMOVE(x, c) x.erase(remove(x.begin(), x.end(), c), x.end()); // ?? x ?????? c
  22. #define TOLOWER(x) transform(x.begin(), x.end(), x.begin(),::tolower);
  23. #define TOUPPER(x) transform(x.begin(), x.end(), x.begin(),::toupper);
  24.  
  25. #define ms0(a) memset(a,0,sizeof(a))
  26. #define msI(a) memset(a,inf,sizeof(a))
  27. #define msM(a) memset(a,-1,sizeof(a))
  28.  
  29. #define MP make_pair
  30. #define PB push_back
  31. #define ft first
  32. #define sd second
  33.  
  34. template<typename T1, typename T2>
  35. istream &operator>>(istream &in, pair<T1, T2> &p) {
  36. in >> p.first >> p.second;
  37. return in;
  38. }
  39.  
  40. template<typename T>
  41. istream &operator>>(istream &in, vector<T> &v) {
  42. for (auto &x: v)
  43. in >> x;
  44. return in;
  45. }
  46.  
  47. template<typename T>
  48. ostream &operator<<(ostream &out, vector<T> &v) {
  49. Rep(i, v.size()) out << v[i] << " \n"[i == v.size()];
  50. return out;
  51. }
  52.  
  53. template<typename T1, typename T2>
  54. ostream &operator<<(ostream &out, const std::pair<T1, T2> &p) {
  55. out << "[" << p.first << ", " << p.second << "]" << "\n";
  56. return out;
  57. }
  58.  
  59. inline int gc(){
  60. static const int BUF = 1e7;
  61. static char buf[BUF], *bg = buf + BUF, *ed = bg;
  62.  
  63. if(bg == ed) fread(bg = buf, , BUF, stdin);
  64. return *bg++;
  65. }
  66.  
  67. inline int ri(){
  68. int x = , f = , c = gc();
  69. for(; c<||c>; f = c=='-'?-:f, c=gc());
  70. for(; c>&&c<; x = x* + c - , c=gc());
  71. return x*f;
  72. }
  73.  
  74. template<class T>
  75. inline string toString(T x) {
  76. ostringstream sout;
  77. sout << x;
  78. return sout.str();
  79. }
  80.  
  81. inline int toInt(string s) {
  82. int v;
  83. istringstream sin(s);
  84. sin >> v;
  85. return v;
  86. }
  87.  
  88. //min <= aim <= max
  89. template<typename T>
  90. inline bool BETWEEN(const T aim, const T min, const T max) {
  91. return min <= aim && aim <= max;
  92. }
  93.  
  94. typedef long long LL;
  95. typedef unsigned long long uLL;
  96. typedef pair< double, double > PDD;
  97. typedef pair< int, int > PII;
  98. typedef pair< int, PII > PIPII;
  99. typedef pair< string, int > PSI;
  100. typedef pair< int, PSI > PIPSI;
  101. typedef set< int > SI;
  102. typedef set< PII > SPII;
  103. typedef vector< int > VI;
  104. typedef vector< double > VD;
  105. typedef vector< VI > VVI;
  106. typedef vector< SI > VSI;
  107. typedef vector< PII > VPII;
  108. typedef map< int, int > MII;
  109. typedef map< int, string > MIS;
  110. typedef map< int, PII > MIPII;
  111. typedef map< PII, int > MPIII;
  112. typedef map< string, int > MSI;
  113. typedef map< string, string > MSS;
  114. typedef map< PII, string > MPIIS;
  115. typedef map< PII, PII > MPIIPII;
  116. typedef multimap< int, int > MMII;
  117. typedef multimap< string, int > MMSI;
  118. //typedef unordered_map< int, int > uMII;
  119. typedef pair< LL, LL > PLL;
  120. typedef vector< LL > VL;
  121. typedef vector< VL > VVL;
  122. typedef priority_queue< int > PQIMax;
  123. typedef priority_queue< int, VI, greater< int > > PQIMin;
  124. const double EPS = 1e-;
  125. const LL inf = 0x7fffffff;
  126. const LL infLL = 0x7fffffffffffffffLL;
  127. const LL mod = 1e9 + ;
  128. const int maxN = 1e3 + ;
  129. const LL ONE = ;
  130. const LL evenBits = 0xaaaaaaaaaaaaaaaa;
  131. const LL oddBits = 0x5555555555555555;
  132.  
  133. int T, N, M, c[maxN][maxN], d[maxN];
  134. LL ans;
  135. // dp[i][j]表示 i 号武器,从等级 j - 1开始能获得的最大收益
  136. // dp[i][j] = max(dp[i][j + 1] + c[i][j - 1], 0)
  137. LL dp[maxN][maxN];
  138.  
  139. // preSum[i] 表示所有武器升到 i 级所能获得的基础分
  140. LL preSum[maxN];
  141.  
  142. int main(){
  143. //freopen("MyOutput.txt","w",stdout);
  144. //freopen("input.txt","r",stdin);
  145. INIT();
  146. cin >> T;
  147. For(cases, , T) {
  148. ans = ;
  149. ms0(preSum);
  150.  
  151. cin >> N >> M;
  152. For(i, , N) {
  153. For(j, , M) {
  154. cin >> c[i][j];
  155. c[i][j] = -c[i][j];
  156. preSum[j] += c[i][j];
  157. }
  158. dp[i][M] = max(, c[i][M]);
  159. }
  160.  
  161. For(j, , M) {
  162. cin >> d[j];
  163. preSum[j] += d[j] + preSum[j - ];
  164. }
  165.  
  166. For(i, , N) {
  167. rFor(j, M - , ) {
  168. dp[i][j] = max((LL), c[i][j] + dp[i][j + ]);
  169. }
  170. }
  171.  
  172. // 枚举所有武器最低等级
  173. For(j, , M) {
  174. LL sum = preSum[j], minS = infLL;
  175.  
  176. For(i, , N) {
  177. sum += dp[i][j + ];
  178. minS = min(minS, dp[i][j + ]);
  179. }
  180. sum -= minS; // 让收益最低的武器成为短板
  181.  
  182. ans = max(ans, sum);
  183. }
  184.  
  185. cout << "Case #" << cases << ": " << ans << endl;
  186. }
  187. return ;
  188. }

2019 牛客多校第六场 J Upgrading Technology的更多相关文章

  1. 牛客多校第六场 J Upgrading Technology dp

    题意: 有n个技能,一开始都是0级,第i个技能从j-1级升到j级,花费$c_{i,j}$,但是花费不一定是正的 所有的技能升到j级时,奖励$d_j$但是奖励也不一定是正的 题解: 用sum[i][j] ...

  2. 牛客多校第六场 J Heritage of skywalkert 随即互质概率 nth_element(求最大多少项模板)

    链接:https://www.nowcoder.com/acm/contest/144/J来源:牛客网 skywalkert, the new legend of Beihang University ...

  3. 2019牛客多校第六场 B - Shorten IPv6 Address 模拟

    B - Shorten IPv6 Address 题意 给你\(128\)位的二进制,转换为十六进制. 每\(4\)位十六进制分为\(1\)组,每两组用一个\(":"\)分开. 每 ...

  4. [题解]Shorten IPv6 Address-模拟(2019牛客多校第六场B题)

    题目链接:https://ac.nowcoder.com/acm/contest/886/B 题意: 您将获得一个IPv6地址,该地址是128位二进制字符串.请根据以下规则确定其最短的表示: 以十六进 ...

  5. 2019牛客多校第六场J-Upgrading Technology(枚举+单调队列)

    Upgrading Technology 题目传送门 解题思路 对于这题,我们可以枚举一个k从0~m,表示当前我们把所有技能最少升到了k级,且至少有一个为k级. 此时我们刚好获得了前k个d[]的收益, ...

  6. 2019 牛客多校第六场 D Move

    题目链接:https://ac.nowcoder.com/acm/contest/886/D 题解摘自官方题解 题目大意 有 K 个体积相同的箱子,有 N 个体积相同或相异的物品,现要按照如下策略装箱 ...

  7. 2019 牛客多校第六场 B Shorten IPv6 Address

    题目链接:https://ac.nowcoder.com/acm/contest/886/B 题目大意 给定一个 128 位的二进制 ip 地址,让你以 16 位一组,每组转成 16 进制,用冒号连接 ...

  8. 2019牛客多校第六场H Pair(数位DP 多个数相关)题解

    题意: 传送门 给你\(A,B,C\),要求你给出有多少对\((x, y)\)满足\(x\in [1,A],y\in [1,B]\),且满足以下任意一个条件:\(x \& y > C\) ...

  9. 2019牛客多校第四场J free——分层图&&最短路

    题意 一张无向图,每条边有权值,可以选择不超过 $k$ 条路使其权值变成0,求 $S$ 到 $T$ 的最短路.(同洛谷 P4568) 分析 首先,分层图最短路可以有效解决这种带有 「阶段性」的最短路, ...

随机推荐

  1. EXCEL设置三级下拉框

    EXCEL设置三级下拉框 1.添加下拉框数据源 公式--->指定 公式--->名称管理器 2.设置第一级下拉框的值 3.第一级下拉框选出一个值 4.设置第二级下拉框(INDIRECT($A ...

  2. Shiro学习(12)与Spring集成

    Shiro的组件都是JavaBean/POJO式的组件,所以非常容易使用spring进行组件管理,可以非常方便的从ini配置迁移到Spring进行管理,且支持JavaSE应用及Web应用的集成. 在示 ...

  3. 听说江苏省没有webSocket服务硬件

    听说江苏省没有webSocket服务硬件 昨天项目上线,我门开发采用的webSocket做实时轮询,然后开发部老总怒怼"江苏省没有webSocket服务硬件,江苏省没有webSocket服务 ...

  4. 使用U盘或在本地电脑作为git远程仓库进行托管

    情景描述: 当有两台电脑需要共同维护一段代码,其中一台电脑不希望(或者不能)通过网络的方式进行访问git仓库(即不使用github),那么可以使用U盘作为介质将其作为远程仓库,或者使用局域网中一台电脑 ...

  5. Codeforces 1189A Keanu Reeves

    题目链接:http://codeforces.com/problemset/problem/1189/A 思路:统计1 和 0 的个数,不相等拆开字符串,否则不拆. AC代码: #include< ...

  6. PostgreSQL——服务器配置_{postgresql.conf}

    一.设置参数 所有参数名称都是不区分大小写的 值为字符串时,需要单引号 值为数值时不需要单引号,但带单位时,需要单引号 配置文件(如:postgresql.conf.postgresql.auto.c ...

  7. 【转载】Jmeter业务请求比例1

    ps:文章转自订阅号“测试那点事儿”,链接:https://mp.weixin.qq.com/s/qVD4iNO0QqRIwAIq9_E_Kw 在进行综合场景压测时,由于不同的请求,要求所占比例不同, ...

  8. MFS分布式文件系统【2】MFS MASTER 部署

    MFS版本 mfs-1.6.27 MFS-MASTER 192.168.1.190 MFS-CHUNKSERVER1 192.168.1.252 MFS-CHUNKSERVER2 192.168.1. ...

  9. 三(2)、springcloud之Eureka集群配置

    1)原理说明** 服务启动后向Eureka注册,Eureka Server会将注册信息向其他Eureka Server进行同步,当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后会 ...

  10. 使ie8正常支持placeholder

    在IE8下测试,发现一个问题placeholder不被支持,下面是解决IE支持placeholder的方法,本文引用的jquery是1.12.0测试通过,先引用jquery <script ty ...