题目链接


题目大意:

有个蚂蚁从000号点要到xn+1x_n+1xn​+1的位置。
在x0,x1,x2,x3,.....,xn+1,xnx_0,x_1,x_2,x_3,.....,x_{n+1},x_nx0​,x1​,x2​,x3​,.....,xn+1​,xn​的传送阵,每个xix_ixi​传送阵可以把你传送回yi(yi<xi)y_i(y_i<x_i)yi​(yi​<xi​)位置。但是每个传送阵有两种转态

  1. 0:0:0:这个传送阵无法传送,但是你经过它会变成状态111
  2. 1:1:1:这个传送阵正常工作,工作完之后变成状态000

问你需要多少时间走到xn+1x_n+1xn​+1


解题思路:

  1. 首先我们当前在pospospos位置,那么所有xi<posx_i<posxi​<pos的传送阵状态都变成了111
  2. 现在我们现在设dp[i]dp[i]dp[i]为假设第iii个传送阵为111,并且再次回到位置iii的时间!
  3. 那么转移就很明显了dp[i]=∑k=idxi−1dp[k]dp[i]=\sum_{k=idx}^{i-1}dp[k]dp[i]=∑k=idxi−1​dp[k]
  4. idx是第一个位置≤yi的传送阵位置idx是第一个位置\leq y_i的传送阵位置idx是第一个位置≤yi​的传送阵位置
  5. 最终答案就是ans=xn+1+∑i=1ndp[i]×[state[i]==1]ans=x_n+1+\sum_{i=1}^{n}dp[i]\times[state[i]==1]ans=xn​+1+∑i=1n​dp[i]×[state[i]==1]

AC代码:

#include <bits/stdc++.h>
#define mid ((l + r) >> 1)
#define Lson rt << 1, l , mid
#define Rson rt << 1|1, mid + 1, r
#define ms(a,al) memset(a,al,sizeof(a))
#define log2(a) log(a)/log(2)
#define lowbit(x) ((-x) & x)
#define IOS std::ios::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define INF 0x3f3f3f3f
#define LLF 0x3f3f3f3f3f3f3f3f
#define f first
#define s second
#define endl '\n'
using namespace std;
const int N = 2e6 + 10, mod = 998244353;
const int maxn = 500010;
const long double eps = 1e-5;
const int EPS = 500 * 500;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef pair<ll,ll> PLL;
typedef pair<double,double> PDD;
template<typename T> void read(T &x)
{x = 0;char ch = getchar();ll f = 1;while(!isdigit(ch)){if(ch == '-')f*=-1;ch=getchar();}while(isdigit(ch)){x = x*10+ch-48;ch=getchar();}x*=f;
}
template<typename T, typename... Args> void read(T &first, Args& ... args)
{read(first);read(args...);
}
int n;
int x[maxn], state[maxn];
ll sum[maxn], q[maxn];
int main() {IOS;cin >> n;for(int i = 1; i <= n; ++ i) {int y;cin >> x[i] >> y >> state[i];int j = lower_bound(x+1,x+i+1,y)-x;q[i] = ((sum[i-1] - sum[j-1] + mod) % mod + x[i] - y) % mod;sum[i] = (sum[i-1] + q[i]) % mod;}ll ans = 0;for(int i = 1; i <= n; ++ i) if(state[i]) {ans = (ans + q[i]) % mod;}cout << (ans + x[n] + 1) % mod;return 0;
}

