深度优先搜索(dfs)

【题目描述】

sol:50pts随便写写,就是大众分了,直接n2dpOK,100分要找点规律,需要数学头脑

官方题解

//#include <bits/stdc++.h>
//using namespace std;
//typedef long long ll;
//inline ll read()
//{
//    ll s=0;
//    bool f=0;
//    char ch=' ';
//    while(!isdigit(ch))
//    {
//        f|=(ch=='-'); ch=getchar();
//    }
//    while(isdigit(ch))
//    {
//        s=(s<<3)+(s<<1)+(ch^48); ch=getchar();
//    }
//    return (f)?(-s):(s);
//}
//#define R(x) x=read()
//inline void write(ll x)
//{
//    if(x<0)
//    {
//        putchar('-'); x=-x;
//    }
//    if(x<10)
//    {
//        putchar(x+'0'); return;
//    }
//    write(x/10);
//    putchar((x%10)+'0');
//    return;
//}
//#define W(x) write(x),putchar(' ')
//#define Wl(x) write(x),putchar('\n')
//const int N=3005;
//const ll Mod=1000000007;
//int n,a[N];
//ll dp[N][N],Sum[N];
//inline void Ad(ll &x,ll y) {x=x+y; x-=(x>=Mod)?Mod:0;}
//int main()
//{
//    freopen("dfs.in","r",stdin);
//    freopen("dfs.out","w",stdout);
//    int i,j;
//    R(n);
//    for(i=1;i<=n;i++) R(a[i]);
//    if((a[1]!=-1)&&(a[1]!=0)) return puts("0"),0;
//    dp[1][0]=1; Sum[n+1]=0; for(i=n;i>=0;i--) Ad(Sum[i],Sum[i+1]+dp[1][i]);
//    for(i=2;i<=n;i++)
//    {
//        if(a[i]!=-1) Ad(dp[i][a[i]],Sum[a[i]-1]);
//        else for(j=1;j<=n;j++) Ad(dp[i][j],Sum[j-1]);
//        for(j=n;j>=0;j--) {Sum[j]=Sum[j+1]+dp[i][j]; Sum[j]-=((Sum[j]>=Mod)?Mod:0);}
//    }
//    ll ans=0;
//    for(i=0;i<=n;i++) Ad(ans,dp[n][i]);
//    Wl(ans);
//    return 0;
//}
///*
//input
//2
//1 -1
//output
//0
//
//input
//4
//0 -1 1 -1
//output
//2
//
//input
//5
//-1 -1 -1 -1 -1
//output
//14
//*/

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
inline ll read()
{ll s=0;bool f=0;char ch=' ';while(!isdigit(ch)){f|=(ch=='-'); ch=getchar();}while(isdigit(ch)){s=(s<<3)+(s<<1)+(ch^48); ch=getchar();}return (f)?(-s):(s);
}
#define R(x) x=read()
inline void write(ll x)
{if(x<0){putchar('-'); x=-x;}if(x<10){putchar(x+'0'); return;}write(x/10);putchar((x%10)+'0');return;
}
#define W(x) write(x),putchar(' ')
#define Wl(x) write(x),putchar('\n')
const ll Mod=1000000007;
const int N=4000005;
int n,a[N];
ll Jiec[N],Invj[N];
inline ll Ksm(ll x,ll y)
{ll ans=1;while(y){if(y&1) ans=ans*x%Mod;x=x*x%Mod;y>>=1;}return ans;
}
inline ll C(ll n,ll m)
{if(n<m||m<0) return 0;return Jiec[n]*Invj[m]%Mod*Invj[n-m]%Mod;
}
int main()
{freopen("dfs.in","r",stdin);freopen("dfs.out","w",stdout);ll i,Last,ans;R(n);for(i=1;i<=n;i++) R(a[i]);Jiec[0]=Invj[0]=1ll;for(i=1;i<=2*n;i++){Jiec[i]=Jiec[i-1]*i%Mod; Invj[i]=Ksm(Jiec[i],Mod-2);}if((a[1]!=0)&&(a[1]!=-1)) return puts("0"),0;a[1]=0; Last=ans=a[n+1]=1;for(i=2;i<=n+1;i++) if(a[i]!=-1){if(a[i]==0) return puts("0"),0;int s=i-Last-1,x=i-Last-1-a[i]+1+a[Last];if(x<0) return puts("0"),0;ans=1ll*ans*(C(s+x,x)-C(s+x,x-a[Last]-1))%Mod;Last=i;}ans+=(ans<0)?Mod:0;Wl(ans);return 0;
}
/*
input
6
-1 -1 -1 -1 -1 -1
output
42
*/

View Code

转载于:https://www.cnblogs.com/gaojunonly1/p/11146419.html

