[DFS]JZOJ 4208 线段树什么的最讨厌了qwq
分析
水题
通过小区间往上扩展即可,四种扩展方法
然后有很多奇奇怪怪的特判,lim要取lim和l+r的最小值
#include <iostream> #include <cstdio> #include <memory.h> using namespace std; typedef long long ll; int T; ll l,r,limit,ans; void DFS(ll l,ll r) { if (l<0||r>limit||r>ans&&ans!=-1) return; if (l==0) { if (ans==-1) ans=r; else ans=min(ans,r); return; } DFS(l,r*2-l);DFS(l,r*2+1-l); DFS(2*(l-1)-r,r);DFS(2*(l-1)-r+1,r); } int main() { for (scanf("%d",&T);T;T--) { scanf("%d%d%d",&l,&r,&limit); if (l==0&&r<=limit||l==r) printf("%lld\n",r); else { if (r>limit) { printf("-1\n"); continue; } limit=min(limit,l+r); ans=-1; DFS(l,r); printf("%d\n",ans); } } }
在日渐沉没的世界里,我发现了你。