这题乍一看十分复杂,因为行列都是动态的

但是将行列分开来看,题目顿时就豁然开朗了

对于行

重点在行的计数实际上是一个dp问题,每一行的答案数都可以由上一行(相同列)的答案数转移过来,然而对于每一行,都会由新的一行

eg:

0 1
1 *
* *

=》

0 1
1

可以看出,除开新增加的行(最上面一行)行的行答案数实际上是相同的(而上一行有无答案值,则取决于有无新的1在不在第一行),于是我们可以设定一个计数指针idx,遍历input如果出现1,则将其置为m,每次有下一个数进入,都将idx--,如果idx>0,则就将dp[i-1][j]的答案值加一

对于列

每加入一个数,所有列上的数都会向右走,故,每一个不重复的1都会对应使一列合法,因此st记录该列是否有1即可

#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<vector>using namespace std;const int N = 2000006;
bool row[N];
int n, m;
string in;int main()
{int _;cin >> _;while (_--){cin >> n >> m >> in;for (int i = 0; i <= m; i++)row[i] = false;int dp[n + 1][m + 1];memset(dp, 0, sizeof dp);int idx = 0, t;for(register int i = 1;i <= n; i++)for (register int j = 1; j <= m; j++){t = (i - 1) * m + j - 1;if (in[t] == '1')idx = m;dp[i][j] = dp[i - 1][j] + (idx > 0);idx--;}int cnt = 0;for (register int i = 1; i <= n; i++)for (register int j = 1; j <= m; j++){t = (i - 1) * m + j - 1;if (in[t] == '1' && !row[j])cnt++, row[j] = true;cout << cnt + dp[i][j] << ' ';}puts("");}return 0;
}

cf 1677 B. Tokitsukaze and Meeting相关推荐

  1. Cf Round #403 B. The Meeting Place Cannot Be Changed(二分答案)

    The Meeting Place Cannot Be Changed 我发现我最近越来越zz了,md 连调程序都不会了,首先要有想法,之后输出如果和期望的不一样就从输入开始一步一步地调啊,tmd现在 ...

  2. 【CF 1191】Tokitsukaze, CSL and Stone Game//Tokitsukaze and Duel//Tokitsukaze and Strange Rectangle

    很难想 but很好实现 博弈论专练 传送门 惯例这里只完成D,E,F 话不多说上代码 文章目录 D:Tokitsukaze, CSL and Stone Game 题目大意 题解 代码实现 E:Tok ...

  3. CF 723A The New Year: Meeting Friends

    题目链接:http://codeforces.com/problemset/problem/723/A A. The New Year: Meeting Friends time limit per ...

  4. Codeforces Round #789 (Div. 1) B. Tokitsukaze and Meeting

    翻译: 德木风正在安排会面.会议厅里有

  5. CF 782 B CoB. The Meeting Place Cannot Be Change 3分求极值

    题目链接:见这里 题意:开始每个人都在一条数轴上的某个位置上,位置大于等于1都是整数,每个人有个最大移动速度,为在数轴上面哪个点集合,所用的集合时间最短,求这个时间,集合地点可以不是整数. 解法:3分 ...

  6. Codeforces Round #789 (Div. 2)题解

    Codeforces Round #789 (Div. 2)题解 A. Tokitsukaze and All Zero Sequence 原题链接 算法标签 贪心 排序 思路 情况一:数组存在零 → ...

  7. 【CF#-931A】 Friends Meeting(思维)

    题干: Two friends are on the coordinate axis Ox in points with integer coordinates. One of them is in ...

  8. cf 1677A - Tokitsukaze and Strange Inequality

    预处理,暴力枚举,巧妙地转换枚举对象,前缀和,状态表示 对于此题,定义一个辅助数组则很好求解 sum[i]][j],将b放置在第i个位置上,可选前j个数字的可选方案数 反之,可得到c的sum状态表示 ...

  9. cf #823 Div.2(A~C)

    Cf #823 Div.2 文章目录 Cf #823 Div.2 [A. Planets](https://codeforces.com/contest/1730/problem/A) [B. Mee ...

最新文章

  1. VLFeat开源库介绍及在VS2013中的编译
  2. ES5-10 原型、原型链、闭包立即执行函数、插件开发
  3. android下raw目录的作用,Android 之 assets目录和raw目录
  4. C# 全角半角相互转换
  5. php解析xml数据格式,PHP解析xml格式数据工具类实例分享
  6. 一维数组元素倒置 c语言,实例12 数组中元素的倒置.pdf
  7. 马云还曾有过这么一段求职经历
  8. 外卖小哥到底是一群什么样的人?答案超乎你想象
  9. Overfeat图片分类、定位、检测
  10. 微信小程序 js部分语法
  11. 神经元模型图手工制作,神经元模型图手工模型
  12. 此一去,世间再无马爸爸,相逢已是马老师
  13. 最大流最小割经典例题_图像分割之最小割与最大流算法
  14. 自相关性,偏自相关性分析,时间序列相关性分析(spearman相关性,pearson相关性)
  15. Android实现用文字生成图片
  16. Antv F2双柱状图和折线图的混合写法
  17. 4个好用的WebShell网站后门查杀工具 在线木马查杀
  18. 开源主流分布式文件系统简单介绍
  19. YouTube-dl命令报错
  20. 聊天记录怎么录视频 微信聊天记录屏幕录制

热门文章

  1. 请思考用人单位要的是什么?死记硬背学专业能将你支撑到哪里?
  2. baidu 百度在搞什么啊?
  3. 浏览器交互导出excel
  4. python面向对象编程的思想0727
  5. pdf java 开源_Java开源PDF类库 分类列表
  6. JavaSE编码实操
  7. SQL语句里将字符串转换数字类型
  8. 光盘或者U盘安装linux操作系统
  9. 博易终于发布新版本了
  10. iApp裕v3语言认识us与ug