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相关推荐

  1. 51 Nod 1670 打怪兽

                                  1670 打怪兽 lyk在玩一个叫做"打怪兽"的游戏. 游戏的规则是这样的. lyk一开始会有一个初始的能量值.每次遇到 ...

  2. 全民打怪兽全民战场恐惧流伙伴实测

    [文章来源 元芳体 更多资讯>>>点击进入] 各位小伙伴们,小编今天为大家带来的是全民打怪兽全民战场恐惧流实测效果解析,在狐狸肆虐.蕾娜不死的现今,似乎战场也被那些主流小伙伴所霸占, ...

  3. OC小游戏之英雄打怪兽

    编写了一个在Xcode控制台上运行的简单小游戏,本来打算写到100关(⊙o⊙)-后来发现没有好的idea,就先写了2关,目的在于练练手,理清类与类之间的关系.有好的想法和有空的话会慢慢写到100关.游 ...

  4. 基于JAVA的类与对象做出的英雄打怪兽程序

    一.英雄打怪兽 基于Java类与对象的调用而做出的程序. 二.实例代码 1.主函数 代码如下: menu(); 2.menu函数 代码如下: Scanner scanner = new Scanner ...

  5. c语言英雄打怪兽掉箭题目,荒野乱斗:“打怪兽”有诀窍,英雄选择尤其重要...

    原标题:荒野乱斗:"打怪兽"有诀窍,英雄选择尤其重要 荒野乱斗更新版本之后,有一个新的模式引起了三哥的注意.因为有"首领之战"的经验,三哥第一时间就尝试了这个新 ...

  6. Unity引擎Fps打怪兽小游戏

    自制了一款Unity的枪战打怪兽小游戏 游戏演示视频已上传至B站:https://www.bilibili.com/video/BV1wt4y187ic 一些截图展示: 可以找博主索要源码~

  7. 用Python做一个奥特曼打怪兽的小游戏

    话不多说,往下看吧! 引入需要的模块 from sprites import * from pygame import mixer 设置页面格式(宽高等等) width,height = 800,60 ...

  8. 经典打怪兽小游戏分析

    这是我第一次写代码类的博客,也是我上学的第一个项目,希望各位朋友们能给小的点个赞什么的,有什么问题的欢迎指正 ...代码随意使用,只求能在用的时候给个赞... 打怪兽小游戏 GS类 public cl ...

  9. java模板/策略模式打怪兽

    目录 小故事: 一起打怪兽 模板&策略模式 常规方式 模板模式 策略模式 相似: 差异: 小故事: 一起打怪兽 有个记者去光之国采访一群奥特曼,他问迪迦奥特曼:"你每天都干什么?&q ...

最新文章

  1. Stm32学了好久了,为什么做项目还是力不从心?
  2. sql server标识一个字符在这一列中是第几次出现
  3. JQuery实现一个简单的鼠标跟随提示效果
  4. PAT甲级1025 PAT Ranking:[C++题解]排序、结构体、排名
  5. 精准扶贫电商重整流通-农业大健康·李玉庭: 谋定功能农产品
  6. java静态类和非静态类的区别_Java中静态内部类和非静态内部类到底有什么区别?...
  7. 【转】EntityFramework使用Code First模式创建数据库控制生成单数形式的表名
  8. c# 路径下的最近文件夹_C#8.0的两个有趣的新特性以及gRPC
  9. xml转换为json格式时,如何将指定节点转换成数组 Json.NET
  10. 计算机控制技术电子课件,电子科技大学计算机控制技术课件04.ppt
  11. 填坑---override、overload、overwrite
  12. 做到这五点,才算是好用户体验
  13. 东信杯题解详细版本附带代码(还有日常琐碎bb)
  14. 静态路由原理及配置(8)
  15. 互联网企业掀起安全大战 各显神通
  16. 关于H5页面在iPhoneX适配(转)
  17. ChromeFK插件推荐系列二十三:在线文字转语音/语音朗读插件推荐
  18. 程序员如何培养领导力
  19. Android 平台下的原生 Markdown 解析器
  20. 用python玩转数据测试与作业_用python玩转数据-实验5

热门文章

  1. vue绑定class样式的方式
  2. 今天给大家分享使用Scratch做一个满天星,鼠标点击就有星星!
  3. uniApp 指纹识别对应代码
  4. java中使用模板设计模式
  5. pixi.js # 中文版基础教程
  6. 数据库_触发器和事件
  7. 2021肖秀荣基础班
  8. 基础图像处理---图像读写/保存与基础图像绘制框架(纯C代码,不依赖任何第三方库)
  9. Reuired reowest part ‘fie‘ is not oresent
  10. 关于iOS开源框架源代码解析的文章