思维dp ---- 复杂状态找中间状态作为dp状态 1552F - Telepanting相关推荐

  1. 动态规划: dp+递推——确定动态矩阵dp含义,确定每个状态下面临的选择和对结果值影响,选择符合题意的作为结果存储在dp中

    1.动态规划:每一个状态一定是由之前的状态推导出来的,通过总结归纳发现递推关系 2.解决动态规划问题的步骤: 确定dp数组(dp table)以及下标的含义: 每个单元内 题目所求的值,一维.二维 确 ...

  2. nyoj995硬币找零(dp)

    硬币找零 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 3 描述 在现实生活中,我们经常遇到硬币找零的问题,例如,在发工资时,财务人员就需要计 算最少的找零硬币数,以便他们 ...

  3. 找规律/数位DP HDOJ 4722 Good Numbers

    题目传送门 1 /* 2 找规律/数位DP:我做的时候差一点做出来了,只是不知道最后的 is_one () 3 http://www.cnblogs.com/crazyapple/p/3315436. ...

  4. [SOCI2005]最大子矩阵(DP) + [JXOI2018]守卫(DP) + [CQOI2016]手机号码(数位DP)[各种DP专练]

    DP专练博客 DP专练 T1:最大子矩阵 题目 题解 代码实现 T2:守卫 题目 题解 代码实现 T3:手机号码 题目 题解 代码实现 T1:最大子矩阵 题目 这里有一个n*m的矩阵,请你选出其中k个 ...

  5. TKO 6-2 DP入门之2084(基本dp之数塔问题)

    数塔 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之 ...

  6. cmd 找不到java power 可以_高三总是找不到学习状态?这几个方法一定可以帮到你!...

    众所周知,高中生学习压力大,因为学科增加,知识量大,难度加深,常常让很多学生找不到学习状态. 尤其进入高三阶段,随着高考的一步步临近,同学们进入到紧张的复习备考状态,你追我赶,于是有些同学感到竞争激烈 ...

  7. 【POJ - 3744】Scout YYF I(概率dp,矩阵快速幂优化dp)

    题干: 题目大意: 在一条不满地雷的路上(无限长),你现在的起点在1处.在N个点处布有地雷,1<=N<=10.地雷点的可能坐标范围:[1,100000000]. 每次前进p的概率前进一步, ...

  8. 【HDU - 6447】YJJ's Salesman(降维dp,树状数组优化dp)

    题干: YJJ is a salesman who has traveled through western country. YJJ is always on journey. Either is ...

  9. 【BZOJ - 3036】绿豆蛙的归宿(概率DAG图dp,拓扑排序,概率dp,期望的线性性)

    题干: 随着新版百度空间的下线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归宿. 给出一个有向无环的连通图,起点为1终点为N,每条边都有一个长度.绿豆蛙从起点出发,走向终点. 到达每一个顶点时,如 ...

最新文章

  1. 腾讯35亿美元抄底收购搜狗,产品张小龙和技术王小川双剑合璧
  2. 【Android 逆向】Dalvik 函数抽取加壳 ( 类加载流程分析 | DexPathList#findClass 函数分析 | DexFile#loadClassBinaryName 函数 )
  3. ubuntu 14.04 安装qq 2015
  4. 进程和线程(通信方式)、调度算法(6种)
  5. Android 获取设备ID,手机厂商,运营商,联网方式,获取系统语言,获取时区
  6. solidity 十六进制字符串转十六进制bytes
  7. Kaggle新赛:自动检测赛场上的头盔撞击事件
  8. nextJS和vueJS及Material-UI 简易搭建
  9. 扫描40亿可路由的 IPv4 地址后发现这些打印机的 IPP 端口遭暴露
  10. adalm pluto_Apache Pluto和Velocity集成教程示例
  11. 注册(六)之有效期过小
  12. 小米蓝牙耳机驱动_小米降噪项圈蓝牙耳机上手
  13. linux 怎么格式化u盘写保护,u盘写保护怎么去掉
  14. 职场领导想逼你走时,他会用哪些奇招逼你走?
  15. CF 592D(Super M-虚树直径)
  16. (官网)虚幻3--基础游戏快速入门
  17. 拓嘉启远电商:拼多多编写标题怎样才可以避开违规
  18. SQL 语句:不得使用外键与级联,一切外键概念必须在应用层解决
  19. android蓝牙打印机打印图片,如何使用打印机(通过蓝牙打印)从Android设备打印图像和一些数据?...
  20. voxsrc20_std_00-How many kinds of topology used in speaker recognition?

热门文章

  1. Java环境及Eclipse(MyEclipse)安装
  2. 使用PyTorch进行情侣幸福度测试指南
  3. 一文读懂CV中的注意力机制
  4. 多目标跟踪(MOT)入门
  5. 【OpenCV 4开发详解】保存和读取XML和YMAL文件
  6. MVC Html.ActionLink Area 链接中含区域的页面之间的跳转
  7. UIWebView滚动监听
  8. Linux 交换空间管理和技巧
  9. oracle 监听数据交互
  10. Java Swing 树状组件JTree的使用方法【图】