[题目链接]

https://www.lydsy.com/JudgeOnline/problem.php?id=1169

[算法]

首先DFS枚举出横着切的

然后二分 + 贪心即可

时间复杂度 : O(2 ^ N * N ^ 2logN)

[代码]

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. typedef long double ld;
  5. typedef unsigned long long ull;
  6. #define N 20
  7. const int inf = 2e9;
  8.  
  9. int n , m , r , s , cnt;
  10. ll ans;
  11. ll a[N][N] , sum[N][N] , dp[N][N] , b[N];
  12.  
  13. template <typename T> inline void chkmax(T &x,T y) { x = max(x,y); }
  14. template <typename T> inline void chkmin(T &x,T y) { x = min(x,y); }
  15. template <typename T> inline void read(T &x)
  16. {
  17. T f = ; x = ;
  18. char c = getchar();
  19. for (; !isdigit(c); c = getchar()) if (c == '-') f = -f;
  20. for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
  21. x *= f;
  22. }
  23. inline int calc(int x)
  24. {
  25. int ret = ;
  26. for (int i = x; i; i -= i & (-i))
  27. ++ret;
  28. return ret;
  29. }
  30. inline ll calc_sum(int X1 , int Y1 , int X2 , int Y2) {
  31. return sum[X2][Y2] - sum[X1 - ][Y2] - sum[X2][Y1 - ] + sum[X1 - ][Y1 - ];
  32. }
  33. inline bool check(ll limit) {
  34. int pre = , cut = ;
  35. for (int i = ; i <= m; ++i) {
  36. for (int j = ; j <= cnt; ++j) {
  37. if (calc_sum(b[j - ] + , i , b[j] , i) > limit)
  38. return false;
  39. }
  40. }
  41. for (int i = ; i <= m; ++i) {
  42. ll value = ;
  43. for (int j = ; j <= cnt; ++j) {
  44. if (calc_sum(b[j - ] + , pre , b[j] , i) <= limit)
  45. continue;
  46. else {
  47. pre = i;
  48. ++cut;
  49. }
  50. }
  51. }
  52. return cut <= s;
  53. }
  54. inline ll getans(ll S) {
  55. cnt = ;
  56. for (int i = ; i < n; ++i)
  57. if (S & ( << i)) b[++cnt] = i + ;
  58. b[++cnt] = n;
  59. ll l = , r = ans , ret = inf;
  60. while (l <= r) {
  61. int mid = (l + r) >> ;
  62. if (check(mid))
  63. {
  64. ret = mid;
  65. r = mid - ;
  66. } else l = mid + ;
  67. }
  68. return ret;
  69. }
  70.  
  71. int main() {
  72.  
  73. read(n); read(m); read(r); read(s);
  74. for (int i = ; i <= n; ++i) {
  75. for (int j = ; j <= m; ++j) {
  76. read(a[i][j]);
  77. sum[i][j] = sum[i - ][j] + sum[i][j - ] - sum[i - ][j - ] + a[i][j];
  78. }
  79. }
  80. ans = sum[n][m];
  81. for (int i = ; i < ( << n); ++i)
  82. {
  83. if (calc(i) == r)
  84. chkmin(ans , getans(i));
  85. }
  86. printf("%lld\n" , ans);
  87.  
  88. return ;
  89.  
  90. }

