建设网站需要的软件,商城网站建设定制网站建设,点对点视频网站开发,网站建设项目验收报告好吧#xff0c;我承认我是个智障…… 这道题一眼看上去就是个堆#xff0c;然而实际上有单调性。 注意到#xff0c;如果 \(q 0\) 的话#xff0c;将蚯蚓的左右两边分开丢进两个队列中#xff0c;则两个队列都是单调不增的#xff0c;因为每次取出的蚯蚓长度单调不增。…好吧我承认我是个智障…… 这道题一眼看上去就是个堆然而实际上有单调性。 注意到如果 \(q 0\) 的话将蚯蚓的左右两边分开丢进两个队列中则两个队列都是单调不增的因为每次取出的蚯蚓长度单调不增。 对于 \(q \neq 0\)因为除了切开的两只所有蚯蚓长度都增加了我们维护这个增加的值表示三个队列包括初始队列中所有的元素都要加上这个值才是真实的长度。但是这样刚切开的蚯蚓的左右两边长度就多增加了 \(q\)所以我们把他们的长度减 \(q\) 再丢进两个队列中。这样就保证了每个元素加上这个元素后就是真实的长度。 至于单调性和 \(q0\) 相比每次只有最小的两个变得更小而总体加上一个数是不影响单调性的所以仍然是单调不增的。 我是个智障是因为我代码里有这样一句话 memset(a1,-127,sizeof(a)); 于是数组越界就炸飞天了别问我为什么我该吃药了…… #include bits/stdc.h
using namespace std;#define ll long long
#define RG register
#define N 7100005inline int gi()
{RG int ret; RG char ch;ret0, chgetchar();while (ch 0 || ch 9)chgetchar();while (ch 0 ch 9)ret(ret3)(ret1)ch-0, chgetchar();return ret;
}int a[N],l[N],r[N],ha,hl,hr,ta,tl,tr,now;inline void get()
{if (a[ha] l[hl])if (a[ha] r[hr])nowa[ha];elsenowr[hr];elseif (l[hl] r[hr])nowl[hl];elsenowr[hr];
}int main()
{
// freopen(earthworm.in,r,stdin);
// freopen(earthworm.out,w,stdout);int n,m,q,u,v,t,i,inc,le,ri;ngi(), mgi(), qgi(), ugi(), vgi(), tgi();memset(a,-127,sizeof(a));memset(l,-127,sizeof(l));memset(r,-127,sizeof(r));for (i1; in; i)a[i]gi();sort(a1,an1,greater int ());hahlhr1, tltr0, tan, inc0, i1;nm;while (m--){get();nowinc;if (i t)printf(%d ,now), i0;le(ll)now*u/v, rinow-le;incq, i;le-inc, ri-inc;l[tl]le, r[tr]ri;}putchar(\n);i1;while (n--){get();if (i t)i0, printf(%d ,nowinc);i;}return 0;
} 转载于:https://www.cnblogs.com/y142857/p/7650884.html