HOW D

灌水区

贪心。每次找最大/最小的能用的 i
by 2c_s @ 2024-04-13 21:42:57


@[2c_s](/user/583186) 有代码吗
by tianyu_awa @ 2024-04-13 21:51:18


@[tianyu_awa](/user/716260) 就贪心,找能用的最大的,我过了
by monkeyinGD @ 2024-04-13 21:52:06


@[tianyu_awa](/user/716260) ```cpp vector<pll>v; int cnt; ll L,R; ll nowi(ll n){ ll t=0; while(n%(1ll<<t)==0&&1ll*(1ll<<t)<=R)++t; return t; } ll nowj(ll now){ return now/(1ll<<nowi(now)); } ll nexti(ll now){ for(ll i=nowi(now)-1ll;i>=0;--i){ if((now/(1ll<<i)+1ll)*(1ll<<i)<=R)return i; } return 114514; } signed solution(){ L=read(),R=read();//快读 ll now=L; while((1ll<<nowi(now))*(nowj(now)+1ll)<=R){ ll nowmax=1ll<<nowi(now); v.pb({now,(now/nowmax+1ll)*nowmax}); now=(now/nowmax+1ll)*nowmax; } while(now!=R){ ll nxtpow=1<<nexti(now); v.pb({now,(now/nxtpow+1ll)*nxtpow}); now=(now/nxtpow+1ll)*nxtpow; } cout<<v.size()<<"\n"; for(int i=0;i<v.size();++i){ printf("%lld %lld\n",v[i].fi,v[i].se); } return 0; } ```
by 2c_s @ 2024-04-14 08:45:56


|