普转提Day2
T1
给定一个区间,求这个区间中只有一个数字与其他数组不相同的数的个数。
给出的区间范围较大,但是要求的数比较少。所以我的想法是这样的:因为这些数只有一个数字和每个数字都相同的数不同,所以考虑将所有数字都相同的数处理出来(不算0总共有126个)。那么每次枚举这些数,将其中的一个数字改掉,再去判断更改后的数字是否在区间内,是的话就累计一下答案,最后再单独处理*00000...的情况。但是我在预处理数的时候最后一组忘记处理出来了,而且在开头数字没有处理好,得分80.
范围<=1e16
T2
给出一个只包含大写字母的字符串,求ABC的出现次数相同的非空连续子串中的个数。
先求出字符A,B,C出现的前缀和,设为a,b,c。当a[i]-b[i]=a[j]-b[j]且b[i]-c[i]=b[j]-c[j]时,即是一种情况。枚举每个位置i,那么前面有多个j可能与i匹配,那么我们只需要将map的二元组(a[i]-b[i]和b[i]-c[j])存起来,并累计答案即可。注意要讲map的初值0,0赋值为1.然而我觉得只有ABC三种字符,得分20.
字符串长度<=1e6
T3
给出di个数字i,将这些数字和若干个0(0可以不用)组合后被11整除,这个数至少需要多少位。
有一个数学结论:一个数的奇数位之和-偶数位之和能被11整除,那么这个数就能被11整除。
由这个结论出发,考虑数位dp,设f[i][j][k]表示已经用了i个数,余数为j,奇数位上放了k个数的可行性。
f[i][j][k+1]|=f[i-1][(j+num[i])%11][k], f[i][j][k]|=f[i-1][(f-num[i]+11)%11][k].(num[i]要用到的第i个数,也就是将di拆开了)
最后输出时只要找到一个f[n][11][i],那么这个状态对答案的贡献有两种情况,一是奇数位的数与偶数位一样多,那么就是i<<1.如果奇数位多,则是(i<<1)-1.显然不存在偶数位多的情况(因为存在就不可能是最优值).
sigma d[i] <= 100
T4
有n个怪,每个怪有一个生命值hi,有m点能量,每次可以选举如下任意一次操作:1.使其中的一个hi--;2.消耗一点能量,使其中的hi-=2;3.消耗一点能量,是每一个hi--.每次操作完毕后剩下生命值比0打的所以怪物都会造成一点伤害,求受到的伤害最小值。
显然我们要将hi从小到大排序。有一个很明显的贪心策略是有能量一定先把能量用掉,当当前打的这个怪只剩一点生命值或怪的数量大于3时,肯定是用群攻来的更赚;否则就用重击(就是操作2),能力用完后就按照血量值从小到大把怪物一个一个安排就好了。时间复杂度O(NlogN).
n<=1e5,m<=100.
普转提Day2的更多相关文章
- ZROI #364. 【2018普转提day18专题】嘤嘤嘤
ZROI #364. [2018普转提day18专题]嘤嘤嘤 直接贴代码 具体见注释 #include<stdio.h> #include<cstring> #include& ...
- ZROI #365. 【2018普转提day18专题】嘤嘤嘤嘤
ZROI #365. [2018普转提day18专题]嘤嘤嘤嘤 直接放代码 具体做法见注释 #include<stdio.h> #include<cstring> #inclu ...
- ZR普转提2
ZR普转提2 A 谢谢刁神教我A题 刚开始读错题了,以为是一个不可做的数位DP,然后就暴力滚粗 直到问了问刁神,发现自己题意是错的 然后成了比较简单的题目 直接暴力枚举每一位填什么,剩下的位数的数字都 ...
- ZR9.8普转提
ZR9.8普转提 A,B 打过的CF原题,不管了 C 确认过眼神,是我不会写的DP, 发现这个题目要求的过程类似与一个所有括号都不一样的括号匹配的过程 但是限制条件非常多,有点无从下手的感觉 我们设\ ...
- ZROI2018普转提day6t1
传送门 分析 记录区间最大值,线段树上二分找比这个点大的最靠前位置即可 代码 #include<iostream> #include<cstdio> #include<c ...
- ZROI2018普转提day6t3
传送门 分析 居然卡哈希数,万恶的出题人...... 感觉我这个方法似乎比较呆,我的代码成功成为了全网最慢的代码qwq 应该是可以直接哈希的 但由于我哈希学的不好又想练练线段树维护哈希,于是就写了个线 ...
- ZROI2018普转提day7t1
传送门 分析 一道有意思的小题... 我们发现如果$(1,1)$为白色,则将其变为白色需要偶数次操作,而如果为黑色则需要奇数次操作 我们知道要让A赢需要奇数次操作,所以我们只需要判断$(1,1)$的颜 ...
- ZROI2018普转提day7t2
传送门 分析 首先我们不难想到我们一定可以将每一个点分开算,然后看这个点被几个矩形包含 于是对于位置为$(i,j)$的点它被包含的次数为$i * (n-i+1) * j * (m-j+1)$ 这个式子 ...
- ZROI2018普转提day1t4
传送门 分析 就是飞飞侠这道题...... 我们可以将这张图建成好几层,每一层可以向下一层的上下左右无代价移动,而对于每个点如果付b[i][j]的代价就可以走到比它高a[i][j]的层上.我们用这种方 ...
随机推荐
- A Review on Generative Adversarial Networks: Algorithms, Theory, and Applications
1 Introduction GANs由两个模型组成:生成器和鉴别器.生成器试图捕获真实示例的分布,以便生成新的数据样本.鉴别器通常是一个二值分类器,尽可能准确地将生成样本与真实样本区分开来.GANs ...
- Hello,Vue
Vue版本 Vue完整版 有编译器compiler,体积大功能多,可以直接把html字符串变成DOM节点 视图,此处为html字符串,写在index.html里或者写在new Vue构造选项templ ...
- java项目的心得,java项目的代码层次的架构划分
java项目使用的架构是ssm(Spring+SpringMVC+MyBatis). 一.后台代码一般分三层,Controller,Service,Dao. 1.Controller层是对前端或者接口 ...
- C#串口通讯,复制粘贴就可用,仅仅介绍怎样最快的搭建一个串口通讯,异常拦截等等需要自己加上
using System; using System.Collections.Generic; using System.IO.Ports; using System.Text; //串口通讯类 pu ...
- Kubernetes入门(二)——Dashboard 安装
Kubernetes集群搭建完成后,可以通过命令行方式可以了解集群资源的使用情况,但是这种方式比较笨拙且不直观,因此考虑给集群安装Dashboard,这样能更直观了解集群状态.本文Dashboard的 ...
- [状压DP]P1441 题解 砝码称重
前置知识:状压DP 洛谷传送门 emm....看到题目,我第一个想到的就是枚举.暴力大法好! 具体怎么枚举?当然是子集枚举啦!枚举出每一个可能的砝码选择方案.对于每一个合法的(也就是选取数量等于\(n ...
- 力扣Leetcode 11. 盛最多水的容器
盛最多水的容器 给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0).找 ...
- RabbitMQ配置文件(rabbitmq.conf)
rabbitmq.conf配置文件示例: #====================================== #RabbitMQ经纪人部分 #======================= ...
- webpack打包初始入门教程
Webpack 是一个前端资源加载/打包工具.它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源. 从图中我们可以看出,Webpack 可以将多种静态资源 js.css ...
- Spring源码学习(六)-spring初始化回调方法源码学习
1.spring官方指定了三种初始化回调方法 1.1.@PostConstruct.@PreDestory 1.2.实现 InitializingBean DisposableBean 接口 1.3. ...