51nod1798 打怪兽2
51nod1078 3条不相交的路径
- 题目描述:
- 解题思路:
- 代码:
题目描述:
题目来源
解题思路:
我们发现题目实际上需要求的是对于所有的怪兽排列而言,总的打怪兽的个数。
观察题目性质,第i个怪兽的能量值是i-1。
意味这当我们能量到达i时,我们必须从前i+1只怪兽里打i只,这意味着有且仅有一只怪兽我们不打。
枚举这只不打的怪兽进行转移即可。
复杂度O(nlogn)
代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;typedef long long ll;void read(int &x) {x = 0; char c = getchar();while (c < '0' || c > '9') c = getchar();while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
}const int N = 5e5 + 100;
const int MOD = 1e9 + 7;int tree[N];void upd(int &a, int b) {a += b;if (a >= MOD) a -= MOD;
}void add(int id, int x) {for (; id > 0; id -= id & -id) upd(tree[id], x);
}int query(int id) {int ans = 0;for (; id < N; id += id & -id) upd(ans, tree[id]);return ans;
}int n, m, tp;
int sa[N], fac[N], has[N], num[N], res[N];int main() {//freopen("0.txt", "r", stdin);for (int i = fac[0] = 1; i < N; i++) fac[i] = 1LL * fac[i - 1] * i % MOD;read(n); read(m);for (int i = 1; i <= n; i++) read(sa[i]), has[i] = sa[i];sort(has + 1, has + n + 1);tp = unique(has + 1, has + n + 1) - has;for (int i = 1; i <= n; i++) sa[i] = lower_bound(has + 1, has + tp, sa[i]) - has;int ans = 0, now = 1;ll sum = has[sa[1]];add(sa[1], 1); res[sa[1]] = 1;for (int i = 2; i <= n; i++) {sum += has[sa[i]];if (sum - has[sa[i]] <= m) {int r = query(1);upd(res[sa[i]], r);add(sa[i], r);}while (now < tp && sum - has[now] > m) {add(now, MOD - res[now]);res[now] = 0;now++;}upd(ans, 1LL * query(1) * fac[n - i + 1] % MOD);}if (sum <= m) upd(ans, query(1));printf("%d\n", ans);return 0;
}
51nod1798 打怪兽2相关推荐
- 51 Nod 1670 打怪兽
1670 打怪兽 lyk在玩一个叫做"打怪兽"的游戏. 游戏的规则是这样的. lyk一开始会有一个初始的能量值.每次遇到 ...
- 全民打怪兽全民战场恐惧流伙伴实测
[文章来源 元芳体 更多资讯>>>点击进入] 各位小伙伴们,小编今天为大家带来的是全民打怪兽全民战场恐惧流实测效果解析,在狐狸肆虐.蕾娜不死的现今,似乎战场也被那些主流小伙伴所霸占, ...
- OC小游戏之英雄打怪兽
编写了一个在Xcode控制台上运行的简单小游戏,本来打算写到100关(⊙o⊙)-后来发现没有好的idea,就先写了2关,目的在于练练手,理清类与类之间的关系.有好的想法和有空的话会慢慢写到100关.游 ...
- 基于JAVA的类与对象做出的英雄打怪兽程序
一.英雄打怪兽 基于Java类与对象的调用而做出的程序. 二.实例代码 1.主函数 代码如下: menu(); 2.menu函数 代码如下: Scanner scanner = new Scanner ...
- c语言英雄打怪兽掉箭题目,荒野乱斗:“打怪兽”有诀窍,英雄选择尤其重要...
原标题:荒野乱斗:"打怪兽"有诀窍,英雄选择尤其重要 荒野乱斗更新版本之后,有一个新的模式引起了三哥的注意.因为有"首领之战"的经验,三哥第一时间就尝试了这个新 ...
- Unity引擎Fps打怪兽小游戏
自制了一款Unity的枪战打怪兽小游戏 游戏演示视频已上传至B站:https://www.bilibili.com/video/BV1wt4y187ic 一些截图展示: 可以找博主索要源码~
- 用Python做一个奥特曼打怪兽的小游戏
话不多说,往下看吧! 引入需要的模块 from sprites import * from pygame import mixer 设置页面格式(宽高等等) width,height = 800,60 ...
- 经典打怪兽小游戏分析
这是我第一次写代码类的博客,也是我上学的第一个项目,希望各位朋友们能给小的点个赞什么的,有什么问题的欢迎指正 ...代码随意使用,只求能在用的时候给个赞... 打怪兽小游戏 GS类 public cl ...
- java模板/策略模式打怪兽
目录 小故事: 一起打怪兽 模板&策略模式 常规方式 模板模式 策略模式 相似: 差异: 小故事: 一起打怪兽 有个记者去光之国采访一群奥特曼,他问迪迦奥特曼:"你每天都干什么?&q ...
最新文章
- Stm32学了好久了,为什么做项目还是力不从心?
- sql server标识一个字符在这一列中是第几次出现
- JQuery实现一个简单的鼠标跟随提示效果
- PAT甲级1025 PAT Ranking:[C++题解]排序、结构体、排名
- 精准扶贫电商重整流通-农业大健康·李玉庭: 谋定功能农产品
- java静态类和非静态类的区别_Java中静态内部类和非静态内部类到底有什么区别?...
- 【转】EntityFramework使用Code First模式创建数据库控制生成单数形式的表名
- c# 路径下的最近文件夹_C#8.0的两个有趣的新特性以及gRPC
- xml转换为json格式时,如何将指定节点转换成数组 Json.NET
- 计算机控制技术电子课件,电子科技大学计算机控制技术课件04.ppt
- 填坑---override、overload、overwrite
- 做到这五点,才算是好用户体验
- 东信杯题解详细版本附带代码(还有日常琐碎bb)
- 静态路由原理及配置(8)
- 互联网企业掀起安全大战 各显神通
- 关于H5页面在iPhoneX适配(转)
- ChromeFK插件推荐系列二十三:在线文字转语音/语音朗读插件推荐
- 程序员如何培养领导力
- Android 平台下的原生 Markdown 解析器
- 用python玩转数据测试与作业_用python玩转数据-实验5