7.6 T1 深度优先搜索(dfs)相关推荐

  1. 一文搞定深度优先搜索(DFS)与广度优先搜索(BFS)【含完整源码】

    写在前面:博主是一位普普通通的19届双非软工在读生,平时最大的爱好就是听听歌,逛逛B站.博主很喜欢的一句话花开堪折直须折,莫待无花空折枝:博主的理解是头一次为人,就应该做自己想做的事,做自己不后悔的事 ...

  2. C++实现深度优先搜索DFS(附完整源码)

    C++实现深度优先搜索DFS C++实现深度优先搜索DFS完整源码(定义,实现,main函数测试) C++实现深度优先搜索DFS完整源码(定义,实现,main函数测试) #include <al ...

  3. C++用stack实现深度优先搜索DFS(附完整源码)

    C++用stack实现深度优先搜索DFS的实现 C++用stack实现深度优先搜索DFS的完整源码(定义,实现,main函数测试) C++用stack实现深度优先搜索DFS的完整源码(定义,实现,ma ...

  4. 深度优先搜索(DFS) 总结(算法+剪枝+优化总结)

    深度优先搜索(DFS) 总结(算法+剪枝+优化总结) 本文中会引用部分实例.文献资料来自不同的作者之手,由于资料整理比较困难,转载地址不在文中列举.如有侵权请联系我更换或删除!对于提供题解思路的各位大 ...

  5. 【算法很美】深入递归 (下)深度优先搜索DFS问题

    深搜.回溯.剪枝 深度优先搜索DFS 2.1 无死角搜索I 数独游戏 部分和 水洼数目 2.2 回溯和剪枝 n皇后问题 素数环 困难的串 小结 一些使用 2.1 无死角搜索I 数独游戏 你一定听说过& ...

  6. 【算法入门】深度优先搜索(DFS)

    深度优先搜索(DFS) [算法入门] 郭志伟@SYSU:raphealguo(at)qq.com 2012/05/12 1.前言 深度优先搜索(缩写DFS)有点类似广度优先搜索,也是对一个连通图进行遍 ...

  7. matlab bfs函数,matlab练习程序(广度优先搜索BFS、深度优先搜索DFS)

    如此经典的算法竟一直没有单独的实现过,真是遗憾啊. 广度优先搜索在过去实现的二值图像连通区域标记和prim最小生成树算法时已经无意识的用到了,深度优先搜索倒是没用过. 这次单独的将两个算法实现出来,因 ...

  8. 【数据结构与算法】2.深度优先搜索DFS、广度优先搜索BFS

    原文链接:https://blog.csdn.net/qq_41681241/article/details/81432634 总结 一般来说,广搜常用于找单一的最短路线,或者是规模小的路径搜索,它的 ...

  9. 树的广度优先搜索(BFS),深度优先搜索(DFS)

    BFS:Breadth First Search,广度优先搜索 DFS:Depth First Search,深度优先搜索 如图,A节点的下一级元素为B节点和C节点,B节点的下一级元素为D节点和E节点 ...

最新文章

  1. OpenCV安装 问题总结以及相关注意事项
  2. 模块化编程AMDCommonJS
  3. jQuery中append、insertBefore、after与insertAfter方法注意事项
  4. Dubbo负载均衡算法
  5. python fieldnames_csvreader.fieldnames在python中未被识别为csv reader对象的属性
  6. matlab三机九节点,matlab三机九节点电力系统仿真(带程序).doc
  7. [渝粤教育] 岭南师范学院 文学创意写作 参考 资料
  8. html 排版标签、文本格式化标签、图像标签、链接标签、注释标签、路径、锚点定位、base文本标签、pre标签、特殊字符
  9. linux系统windows模拟器下载,Linux开源模拟器Wine 0.9.54版下载
  10. 家用千兆路由器排行榜前十名_家庭用哪款路由器好 2017最适合家用路由器排行榜...
  11. 物联网-通信模块使用笔记
  12. HashSet线程不安全,1、 使用JUC中的CopyOnWriteArraySet底层还是使用CopyOnWriteArrayList进行实例化 2、使用工具类中的Collections.synch
  13. Android客户端通过TCP接收服务器端发送的数据
  14. 微信入口绑定,微信事件处理,微信API全部操作
  15. 数学建模常用算法:粒子群算法(PSO)求解二元函数最小值+限定x,y范围测试【java实现--详细注释+Matlab绘制粒子群飞行过程】
  16. GNU:gcc -v
  17. Centos6.9 下的 CM(Cloudera Manager)CDH 大数据环境部署
  18. 视觉SLAM十四讲:第3讲 三维空间刚体运动
  19. 南阳理工ACM_题目23
  20. 团队成员分工及绩效评估

热门文章

  1. c语言fseek128字节,C语言rewind和fseek函数的用法详解(随机读写文件)
  2. 李沐分享斯坦福2021秋季新课:实用机器学习
  3. 腾讯PCG光影研究室招聘计算机视觉算法/实习生
  4. 带你自学Python系列(十七):Python中类的用法(三)
  5. 【干货】卷积神经网络Alex-Net、VGG-Nets、Network-In-Network案例分析
  6. git lib 创建新的项目在某个路径下_版本控制管理工具git的使用
  7. 华为nova5iotg功能使用_原来华为EMUI10输入法这么强大!使用这个功能,一分钟能打300字...
  8. 红米有android,这些是不支持ANDROID 11更新的小米和红米手机
  9. linux ps ax tl,Linux常用指令 - osc_wa6fkyf0的个人空间 - OSCHINA - 中文开源技术交流社区...
  10. Mac安装sqlmap【亲测有用】