《P3572 [POI 2014] PTA-Little Bird》

📅 发布时间:2026/7/17 13:05:57 👁️ 浏览次数:
《P3572 [POI 2014] PTA-Little Bird》
题目描述有 n 棵树排成一排第 i 棵树的高度是 di​。有 q 只鸟要从第 1 棵树到第 n 棵树。当第 i 只鸟在第 j 棵树时它可以飞到第 j1,j2,⋯,jki​ 棵树。如果一只鸟飞到一颗高度大于等于当前树的树那么它的劳累值会增加 1否则不会。由于这些鸟已经体力不支所以它们想要最小化劳累值。输入格式第一行输入 n。第二行 n 个数第 i 个数表示 di​。第三行输入 q。接下来 q 行每一行一个整数第 i 行的整数为 ki​。输出格式共 q 行每一行输出第 i 只鸟的最小劳累值。输入输出样例输入 #1复制9 4 6 3 6 3 7 2 6 5 2 2 5输出 #1复制2 1说明/提示1≤n≤1061≤di​≤1091≤q≤251≤ki​≤n−1。代码实现#includebits/stdc.h #define int long long #define rep(i,s,t) for(int is;it;i) using namespace std; const int N1e6114; int n,d[N],q,f[N],k[N],que[N],h0,t0; signed main() { cinn; for(int i1;in;i)cind[i]; cinq; while(q--) { int x;cinx;ht1;que[t]1; for(int i2;in;i) { while(ht i-que[h]x)h; if(d[que[h]]d[i])f[i]f[que[h]]; else f[i]f[que[h]]1; while(ht (f[i]f[que[t]] || f[i]f[que[t]] d[que[t]]d[i]))t--; que[t]i; } coutf[n]endl; } return 0; }