深度优先搜索(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=;
bool f=;
char ch=' ';
while(!isdigit(ch))
{
f|=(ch=='-'); ch=getchar();
}
while(isdigit(ch))
{
s=(s<<)+(s<<)+(ch^); ch=getchar();
}
return (f)?(-s):(s);
}
#define R(x) x=read()
inline void write(ll x)
{
if(x<)
{
putchar('-'); x=-x;
}
if(x<)
{
putchar(x+''); return;
}
write(x/);
putchar((x%)+'');
return;
}
#define W(x) write(x),putchar(' ')
#define Wl(x) write(x),putchar('\n')
const ll Mod=;
const int N=;
int n,a[N];
ll Jiec[N],Invj[N];
inline ll Ksm(ll x,ll y)
{
ll ans=;
while(y)
{
if(y&) ans=ans*x%Mod;
x=x*x%Mod;
y>>=;
}
return ans;
}
inline ll C(ll n,ll m)
{
if(n<m||m<) return ;
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=;i<=n;i++) R(a[i]);
Jiec[]=Invj[]=1ll;
for(i=;i<=*n;i++)
{
Jiec[i]=Jiec[i-]*i%Mod; Invj[i]=Ksm(Jiec[i],Mod-);
}
if((a[]!=)&&(a[]!=-)) return puts(""),;
a[]=; Last=ans=a[n+]=;
for(i=;i<=n+;i++) if(a[i]!=-)
{
if(a[i]==) return puts(""),;
int s=i-Last-,x=i-Last--a[i]++a[Last];
if(x<) return puts(""),;
ans=1ll*ans*(C(s+x,x)-C(s+x,x-a[Last]-))%Mod;
Last=i;
}
ans+=(ans<)?Mod:;
Wl(ans);
return ;
}
/*
input
6
-1 -1 -1 -1 -1 -1
output
42
*/

7.6 T1 深度优先搜索(dfs)的更多相关文章

  1. 深度优先搜索DFS和广度优先搜索BFS简单解析(新手向)

    深度优先搜索DFS和广度优先搜索BFS简单解析 与树的遍历类似,图的遍历要求从某一点出发,每个点仅被访问一次,这个过程就是图的遍历.图的遍历常用的有深度优先搜索和广度优先搜索,这两者对于有向图和无向图 ...

  2. 利用广度优先搜索(BFS)与深度优先搜索(DFS)实现岛屿个数的问题(java)

    需要说明一点,要成功运行本贴代码,需要重新复制我第一篇随笔<简单的循环队列>代码(版本有更新). 进入今天的主题. 今天这篇文章主要探讨广度优先搜索(BFS)结合队列和深度优先搜索(DFS ...

  3. 深度优先搜索DFS和广度优先搜索BFS简单解析

    转自:https://www.cnblogs.com/FZfangzheng/p/8529132.html 深度优先搜索DFS和广度优先搜索BFS简单解析 与树的遍历类似,图的遍历要求从某一点出发,每 ...

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

    深度优先搜索(DFS) [算法入门] 1.前言深度优先搜索(缩写DFS)有点类似广度优先搜索,也是对一个连通图进行遍历的算法.它的思想是从一个顶点V0开始,沿着一条路一直走到底,如果发现不能到达目标解 ...

  5. 深度优先搜索 DFS 学习笔记

    深度优先搜索 学习笔记 引入 深度优先搜索 DFS 是图论中最基础,最重要的算法之一.DFS 是一种盲目搜寻法,也就是在每个点 \(u\) 上,任选一条边 DFS,直到回溯到 \(u\) 时才选择别的 ...

  6. 深度优先搜索(DFS)

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

  7. 算法总结—深度优先搜索DFS

    深度优先搜索(DFS) 往往利用递归函数实现(隐式地使用栈). 深度优先从最开始的状态出发,遍历所有可以到达的状态.由此可以对所有的状态进行操作,或列举出所有的状态. 1.poj2386 Lake C ...

  8. HDU(搜索专题) 1000 N皇后问题(深度优先搜索DFS)解题报告

    前几天一直在忙一些事情,所以一直没来得及开始这个搜索专题的训练,今天做了下这个专题的第一题,皇后问题在我没有开始接受Axie的算法低强度训练前,就早有耳闻了,但一直不知道是什么类型的题目,今天一看,原 ...

  9. [LeetCode OJ] Word Search 深度优先搜索DFS

    Given a 2D board and a word, find if the word exists in the grid. The word can be constructed from l ...

随机推荐

  1. Python库的优雅安装及PyCharm虚拟环境配置

    一.安装python库 安装python库有几种方式: 1. 使用pip命令行,如:pip install Pillow 2. 在pycharm中安装 3. 使用Anaconda批量安装常用模块 在使 ...

  2. Latex使用记事(1)

    意义用途 用于出版物的排版,样式控制,使得编排标准美观. 整体框架 一个最简环境 \documentclass{article} \begin{document} content... \end{do ...

  3. Neo4j Cypher语法(二)

    目录 4 子句 4.1 CREATE 4.2 MATCH 4.3 Match 4.4 Create match return连用来返回一个关系基础 4.5 Optional_match 4.6 Wit ...

  4. Java实现的基础数据结构

    Java实现的基础数据结构 0,常用的基础数据结构 图1 基础数据结构&相关特性 图2 Java自带的类集框架&继承关系图 1,数组[Array] 特点:长度固定.查找方便[直接使用i ...

  5. SpringCloud 配置文件 application.yml和 bootstrap.yml区别

    前言: SpringBoot默认支持properties和YAML两种格式的配置文件.前者格式简单,但是只支持键值对.如果需要表达列表,最好使用YAML格式.SpringBoot支持自动加载约定名称的 ...

  6. java技术面试之面试题大全

    转载自:http://blog.csdn.net/lijizhi19950123/article/details/77679489 Java 面试知识点总结 本篇文章会对面试中常遇到的Java技术点进 ...

  7. Spring Boot WebFlux整合mongoDB

    引入maven文件 <dependency> <groupId>org.springframework.boot</groupId> <artifactId& ...

  8. 【异常】Phoenix异常:java.lang.ArithmeticException: Rounding necessary

    1 异常sql upsert into WMBIGDATA.ODS_ES_CHARGING_STATION(id,evcosType,address,serviceTel,supportOrder,o ...

  9. 第三章·Logstash入门-部署与测试

    1.Logstash环境准备与安装 Logstash环境准备 关闭防火墙 #CentOS6 关闭防火墙 [root@elkstack01 ~]# /etc/init.d/iptables stop # ...

  10. 8.Netty发送对象

    1.Netty发送对象简介: Netty中,通讯的双方建立连接后,会把数据按照ByteBuf的方式进行传输,例如http协议中,就是通过HttpRequestDecoder对 ByteBuf数 据流进 ...