手机上能搭建网站吗,便利店网站建设拓扑图,wordpress邀请码注册,为什么做网站需要服务器D-小红越级#xff08;easy#xff09;_牛客小白月赛126
直接暴力会tle 我们可以算出每个曲目的舒适区间 可以合并就合并 然后用差分 维护每个值下舒适区间的数目 总数减去舒适的数目就是不舒适的数目#xff1b;
#include bits/stdc.h
using namespace std;
…D-小红越级easy_牛客小白月赛126直接暴力会tle 我们可以算出每个曲目的舒适区间 可以合并就合并 然后用差分 维护每个值下舒适区间的数目 总数减去舒适的数目就是不舒适的数目#include bits/stdc.h using namespace std; const int N2e55; struct node { int l,r; }a[N]; int d[N],ans[N]; int n,q; void solve(){ cinnq; memset(d,0,sizeof d); memset(ans,0,sizeof ans); for(int i1;in;i){ cina[i].la[i].r; int l1a[i].l-1,r1a[i].l1; int l2a[i].r-1,r2a[i].r1; if(r1l2r2l1){ int l3min(l1,l2); int r3max(r1,r2); d[l3];d[r31]--; }else {d[l1];d[l2];d[r11]--;d[r21]--;} } for(int i0;in;i){ ans[i]ans[i-1]d[i]; } while(q--){ int x;cinx; coutn-ans[x] ; }cout\n; } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t;cint; while(t--)solve(); return 0; }暴力枚举 枚举操作1的所有情况下操作2 的次数 然后计算代价 取最小值#include bits/stdc.h using namespace std; #define int long long int x,a,b,c; int getadd(int x,int c){ int l1005,r1010; //扩大位数 for(int i0;i15;i){ if(xlxr)return 0; if(xl){ int k(l-xc-1)/c;//为了到达l最少要加多少次c 向上取整 if(xk*cr)//补齐后在上界内; return k; } if(i15){//更新l,r l*10; rr*109; } } return 1e18; } void solve(){ cinxabc; int ans4e18,count0; //枚举砍多少位 while(1){ int addkgetadd(x,c); int costcount*aaddk*b; ansmin(ans,cost); if(x0)break; x/10; count; } coutans\n; } signed main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t;cint; while(t--)solve(); return 0; }F-小红开机厅_牛客小白月赛126这道题有个结论 当点位于两点所构成的矩形内 那么他到两点的曼哈顿距离之和永远相等等于矩形的长宽 如果在矩形之外 那么到两点的曼哈顿距离和记作K相等的点有2*K个证明几何证明红色部分 四个角落为孤立的点 一个单位长度为一个点 点的个数和这个直角三角形的边长相等代码实现#include bits/stdc.h using namespace std; const int N2e55; long long n,xa,ya,xb,yb; long long dis[N]; void solve(){ memset(dis,0,sizeof dis); cinn;cinxayaxbyb; int home2; if(xaxbyayb)home1; unordered_maplong long,intm; long long Xabs(xa-xb),Yabs(ya-yb); long long LXY; for(int i1;in;i){ long long xi,yi; cinxiyi; dis[i]abs(xi-xa)abs(yi-ya)abs(xi-xb)abs(yi-yb); m[dis[i]]; } for(int i1;in;i){ long long ans0; if(dis[i]L)ans(X1)*(Y1)-home; else ans2*dis[i]; ans-m[dis[i]]; coutans ; } cout\n; } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t;cint; while(t--)solve(); return 0; }G-小红越级hard_牛客小白月赛126距离不同 产生的不舒适感线性增长 我们可以用差分的差分进行维护#include bits/stdc.h using namespace std; const int N2e55; #define int long long int d[N],dd[N],a[N]; void solve(){ memset(d,0,sizeof d); memset(dd,0,sizeof dd); memset(a,0,sizeof a); int n,q;cinnq; for(int i1;in;i){ int l,r;cinlr; if(l-11){ d[1](l-2); dd[2]--;dd[l]; } dd[r2]; if(lr-2){//中间 int lp(lr)/2; int rplp1; dd[l2];dd[rp]--; d[rp]-(lp-l-1); d[rp](r-rp-1); dd[rp1]--; dd[r]; } } int sum0; for(int i1;in;i){ sumdd[i]; d[i]sum; } for(int i1;in;i){ a[i]a[i-1]d[i]; } while(q--){ int x;cinx; couta[x] ; } cout\n; } signed main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t;cint; while(t--)solve(); return 0; }