原题链接:登录—专业IT笔试面试备考平台_牛客网

把a[i]先排序(带着下标排),然后从小到大每次先找下标在范围之内 [ i − b i , i ) 的所有种数,然后加一就是以a[i]为最后一个元素的所有种数。

因为数据可能会很大,每次更新树状数组中的值的时候记得取模。如果有相减的时候,记得要加mod再取模。

AC代码:

#include<bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
typedef pair<int, int> PII;
const double pi = acos(-1.0);
#define rep(i, n) for (int i = 1; i <= (n); ++i)
#define rrep(i, n) for (int i = n; i >= (1); --i)
typedef long long ll;
#define sqar(x) ((x)*(x))#include<bits/stdc++.h>
namespace GenHelper
{int z1,z2,z3,z4,z5,u,res;int get(){z5=((z1<<6)^z1)>>13;z1=((int)(z1&4294967)<<18)^z5;z5=((z2<<2)^z2)>>27;z2=((z2&4294968)<<2)^z5;z5=((z3<<13)^z3)>>21;z3=((z3&4294967)<<7)^z5;z5=((z4<<3)^z4)>>12;z4=((z4&4294967)<<13)^z5;return (z1^z2^z3^z4);}int read(int m) {u=get();u>>=1;if(m==0)res=u;else res=(u/2345+1000054321)%m;return res;}void srand(int x){z1=x;z2=(~x)^(0x23333333);z3=x^(0x12345798);z4=(~x)+51;u = 0;}
}
using namespace GenHelper;
using namespace std;
const int N=2e6+7,mod=1e9+7;
int a[N],b[N];
PII p[N];
int n,seed;int tree[N];int lowbit(int x){return x&(-x);
}inline void update(int p, int sum){while (p <= n){tree[p] = (tree[p] + sum) % mod;p += lowbit(p);}
}inline int query(int p){int ans = 0;while (p > 0){ans = (ans + tree[p]) % mod;p -= lowbit(p);}return ans;
}int main(){scanf("%d %d",&n,&seed);srand(seed);for(int i=1;i<=n;i++){a[i]=read(0),b[i]=read(i);}rep(i, n) p[i] = {a[i], i};sort(p + 1, p + 1 + n);rep(i, n){int id = p[i].second;int sum = (query(id - 1) - query(id - b[id] - 1) + 1 + mod) % mod; //只有当时这个数也是一种update(id, sum);}printf("%d", query(n));return 0;
}

小沙的remake(牛客)排序+ 树状数组 + dp相关推荐

  1. HDU-5542-The Battle of Chibi【树状数组+dp】

    HDU-5542-The Battle of Chibi[树状数组+dp] Time Limit: 6000/4000 MS (Java/Others) Memory Limit: 65535/655 ...

  2. HDU - 5542 The Battle of Chibi(树状数组+DP)

    UVA - 12983 The Battle of Chibi(树状数组+DP) HDU - 5542 The Battle of Chibi(树状数组+DP) #include<cstdio& ...

  3. Bzoj 4548: 小奇的糖果(双向链表+排序+树状数组)

    以下内容来自ShallWe's Blog 题目 4548: 小奇的糖果 Description 有\(N\)个彩色糖果在平面上.小奇想在平面上取一条水平的线段,并拾起它上方或下方的所有糖果.求出最多能 ...

  4. M元上升子序列【树状数组+dp】

    多元组-牛客网 题解 ac代码 #include<iostream> #include<cstring> #include<algorithm> #include& ...

  5. hdu 6447YJJ's Salesman 离散化+树状数组+DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6447 因为图中点的坐标值过大,达到1e9.然而只有1e5个点.所以先将其离散化.并按照<x.y& ...

  6. 【USACO】奶牛抗议 树状数组+dp

    题目描述 约翰家的 N 头奶牛正在排队游行抗议.一些奶牛情绪激动,约翰测算下来,排在第 i 位的奶牛 的理智度为 A i ,数字可正可负. 约翰希望奶牛在抗议时保持理性,为此,他打算将这条队伍分割成几 ...

  7. P3287-[SCOI2014]方伯伯的玉米田【二维树状数组,dp】

    正题 题目链接:https://www.luogu.com.cn/problem/P3287 题目大意 nnn个玉米高度不同,可以选择kkk个区间拔高111个高度,求最长不降子序列长度. 解题思路 显 ...

  8. HDOJ5542-The Battle of Chibi【树状数组,dp】

    正题 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5542 题目大意 求序列A有多少个长度为M的递增子序列. 解题思路 用fi,jfi,jf_{i,j ...

  9. CodeForces 314C 树状数组 + dp

    //CodeForces 314C //分析:相当于求给定序列的不降子序列的个数,从一个空序列开始将得到的不降子序列不断的延长是典型的做法,则dp[i]表示以第 i 个元素结尾的序列 //思路:O(n ...

最新文章

  1. P4145 上帝造题的七分钟2 / 花神游历各国(线段树区间开平方)
  2. 报名 | 腾讯量子实验室发起Alchemy竞赛,推动分子性质的AI预测研发
  3. torch 多进程队列 问题
  4. JavaScript倒计时
  5. Chapter 1. Introduce
  6. python写一个自动登录脚本_Python 实现自动登录+点击+滑动验证功能
  7. SpringBoot2.0 Actuator 监控参数说明
  8. 修改WordPress主题,中文显示乱码的解决办法
  9. 升哲科技 x 百度智能云丨智能全感知系统,挽救 127 个生命的城市安全方案
  10. mysql怎么打开php文件_如何打开php文件
  11. 新建文件夹时找不到该项目
  12. linux常用的解压缩文件的命令
  13. mac 显示及隐藏文件的方法
  14. 记一次Maya使用入门
  15. 毕业设计必备案例:Python开发桌面程序——各种版本学生信息管理系统
  16. wow Warlock shushia PVP DZ
  17. 客户体验模型|客户体验分析的四个关键要素
  18. 【Java】自定义异常
  19. 弧齿锥齿轮零件图_弧齿锥齿轮加工原理
  20. JavaScript事件 DOMNodeInserted DOMNodeRemoved

热门文章

  1. 计算机用户分配盘符,盘符划分不求人 Win7硬盘分区多面看
  2. 聊聊职场 - 个人发展
  3. 基本从零开始的网页脚本编写学习
  4. 高德地图完整功能的html,揭秘高德地图八大不为人知的强大功能
  5. 卷积神经网络中特征图大小计算公式总结
  6. win10搜索服务器文件慢,如何解决win10搜索速度很慢的情况呢?|win10加快系统搜索速度的方法...
  7. 学生用计算机怎么没音效,电脑突然没声音了
  8. windows环境下如何进入到mysql命令行界面
  9. 如何让IIS支持php网页
  10. python爬取豆瓣书籍_Python利用lxml模块爬取豆瓣读书排行榜的方法与分析