BZOJ3827: [Poi2014]Around the world
2017-11-23 18:31
204 查看
将一段延伸到尽可能接近d,设其长为L,发现n个开头的走法在这一段内都会占据L个位置中的一个,根据这个性质就可以dp了
把环拉成链,倍长,对n+1~2n做dp,st[i]表示走到i,起点是哪个点,f[i]表示st[i]走到i需要的最少步数,f[i]=min f[j]+1 (s[i]-s[j]<=d)
code:
把环拉成链,倍长,对n+1~2n做dp,st[i]表示走到i,起点是哪个点,f[i]表示st[i]走到i需要的最少步数,f[i]=min f[j]+1 (s[i]-s[j]<=d)
code:
#include<set> #include<map> #include<deque> #include<queue> #include<stack> #include<cmath> #include<ctime> #include<bitset> #include<string> #include<vector> #include<cstdio> #include<cstdlib> #include<cstring> #include<climits> #define ll long long using namespace std; inline void read(int &x) { char c; while(!((c=getchar())>='0'&&c<='9')); x=c-'0'; while((c=getchar())>='0'&&c<='9') (x*=10)+=c-'0'; } const int maxn = 2000005; int n,m,u; int s[maxn]; int f[maxn],st[maxn]; int main() { read(n); read(m); for(int i=1;i<=n;i++) { int x; read(x); if(u<x)u=x; s[i]=s[i-1]+x; } for(int i=n+1;i<=n+n;i++) s[i]=s[i-1]+s[i-n]-s[i-n-1]; for(int i=1;i<=n;i++) st[i]=i,f[i]=0; while(m--) { int d; read(d); if(d<u) { puts("NIE");continue; } int j=1; for(int i=n+1;;i++) { while(s[i]-s[j]>d)j++; f[i]=f[j]+1; st[i]=st[j]; if(i-st[i]>=n) { printf("%d\n",f[i]);break; } } } return 0; }
相关文章推荐
- BZOJ3827 : [Poi2014]Around the world
- BZOJ3827[Poi2014] Around the world
- bzoj3827:[Poi2014]Around the world
- 【BZOJ3827】[Poi2014]Around the world【尺取法】【并查集】
- [POI2014]Around the world
- Netbooks and Nettops For People Around the World
- 2016弱校联盟十一专场10.2——Around the World
- 2016 四川省赛 Around the World
- 2016弱校联盟十一专场10.2---Around the World(深搜+组合数、逆元)
- Around the World in 60 Days: Getting Deep Speech to Work in Mandarin
- bzoj1748 [Usaco2005 open]Around the world 环球飞行
- ICPC-CAMP day1 D.Around the world
- BNUOJ 52305 Around the World 树形dp
- Ganymede Around the world中我的名字
- Around the World in Eighty Days 19/201
- CHILDBIRTH TRADITIONS AROUND THE WORLD: CHINA
- ICPCCamp 2016 Day1 ftiasch's Contest #4(Around the world-树,构造)
- 明天Around The World 2012(风靡世界2012)发布会 将发布绿叶清泉团队Logo
- Around the World in Eighty Days 5/201
- 2016 四川省赛 H AroundtheWorld(BEST定理)