[BALTIC 2008] Grid的更多相关文章

  1. 洛谷 P4660 & bzoj 1168 [ Baltic OI 2008 ] 手套 —— 分析+单调栈

    题目:https://www.luogu.org/record/show?rid=12702916 https://www.lydsy.com/JudgeOnline/problem.php?id=1 ...

  2. 为WPF和Silverlight的Grid添加边框线(zz)

      Grid是WPF和Silverlight中的一个重要的布局元素,其他的布局元素还有StackPanel, Canvas, Border等等.从字面上说,Grid是一个表格的意思,它的使用也确实很方 ...

  3. Repeat Header / Keep Header Visible in Tables in RS 2008

    You selected "Repeat header rows on each page" or "Keep header rows visible while scr ...

  4. Oracle RAC集群安装之:Grid软件安装过程蓝屏

    前几天在安装一套RAC服务器的过程中,遇到了蓝屏事件,折腾了蛮久(在排查是否存在硬件问题上花费了相当多一部分时间),整个过程大概说明如下: 1.两台华为的PC SERVER,操作系统为WIN SERV ...

  5. jQuery的几个Grid插件简单比较

    目标:实现一个类似于Excel功能的Grid数据维护功能,并且就地编辑在乎的是Cell编辑而不是行编辑 候选者:easy-ui之datagrid, jqgrid, flexigrid 使用环境:jqu ...

  6. SQL Server 2008空间数据应用系列十二:Bing Maps中呈现GeoRSS订阅的空间数据

    原文:SQL Server 2008空间数据应用系列十二:Bing Maps中呈现GeoRSS订阅的空间数据 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Se ...

  7. Deploy 11.2.0.3 RAC+DG on Windows 2008 R2 Step by Step

    环境规划: 节点1: tc1 192.168.56.101 内存:2G 节点2: tc2 192.168.56.102 内存:2G 物理备库:tcdg192.168.56.108内存:1.5G 操作系 ...

  8. 重新想象 Windows 8 Store Apps (7) - 控件之布局控件: Canvas, Grid, StackPanel, VirtualizingStackPanel, WrapGrid, VariableSizedWrapGrid

    原文:重新想象 Windows 8 Store Apps (7) - 控件之布局控件: Canvas, Grid, StackPanel, VirtualizingStackPanel, WrapGr ...

  9. 背水一战 Windows 10 (38) - 控件(布局类): Panel, Canvas, RelativePanel, StackPanel, Grid

    [源码下载] 背水一战 Windows 10 (38) - 控件(布局类): Panel, Canvas, RelativePanel, StackPanel, Grid 作者:webabcd 介绍背 ...

随机推荐

  1. poj1061(extendgcd)

    看完题目后,题目要求: 设时间为t (x+mt)%L = (y+nt)%L ( x-y + (m-n)*t )= k*L (k是整数,可为负) 然后就是经典的 xa+yb=c 求解x,y的经典题目了. ...

  2. 【BZOJ1132】[POI2008]Tro 几何

    [BZOJ1132][POI2008]Tro Description 平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和 N<=3000 Input 第一行给出数字N,N在[3,3000 ...

  3. Bag of mice(概率DP)

    Bag of mice  CodeForces - 148D The dragon and the princess are arguing about what to do on the New Y ...

  4. EasyNVR无插件直播服务器软件使用详情功能 - 录像功能说明

    背景介绍 EasyNVR不仅仅拥有无插件的直播功能,更拥有对于直播录像的存储和日期检索功能: 本篇博文主要用于介绍EasyNVR的录像功能. 之前有博文介绍相关的录像功能,本篇主要为了介绍录像的新功能 ...

  5. 九度OJ 1349:数字在排序数组中出现的次数 (排序、查找)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2489 解决:742 题目描述: 统计一个数字在排序数组中出现的次数. 输入: 每个测试案例包括两行: 第一行有1个整数n,表示数组的大小. ...

  6. python cookbook第三版学习笔记十六:抽象基类

    假设一个工程中有多个类,每个类都通过__init__来初始化参数.但是可能有很多高度重复且样式相同的__init__.为了减少代码.我们可以将初始化数据结构的步骤归纳到一个单独的__init__函数中 ...

  7. 【windows】远程桌面报错:由于CredSSP加密Oracle修正

    对于windows家庭版用户,无法打开gepdit.msc需要手动修改注册表 创建红色部分目录 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curre ...

  8. Redis持久化——多实例部署(四)

    Redis单线程架构导致无法充分利用CPU特性,通常的做法是在一台机器上部署多个实例. 当多个实例开启AOF重写后,彼此之间会产生对CPU和IO的竞争. 对于单机部署多Redis部署,如果同一时刻运作 ...

  9. mysql 中 all any some 用法

    -- 建表语句 CREATE TABLE score( id INT PRIMARY KEY AUTO_INCREMENT, NAME ), SUBJECT ), score INT); -- 添加数 ...

  10. putty screen

    http://www.cnblogs.com/xupeizhi/archive/2013/05/20/3088779.html screen 会创建一个跑着shell的单一窗口 Ctrl+a d退出刚 ...