06day1
Rabbit Number
枚举
【问题描述】
设 S(N)表示 N 的各位数字之和,如 S(484)=4+8+4=16,S(22)=2+2=4。如果一个正整数 x满足 S(x*x)=S(x)*S(x),我们称 x 为 Rabbit Number。比方说,22 就是一个 Rabbit Number,因为 S(484)=S(22)*S(22)。
现在,给出一个区间[L,R],求在该区间内的 Rabbit Number 的个数。
【输入】
输入仅一行,为空格隔开的两个数 L 和 R。
【输出】
输出仅一行一个整数,表示所求 Rabbit Number 的个数。
【数据规模】
1≤L≤R≤10^9
【解题过程】
看到这么大的数据范围第一反应是找规律。于是先开始手工推,然后暴力跑了 10^9 内的所有 RabbitNumber,发现每一位只可能取 0,1,2,3,而数据范围最多是 9 位数(10^9 这个数字可以单独考虑),那么就无脑爆搜了,复杂度 O(4^9)。
初次提交 100 分。
Play with Power
动态规划
【问题描述】
Masha 和 Stas 正在玩一个游戏。在游戏的开始,给出一个定值 N,同时有两个正整数 A 和 B,初始时满足 A^B ≤N。Masha 先手。每一回合,玩家要将 A 和 B 的其中一个数加上 1,但不能令到 A^B >N,否则该玩家输。
现在,Masha 想知道假如两人都使用最优策略,对于一个特定的 N,不同的 A、B 的初始值谁将获胜呢?
【输入】
输入第一行为一个正整数 N。
输入第二行为一个正整数 T,表示测试数据个数。
下面 T 行,每行有两个正整数 Ai、Bi,描述了一组测试数据<Ai,Bi,N>,含义如题目描述。
【输出】
对每组数据输出一行。如果先手 Masha 获胜,输出"Masha";如果后手 Stas 获胜,输出 Stas;
如果平手则输出"Missing"(不用输出引号)。
【数据规模】
对 30%的数据,有 1≤N≤2000;
对 100%的数据,有1≤N≤10^8
1≤T≤100
1≤Ai,1≤Bi,Ai Bi ≤N
【解题过程】
这种题目很明显是动规嘛。
用 f(i, j) 表示当 A=i, B=j 时先手的结果,用 0,1,2 分别表示必败、必胜、平局,则 f(i, j) 可以由 f(i+1, j) 和 f(i, j+1) 转移而来,记 v1=f(i+1, j), v2=f(i, j+1),则
f(i, j)=0 当且仅当 v1=1 且 v2=1
f(i, j)=1 当且仅当 v1=0 或 v2=0
f(i, j)=2 除上所述的其他情况以及i^j>N的情况
注意:
- 当 i=1 时 f(i, j) 必然等于 2
- 判断 i^j>N 的过程中,i^j 可能会爆 long long,所以在求幂的过程中实时判断是否已经超过了 N;
- 对于大于 sqrt(N) 的数 i,对应的 j 只能取 1,所以可以直接根据N-i 的奇偶性判断,否则用记忆化搜索可能会爆栈。
另外,这道题的标程是错的。题目里并没有说 A, B 要小于等于 N,而标程里却加了这个限制,导致第一次提交 0 分。
Color the Axis
线段树
【问题描述】
在一条数轴上有 N 个点,分别是 1~N。一开始所有的点都被染成黑色。接着我们进行 M 次操作,第 i 次操作将[Li,Ri]这些点染成白色。请输出每个操作执行后剩余黑色点的个数。
【输入】
输入一行为 N 和 M。下面 M 行每行两个数 Li、Ri。
【输出】
输出 M 行,为每次操作后剩余黑色点的个数。
【数据规模】
对于 30%的数据,有 1≤N≤2000,1≤M≤2000;
对于 100%的数据,有 1≤Li≤Ri≤N≤200000,1≤M≤200000。
【解题过程】
lazy-tag
另外,照 LZW 大神的说法,比 lazy-tag 更懒的做法是,不下传标记(因为只有插入操作),操作时如果已有标记则直接返回。
初次提交 100 分。
06day1的更多相关文章
随机推荐
- Java多线程——<五>后台线程(daemon)
一.后台线程(守护线程) 学一个东西,最重要的一点就是,为什么要用它? 后台线程区别于普通线程,普通线程又可以称为用户线程,只完成用户自己想要完成的任务,不提供公共服务.而有时,我们希望编写一段程序, ...
- 从String类看写C++ class需要注意的地方
#include <iostream> #include <string.h> using namespace std; class String { char* m_data ...
- 01-06-01【Nhibernate (版本3.3.1.4000) 出入江湖】事务
Nhibernate事务的使用: public void Add(Customer customer) { ISession session = _sessionManager.GetSession( ...
- HTTP请求报文与响应报文
http://docs.telerik.com/fiddler/KnowledgeBase/HTTP HTTP请求报文与响应报文 HTTP http://www.w3.org/Protocols/rf ...
- Unity3D脚本中文系列教程(八)
◆ static var matrix : Matrix4x4 描述:设置用于渲染所有gizmos的矩阵. 类方法 ◆ Static function DrawCube(center:Vector3, ...
- Python 资源
转:http://www.360doc.com/content/16/0308/14/31385575_540482688.shtml 本页面是俺收集的各种 Python 资源,不定期更新. 下面列出 ...
- Python中Lambda, filter, reduce and map 的区别
Lambda, filter, reduce and map Lambda Operator Some like it, others hate it and many are afraid of t ...
- Linux资源监控命令/工具(网络)
1.手动/自动设定与启动/关闭IP参数:ifconfig,ifup,ifdown 这三个指令的用途都是在启动网络接口,不过,ifup与ifdown仅能就/etc/sysconfig/netw ...
- QString->string->wstring->LPCWSTR
QFileInfo info("./records.db"); std::string str = info.absoluteFilePath().toStdString(); / ...
- servlet会话技术:Session
问题的引出 1.在网上购物时,张三和李四购买的商品不一样,他们的购物车中显示的商品也不一样,这是怎么实现的呢? 2.不同的用户登录网站后,不管该用户浏览该网站的那个页面,都可以显示登录人的名字,同时可 ...