AGC007F 题解
题意
给定两个长为 \(n\) 的字符串 \(S, T\),求最少进行多少次操作才能使 \(S = T\)。
一次操作定义为:对于 \(i = 1, 2, .. n\),令第 \(i\) 位为操作后的第 \(i - 1\) 位或操作前的第 \(i\) 位。(\(i = 1\) 时只能第二种)
分析
赛时想了一个假的贪心,想到设 \(pos_i\) 为在答案中 \(T_i\) 是由 \(S_{pos_i}\) 贡献的,可以发现 \(\forall 1\le i < n, pos_i\le pos_{i + 1}\),而且若 \(i < j\) 有交,一定先操作完 \(j\)。
这个思路看上去没有问题,但是后面的结论是错的,当时我这样想的原因是:若 \(i\) 先操作完,\(j\) 就没有了,但真的是这样吗,可以 \(pos_i\) 先操作到 \(pos_j - 1\),\(pos_j\) 操作到 \(i + 1\) 及之后。
错误原因:并没有做到最优,能早点完成的操作放在了后面做。
Update:破案了,这道题明显是倒着做消除后效性,直接贪这么后效怎么做。倒着做好写多了/kel
考虑已经得到了 \(pos_i\)(对于 \(i\) 找第一个 \(j\) 使得 \(s_j = t_i\) 且 \(j \le pos_{i + 1}\)),相当于 \(S = 1, 2, ... n\),\(T = pos_1, pos_2, ..., pos_n\),每次我们尽量往右扩展,然后给有用的留 1 个让它往右扩展,发现这样一定是最优的。
考虑怎么维护这个,先把无用的去掉,把相同的 S 缩到一起,每次从右往左,依次进行 把当前区间缩到只有右端点,把右端点尽量向右扩展 的流程,这是好维护的。
考虑为什么对
- 可以根据贪心过程逆推操作
- 已经是最贪的了
考虑怎么维护,找规律,发现进行了 \(j\) 次操作后,当前区间 \(i\) 的 \(R_i = R_{i + j} - j\)。令 \(R_j(j > n) = +\inf\) 即可。
AGC007F 题解的更多相关文章
- AtCoder随做
突然发现只有我没写过 AT. 没写题解不意味着没做,有的忘了写或者太草率了就算了. 部分前言删了. 目录 ABC020D ABC241G ABC268 AGC003D AGC004D AGC004E ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- 解决方案 | Windows 验证账号出现 0x80190001错误解决
一.问题描述 点击windows开始→账户→更改账户设置→验证,出现下面的错误. 二.解决方法 网上流行的是这个方法,https://blog.csdn.net/qq_36393978/article ...
- 扬州万方:基于申威平台的 Curve 块存储在高性能和超融合场景下的实践
背景 扬州万方科技股份有限公司主要从事通信.计算机和服务器.智能车辆.基础软件等产品的科研生产,是国家高新技术企业.专精特新小巨人企业.国家火炬计划承担单位. 业务介绍 申威处理器是在国家" ...
- MoneyPrinterPlus全面支持本地Ollama大模型
MoneyPrinterPlus现在支持批量混剪,一键AI生成视频,一键批量发布短视频这些功能了. 之前支持的大模型是常用的云厂商,比如OpenAI,Azure,Kimi,Qianfan,Baichu ...
- PAT-1003 我要通过! (20分) JavaScript(node)
"答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的"答案正确"大派送 -- 只要读入的字符串满足下列条件,系统就输出"答案正确&q ...
- JS原生实现html转pdf / html转图片 (html2canvas.js + jspdf.js )
<button onclick="HtmlToPdf()"> 转储pdf </button> <button onclick="HtmlTo ...
- [oeasy]python0115_西里尔字符集_Cyrillic_俄文字符编码_KOI_8859系列
各语言字符编码 回忆上次内容 上次回顾了 非ascii的拉丁字符编码的进化过程 0-127 是 ascii 的领域 西欧.北欧语言 大多使用 拉丁字符 由iso组织 制定iso-8859-1 ...
- app备案证明需要提供md5值和公钥的解决方案
现在app上架华为市场.小米市场.苹果市场等大型的应用商店,都需要提供国内的app备案证明.无论是安卓还是ios,都需要备案了. 但是问题是备案的时候需要填写app的bundle ID.公钥和MD5值 ...
- 【Hibernate】05 缓存与MySQL事务隔离
Cache 什么是缓存? 数据存储到数据库,是从内存中以流的方式写进[输出]到数据库,其效率并不是很高 - 所以在内存中暂存一部分数据,可以不以流的方式读取,效率是非常高的[相对于流来说] Hiber ...
- [VS Code扩展]写一个代码片段管理插件(一):介绍与界面搭建
@ 目录 VS Code扩展机制 项目搭建 创建UI元素 活动栏按钮 主边栏视图 主边栏工具栏按钮 侧边栏右键菜单 编辑器右键菜单 项目地址 [VS Code扩展]写一个代码片段管理插件(一):介绍与 ...
- 关于Isaac Gym的两个版本比较:IsaacGymEnvs/omni.isaac.gym
原文地址: https://zhuanlan.zhihu.com/p/590468555 重点: IsaacGymEnvs (IGE)和 omni.isaac.gym (OIG)是两个东西. 原文内容 ...