6.动态规划
动态规划
CF510D Fox And Jumping
CF459E Pashmak and Graph
CF809C Find a car
luogu P4099 [HEOI2013] SAO
CF559E Gerald and Path
luogu P4516 [JSOI2018] 潜入行动
HDU6566 The Hanged Man
UOJ 211. 【UER #6】逃跑
CF613E Puzzle Lover
[ABC201F] Insertion Sort
动态规划2
开题顺序:
BZOJ3329 Xorequ
luogu P1912 [NOI2009] 诗人小G
luogu P2254 [NOI2005] 瑰丽华尔兹
CF809C Find a car
CF161D Distance in Tree
CF486D Valid Sets
-
观察到
,考虑钦定每个最大点是哪个点。 -
但这样又会出现一个问题,当最大点不唯一时就会重复统计,那就同时钦定点的编号最大即可。
点击查看代码
struct node { ll nxt,to; }e[4001]; ll head[4001],a[4001],f[4001],cnt=0; void add(ll u,ll v) { cnt++; e[cnt].nxt=head[u]; e[cnt].to=v; head[u]=cnt; } void dfs(ll x,ll fa,ll rt,ll d) { f[x]=1; for(ll i=head[x];i!=0;i=e[i].nxt) { if(e[i].to!=fa) { if(a[rt]-a[e[i].to]<=d&&(a[rt]>a[e[i].to]||(a[rt]==a[e[i].to]&&e[i].to<rt))) { dfs(e[i].to,x,rt,d); f[x]=(f[x]+f[x]*f[e[i].to]%1000000007)%1000000007; } } } } int main() { ll d,n,i,u,v,ans=0; cin>>d>>n; for(i=1;i<=n;i++) { cin>>a[i]; } for(i=1;i<=n-1;i++) { cin>>u>>v; add(u,v); add(v,u); } for(i=1;i<=n;i++) { dfs(i,0,i,d); ans=(ans+f[i])%1000000007; } cout<<ans<<endl; return 0; }
SP7739 BOI7SOU - Sound
-
固定长度的
板子。点击查看代码
int a[5000000]; struct SegmentTree { int l,r,maxx=0,minn=0x7f7f7f7f; }tree[5000000]; int lson(int x) { return 2*x; } int rson(int x) { return 2*x+1; } void pushup(int rt) { tree[rt].maxx=max(tree[lson(rt)].maxx,tree[rson(rt)].maxx); tree[rt].minn=min(tree[lson(rt)].minn,tree[rson(rt)].minn); } void build(int rt,int l,int r) { tree[rt].l=l; tree[rt].r=r; if(l==r) { tree[rt].maxx=tree[rt].minn=a[l]; return; } int mid=(l+r)/2; build(lson(rt),l,mid); build(rson(rt),mid+1,r); pushup(rt); } int querymax(int rt,int l,int r) { if(l<=tree[rt].l&&tree[rt].r<=r) { return tree[rt].maxx; } int mid=(tree[rt].l+tree[rt].r)/2,maxx=0; if(l<=mid) { maxx=max(maxx,querymax(lson(rt),l,r)); } if(r>mid) { maxx=max(maxx,querymax(rson(rt),l,r)); } return maxx; } int querymin(int rt,int l,int r) { if(l<=tree[rt].l&&tree[rt].r<=r) { return tree[rt].minn; } int mid=(tree[rt].l+tree[rt].r)/2,minn=0x7f7f7f7f; if(l<=mid) { minn=min(minn,querymin(lson(rt),l,r)); } if(r>mid) { minn=min(minn,querymin(rson(rt),l,r)); } return minn; } int main() { int n,m,c,i,flag=0; cin>>n>>m>>c; for(i=1;i<=n;i++) { cin>>a[i]; } build(1,1,n); for(i=1;i+m-1<=n;i++) { if(querymax(1,i,i+m-1)-querymin(1,i,i+m-1)<=c) { flag=1; cout<<i<<endl; } } if(flag==0) { cout<<"NONE"<<endl; } return 0; }
本文来自博客园,作者:hzoi_Shadow,原文链接:https://www.cnblogs.com/The-Shadow-Dragon/p/18470545,未经允许严禁转载。
版权声明:本作品采用 「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0) 进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现