当前位置: 首页 > news >正文

动态规划学习笔记

连续段DP

P5599 [CEOI 2016] kangaroo

#include<bits/stdc++.h>
#define int long long
#define mod 1000000007
#define N 2005
using namespace std;
int dp[N][N];
signed main(){int n,s,t;scanf("%lld%lld%lld",&n,&s,&t);dp[1][1]=1;for(int i=2;i<=n;i++){for(int j=1;j<=n;j++){if(i==s||i==t)dp[i][j]=(dp[i-1][j-1]+dp[i-1][j])%mod;else dp[i][j]=(dp[i-1][j-1]*(j-(int)(i>s)-(int)(i>t))+dp[i-1][j+1]*j)%mod;}}printf("%lld\n",dp[n][1]);return 0;
}

将问题转化为一个排列,然后从小往大插入数,状态为当前形成j个连续段的方案数,根据题目要求进行转移

四边形不等式优化

P10861 [HBCPC2024] MACARON Likes Happy Endings

对于solve函数维护一个求解区间和一个决策区间,对求解区间进行分治,然后遍历决策区间求出mid的决策点继续分治

#include<bits/stdc++.h>
#define int long long
#define mod 1000000007
#define N 2005
using namespace std;
int dp[N][N];
signed main(){int n,s,t;scanf("%lld%lld%lld",&n,&s,&t);dp[1][1]=1;for(int i=2;i<=n;i++){for(int j=1;j<=n;j++){if(i==s||i==t)dp[i][j]=(dp[i-1][j-1]+dp[i-1][j])%mod;else dp[i][j]=(dp[i-1][j-1]*(j-(int)(i>s)-(int)(i>t))+dp[i-1][j+1]*j)%mod;}}printf("%lld\n",dp[n][1]);return 0;
}
http://www.sczhlp.com/news/15648/

相关文章:

  • SHEIN结算设计
  • html网站建设实录百度关键词排行榜
  • JSP高级动态网站开发期末试卷百度搜索seo
  • 网站建设工期中国联通业绩
  • 网站怎么做免费seo搜索百度竞价排名是什么意思
  • wordpress 商城聊天江苏网站seo
  • wordpress腾讯地图插件下载seo全网推广营销软件
  • 企业网站建设都需要什么准备百度网盘搜索引擎网站
  • 广东手机网站建设报价表信息推广平台
  • 哪些网站做代理商推广软件的app
  • 贪心学习笔记
  • 接口测试流程
  • 性能测试的流程
  • python网站开发工程师怎么推广自己的网站?
  • 室内软装设计软件seo自学网
  • 关工委网站建设软文300字案例
  • 深圳英迈思做网站好么网站友情链接自动上链
  • her123 wordpressseo自媒体培训
  • 工信部备案查询网址网站优化内容
  • wordpress站点的根目录今日军事新闻报道
  • 统计wordpress访问量无锡seo公司哪家好
  • 红河县网站建设浙江疫情最新情况
  • 网站引导视频怎么做厦门seo网络优化公司
  • 网站运营 策划 推广 维护怎样把自己的产品放到网上销售
  • 做网站帮京东卖东西怎么合作下载百度app最新版到桌面
  • 域名和网站想做个网络推广
  • 如何使用记事本做网站中国做网站的公司排名
  • 民权平台网站建设市场推广是做什么的
  • 技术培训网站优化神马网站关键词排名价格
  • 让你爱上时政和历史的四大圈子