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的更多相关文章

  1. ZROI #364. 【2018普转提day18专题】嘤嘤嘤

    ZROI #364. [2018普转提day18专题]嘤嘤嘤 直接贴代码 具体见注释 #include<stdio.h> #include<cstring> #include& ...

  2. ZROI #365. 【2018普转提day18专题】嘤嘤嘤嘤

    ZROI #365. [2018普转提day18专题]嘤嘤嘤嘤 直接放代码 具体做法见注释 #include<stdio.h> #include<cstring> #inclu ...

  3. ZR普转提2

    ZR普转提2 A 谢谢刁神教我A题 刚开始读错题了,以为是一个不可做的数位DP,然后就暴力滚粗 直到问了问刁神,发现自己题意是错的 然后成了比较简单的题目 直接暴力枚举每一位填什么,剩下的位数的数字都 ...

  4. ZR9.8普转提

    ZR9.8普转提 A,B 打过的CF原题,不管了 C 确认过眼神,是我不会写的DP, 发现这个题目要求的过程类似与一个所有括号都不一样的括号匹配的过程 但是限制条件非常多,有点无从下手的感觉 我们设\ ...

  5. ZROI2018普转提day6t1

    传送门 分析 记录区间最大值,线段树上二分找比这个点大的最靠前位置即可 代码 #include<iostream> #include<cstdio> #include<c ...

  6. ZROI2018普转提day6t3

    传送门 分析 居然卡哈希数,万恶的出题人...... 感觉我这个方法似乎比较呆,我的代码成功成为了全网最慢的代码qwq 应该是可以直接哈希的 但由于我哈希学的不好又想练练线段树维护哈希,于是就写了个线 ...

  7. ZROI2018普转提day7t1

    传送门 分析 一道有意思的小题... 我们发现如果$(1,1)$为白色,则将其变为白色需要偶数次操作,而如果为黑色则需要奇数次操作 我们知道要让A赢需要奇数次操作,所以我们只需要判断$(1,1)$的颜 ...

  8. ZROI2018普转提day7t2

    传送门 分析 首先我们不难想到我们一定可以将每一个点分开算,然后看这个点被几个矩形包含 于是对于位置为$(i,j)$的点它被包含的次数为$i * (n-i+1) * j * (m-j+1)$ 这个式子 ...

  9. ZROI2018普转提day1t4

    传送门 分析 就是飞飞侠这道题...... 我们可以将这张图建成好几层,每一层可以向下一层的上下左右无代价移动,而对于每个点如果付b[i][j]的代价就可以走到比它高a[i][j]的层上.我们用这种方 ...

随机推荐

  1. 区块链入门到实战(37)之Solidity – 循环语句

    与其他语言类似,Solidity语言支持循环结构,Solidity提供以下循环语句. while do ... while for 循环控制语句:break.continue. Solidity – ...

  2. Windows servers 2008 环境下, DHCP的搭建。

    日常上网,客户端的主机都是使用DHCP动态分配的,家用的路由器就是内置了一个DHCP服务,所以每次分到的IP地址基本的都是192.168.x.x/24 网段的.不过家用的路由器最多只能连十台左右.那么 ...

  3. soso官方:搜索引擎的对检索结果常用的评测方法

    http://www.wocaoseo.com/thread-188-1-1.html       很久很久以前,搜索引擎还不象今天的百花齐放,人们对它的要求较低,只要它能把互连网上相关的网站搜出来, ...

  4. python_选择排序

    #选择排序 def insert_sort(li): for i in range (1,len(li)): # i表示摸到牌的下标 tem = li[i] j = i - 1 # j 是初始手中的牌 ...

  5. webpack 打包的具体步骤

    webpack打包的方法: 方法一 创建一个src文件夹(存放自己的代码),dist文件夹(打包到此文件夹) 2编写自己的代码,在src文件夹中创建一个主模块main.js和若干个js文件,将模块js ...

  6. 27倍性能之旅 - 以大底库全库向量召回为例谈Profiling驱动的性能优化

    问题 Problem kNN(k Nearest Neighbor)定义 给定一个查询向量,按照某个选定的准则(如欧式距离),从底库中选择

  7. 用Java写编译器(1)- 词法和语法分析

    词法和语法分析器构建 ANTLR简介 ANTLR全称ANother Tool for Languate Recognition,是基于LL(*)算法实现的语法分析器生成器和词法分析器生成器,由旧金山大 ...

  8. React状态管理相关

    关于React状态管理的一些想法 我最开始使用React的时候,那个时候版本还比较低(16版本以前),所以状态管理都是靠React自身API去进行管理,但当时最大的问题就是跨组件通信以及状态同步和状态 ...

  9. Fragment的跳转

    1. 设置主Fragment 其它fragment得到它就可以了. 1 val ft = fragmentManager?.beginTransaction() 2 val maiFrgmt = Ma ...

  10. python小白入门基础(二:变量)

    #变量:可以改变的量就是变量,实际上是由内存开辟的一块空间,临时存在内存中,以便后续代码使用.#作用:代指内存中某个地址中的内容. #1.变量的概念name = "王五"name ...