当前位置: 首页 > news >正文

Codeforce8.29-9.4做题笔记

Tokitsukaze and Meeting(1700)

题意:给定n*m的网格。学生从第一行(1,1)开始进入,每来一个学生改行学生往后右移一个位置,该行最后一个位置学生进入下一行第一个,以此类推。每个学生有个标志0和1.求第i个学生进入后,至少一行有学生1和至少一列有学生1的行列个数总和。
题解
对列,使用队列模拟。
对行,可以增量更新。第二行到最后的情况可以由前面已求过dp[j-m]的推出,只需考察第一行的情况即可。(子问题)

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;


int main()
{
	int t; cin>>t;
	for(int i = 0;i<t;i++)
	{
		int n,m; cin>>n>>m;
		string s;cin >> s;
		queue<int> q;
		int dp[n*m],dpcol[n*m],ans[n*m];
		int row1count = 0;
		int col1count = 0;
		for(int j = 0;j<m;j++) {
			q.push(s[j] - '0');
			if(s[j]=='1') {
				row1count++; col1count++;
			}
			dp[j]=row1count>0;
			ans[j]=dp[j]+col1count;
		}
		for(int j = m;j<n*m;j++)
		{
			//update the row
			row1count = row1count + (s[j] - '0') -  (s[j - m] - '0');
			dp[j] = dp[j - m] + (row1count > 0);
			//update the coloum 
			col1count -= q.front();
			int a  =  q.front() || (s[j] - '0');
			col1count += a;
			q.pop();
			q.push(a);
			ans[j] = col1count + dp[j];
		}
		for(int j = 0;j<n*m;j++)cout<<ans[j]<<" ";cout<<endl;
	}
	system("pause");
	return 0;
}

反思:可以考虑多个时间步长的增量关系,不要仅限于相邻步长的增量关系。多考虑是否有可以利用的子问题。

相关文章:

  • springboot+宴会预定平台 毕业设计-附源码231718
  • python super()详解,一篇文章告诉你python的super是什么,如何使用
  • Redis 的持久化
  • 2022年中国证券行业智能投顾专题分析
  • MYSQL高可用架构之MHA实战(真实可用)
  • 【Reinforcement Learning】蒙特卡洛算法
  • SAP ABAP ADT安装说明 as 20220901
  • 计算机组成原理知识总结(八)输入/输出系统
  • springboot基于java的康泰小区物业管理系统的设计与实现毕业设计源码101926
  • java查看对象真实地址和哈希值的工具类
  • SOLIDWORKS直播课:解锁3DE协同设计平台的“云端结构设计角色”
  • 简单的 手写 服务器
  • 01 RocketMQ - NameServer 源码分析
  • 【CSS】数据面板
  • 记一次盖茨木马应急响应
  • [译] 怎样写一个基础的编译器
  • ComponentOne 2017 V2版本正式发布
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • ES6系统学习----从Apollo Client看解构赋值
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • Java多态
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • LeetCode29.两数相除 JavaScript
  • maven工程打包jar以及java jar命令的classpath使用
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • Spark学习笔记之相关记录
  • 大快搜索数据爬虫技术实例安装教学篇
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 给第三方使用接口的 URL 签名实现
  • 技术胖1-4季视频复习— (看视频笔记)
  • 如何合理的规划jvm性能调优
  • 使用agvtool更改app version/build
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 微信开放平台全网发布【失败】的几点排查方法
  • 移动端唤起键盘时取消position:fixed定位
  • 转载:[译] 内容加速黑科技趣谈
  • Java数据解析之JSON
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • ${factoryList }后面有空格不影响
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (黑客游戏)HackTheGame1.21 过关攻略
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • **PHP二维数组遍历时同时赋值
  • *上位机的定义
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET委托:一个关于C#的睡前故事
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • @ResponseBody
  • @Valid和@NotNull字段校验使用