7.6 T1 深度优先搜索(dfs)
深度优先搜索(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)相关推荐
- 一文搞定深度优先搜索(DFS)与广度优先搜索(BFS)【含完整源码】
写在前面:博主是一位普普通通的19届双非软工在读生,平时最大的爱好就是听听歌,逛逛B站.博主很喜欢的一句话花开堪折直须折,莫待无花空折枝:博主的理解是头一次为人,就应该做自己想做的事,做自己不后悔的事 ...
- C++实现深度优先搜索DFS(附完整源码)
C++实现深度优先搜索DFS C++实现深度优先搜索DFS完整源码(定义,实现,main函数测试) C++实现深度优先搜索DFS完整源码(定义,实现,main函数测试) #include <al ...
- C++用stack实现深度优先搜索DFS(附完整源码)
C++用stack实现深度优先搜索DFS的实现 C++用stack实现深度优先搜索DFS的完整源码(定义,实现,main函数测试) C++用stack实现深度优先搜索DFS的完整源码(定义,实现,ma ...
- 深度优先搜索(DFS) 总结(算法+剪枝+优化总结)
深度优先搜索(DFS) 总结(算法+剪枝+优化总结) 本文中会引用部分实例.文献资料来自不同的作者之手,由于资料整理比较困难,转载地址不在文中列举.如有侵权请联系我更换或删除!对于提供题解思路的各位大 ...
- 【算法很美】深入递归 (下)深度优先搜索DFS问题
深搜.回溯.剪枝 深度优先搜索DFS 2.1 无死角搜索I 数独游戏 部分和 水洼数目 2.2 回溯和剪枝 n皇后问题 素数环 困难的串 小结 一些使用 2.1 无死角搜索I 数独游戏 你一定听说过& ...
- 【算法入门】深度优先搜索(DFS)
深度优先搜索(DFS) [算法入门] 郭志伟@SYSU:raphealguo(at)qq.com 2012/05/12 1.前言 深度优先搜索(缩写DFS)有点类似广度优先搜索,也是对一个连通图进行遍 ...
- matlab bfs函数,matlab练习程序(广度优先搜索BFS、深度优先搜索DFS)
如此经典的算法竟一直没有单独的实现过,真是遗憾啊. 广度优先搜索在过去实现的二值图像连通区域标记和prim最小生成树算法时已经无意识的用到了,深度优先搜索倒是没用过. 这次单独的将两个算法实现出来,因 ...
- 【数据结构与算法】2.深度优先搜索DFS、广度优先搜索BFS
原文链接:https://blog.csdn.net/qq_41681241/article/details/81432634 总结 一般来说,广搜常用于找单一的最短路线,或者是规模小的路径搜索,它的 ...
- 树的广度优先搜索(BFS),深度优先搜索(DFS)
BFS:Breadth First Search,广度优先搜索 DFS:Depth First Search,深度优先搜索 如图,A节点的下一级元素为B节点和C节点,B节点的下一级元素为D节点和E节点 ...
最新文章
- OpenCV安装 问题总结以及相关注意事项
- 模块化编程AMDCommonJS
- jQuery中append、insertBefore、after与insertAfter方法注意事项
- Dubbo负载均衡算法
- python fieldnames_csvreader.fieldnames在python中未被识别为csv reader对象的属性
- matlab三机九节点,matlab三机九节点电力系统仿真(带程序).doc
- [渝粤教育] 岭南师范学院 文学创意写作 参考 资料
- html 排版标签、文本格式化标签、图像标签、链接标签、注释标签、路径、锚点定位、base文本标签、pre标签、特殊字符
- linux系统windows模拟器下载,Linux开源模拟器Wine 0.9.54版下载
- 家用千兆路由器排行榜前十名_家庭用哪款路由器好 2017最适合家用路由器排行榜...
- 物联网-通信模块使用笔记
- HashSet线程不安全,1、	使用JUC中的CopyOnWriteArraySet底层还是使用CopyOnWriteArrayList进行实例化 2、使用工具类中的Collections.synch
- Android客户端通过TCP接收服务器端发送的数据
- 微信入口绑定,微信事件处理,微信API全部操作
- 数学建模常用算法:粒子群算法(PSO)求解二元函数最小值+限定x,y范围测试【java实现--详细注释+Matlab绘制粒子群飞行过程】
- GNU:gcc -v
- Centos6.9 下的 CM(Cloudera Manager)CDH 大数据环境部署
- 视觉SLAM十四讲:第3讲 三维空间刚体运动
- 南阳理工ACM_题目23
- 团队成员分工及绩效评估
热门文章
- c语言fseek128字节,C语言rewind和fseek函数的用法详解(随机读写文件)
- 李沐分享斯坦福2021秋季新课:实用机器学习
- 腾讯PCG光影研究室招聘计算机视觉算法/实习生
- 带你自学Python系列(十七):Python中类的用法(三)
- 【干货】卷积神经网络Alex-Net、VGG-Nets、Network-In-Network案例分析
- git lib 创建新的项目在某个路径下_版本控制管理工具git的使用
- 华为nova5iotg功能使用_原来华为EMUI10输入法这么强大!使用这个功能,一分钟能打300字...
- 红米有android,这些是不支持ANDROID 11更新的小米和红米手机
- linux ps ax tl,Linux常用指令 - osc_wa6fkyf0的个人空间 - OSCHINA - 中文开源技术交流社区...
- Mac安装sqlmap【亲测有用】