zoukankan      html  css  js  c++  java
  • 停不下来的团长奥尔加 题解

    众所周知,OIer每天都在考试,而考试十分消耗rp。近期,一位Orzer竟然在考试的时候突然开始笑,一直停不下来,这究竟是怎么一回事呢?快和小编一起来看一看吧

    自从看了这个题面,某Orzer看一句笑10分钟,脑子里一直在循环播放卡其脱离太和希望之花,根本停不下来,最后竟然活活笑死,直接爆零!网友直呼这道题兼职难到爆!
    今天,我们又学习了一种新的题目,这种题目的难点不在转化,不在构造,竟然就在题面本身!水平较低的OIer竟然竭尽全力都无法看完题面!古人云,大象无形,大音希声,原来这道题已经达到了这种境界!小编要说,出题人,真有你的!

    (以上都是小编写的)

    前言:

    这题。。。我竟然没看出来是dp,Wtcl。
    明明扫一遍就完事的题。。。。我还非要打了个表,还找了一个看起来特别对的规律,试了好几组都没问题,然后最后它挂了?
    唉,Wtcl。

    解析:

    显然可以dp。。甚至放到之前的最初级的线性dp的题单里也不为过。。。
    令dp[i]表示奇数次从1走到i的步数。那么dp[i]=dp[i-1]*2-dp[a[i-1]]+2;
    代码:

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int maxn=1000000+10,mod=1e9+7;
    int a[maxn];
    int n;
    ll dp[maxn];
    void Solve(){
    	scanf("%d",&n);
    	for(int i=1;i<=n;++i) scanf("%d",&a[i]);
    	for(int i=2;i<=n+1;++i) dp[i]=(2*dp[i-1]-dp[a[i-1]]+mod+2)%mod;
    	printf("%lld
    ",dp[n+1]);
    }
    int main(){
    	//freopen("rideon.in","r",stdin);
    	//freopen("rideon.out","w",stdout);
    	Solve();
    	return 0;
    }
    
    
    
  • 相关阅读:
    智能合约初体验
    安装solidity遇见的问题——unused variable 'returned'
    Clojure学习笔记(二)——函数式编程
    《Java虚拟机并发编程》学习笔记
    Clojure学习笔记(一)——介绍、安装和语法
    Ubuntu配置pyethapp
    no leveldbjni64-1.8 in java.library.path
    Merkle Patricia Tree (MPT) 树详解
    Ubuntu下配置和编译cpp-ethereum客户端
    conda安装python库出现ssl error
  • 原文地址:https://www.cnblogs.com/wwcdcpyscc/p/13892761.html
Copyright © 2011-2022 走看看