牛客小白月赛99

牛客小白月赛99

\(A\) 牛客 NC275617 材料打印 \(AC\)

  • \(by+a \times \min(x,y)\) 即为所求。

    点击查看代码
    int main()
    {ll t,a,b,x,y,i;cin>>t;for(i=1;i<=t;i++){cin>>a>>b>>x>>y;cout<<b*y+a*min(x,y)<<endl;}return 0;
    }
    

\(B\) 牛客 NC275619 %%% \(AC\)

  • 观察样例发现和 \(\log_{2}\) 相关,自然而然地想到每次减少一半左右。

  • 容易发现每次取 \(mod=\left\lfloor \frac{n}{2} \right\rfloor+1\) ,从而使 \(n\) 变成 \(\left\lfloor \frac{n}{2} \right\rfloor-1\) 是最优情况。

    • \(mod=\left\lfloor \frac{n}{2} \right\rfloor-1\) 不如 \(mod=\left\lfloor \frac{n}{2} \right\rfloor+1\) 优。
    点击查看代码
    int main()
    {ll t,n,ans,i;cin>>t;for(i=1;i<=t;i++){cin>>n;ans=0;while(n!=0){n%=(n/2+1);ans++;}cout<<ans<<endl;}return 0;
    }
    

\(C\) 牛客 NC275634 迷宫 \(AC\)

  • \(DFS\) 处理出起点、终点所在的连通块,分别记作 \(S,E\) 。若 \(E\) 中存在一个点或与其相邻的点可以被 \(S\) 中点使用一次超能力到达则合法。

    点击查看代码
    int hang[1010],lie[1010],vis[1010][1010],dx[5]={0,1,-1,0,0},dy[5]={0,0,0,1,-1},n,m;
    char s[1010][1010];
    void dfs1(int x,int y)
    {vis[x][y]=1;hang[x]=1;lie[y]=1;for(int i=1;i<=4;i++){int nx=x+dx[i],ny=y+dy[i];if(1<=nx&&nx<=n&&1<=ny&&ny<=m&&vis[nx][ny]==0&&s[nx][ny]!='#'){dfs1(nx,ny);}}
    }
    void dfs2(int x,int y)
    {vis[x][y]=1;if(hang[x]==1||hang[x-1]==1||hang[x+1]==1||lie[y]==1||lie[y-1]==1||lie[y+1]==1){cerr<<x<<" "<<y<<endl;cout<<"YES"<<endl;exit(0);}for(int i=1;i<=4;i++){int nx=x+dx[i],ny=y+dy[i];if(1<=nx&&nx<=n&&1<=ny&&ny<=m&&vis[nx][ny]==0&&s[nx][ny]!='#'){dfs2(nx,ny);}}
    }
    int main()
    {int sx,sy,ex,ey,i,j;cin>>n>>m;for(i=1;i<=n;i++){for(j=1;j<=m;j++){cin>>s[i][j];if(s[i][j]=='S'){sx=i;sy=j;}if(s[i][j]=='E'){ex=i;ey=j;}}}dfs1(sx,sy);memset(vis,0,sizeof(vis));dfs2(ex,ey);cout<<"NO"<<endl;return 0;
    }
    

\(D\) 牛客 NC275683 又是一年毕业季 \(AC\)

  • 在前 \(n+1\) 个质数里找到一个最小的不在 \(\{ a \}\) 中出现过的质数即可。

    点击查看代码
    int prime[300010],vis[3000010],f[3000010],len=0;
    void isprime(int n)
    {memset(vis,0,sizeof(vis));for(int i=2;i<=n;i++){if(vis[i]==0){len++;prime[len]=i;	}for(int j=1;j<=len&&i*prime[j]<=n;j++){vis[i*prime[j]]=1;if(i%prime[j]==0){break;}}}
    }
    int main()
    {int t,n,a,i,j;cin>>t;isprime(3000000);for(j=1;j<=t;j++){memset(f,0,sizeof(f));cin>>n;for(i=1;i<=n;i++){cin>>a;if(a<=3000000&&vis[a]==0){f[a]=1;}}for(i=1;i<=n+1;i++){if(f[prime[i]]==0){cout<<prime[i]<<endl;break;}}}return 0;
    }
    

\(E\) 牛客 NC275713 多米诺骨牌 \(AC\)

  • 同 CF56E Domino Principle ,处理出向右的最远延伸距离。

  • 删掉被包含的小区间,然后取 \(m\) 个长度较大的彼此不相交区间即可。

    点击查看代码
    struct node
    {int x,r,L,R;
    }a[200010];
    int len[200010];
    bool cmp(node a,node b)
    {return a.x<b.x;
    }
    int main()
    {int t,n,m,nn,pos,ans=0,i,j;cin>>t;for(j=1;j<=t;j++){cin>>n>>m;ans=nn=pos=0;for(i=1;i<=n;i++){cin>>a[i].r;}for(i=1;i<=n;i++){cin>>a[i].x;}sort(a+1,a+1+n,cmp);for(i=1;i<=n;i++){a[i].L=a[i].R=i;}for(i=n;i>=1;i--){while(a[i].R+1<=n&&a[i].x+a[i].r>=a[a[i].R+1].x){a[i].r=max(a[i].r,a[a[i].R+1].x+a[a[i].R+1].r-a[i].x);a[i].R=a[a[i].R+1].R;}}for(i=n;i>=1;i--){while(a[i].R+1<=n&&a[i].x+a[i].r>=a[a[i].R+1].x){a[i].R=max(a[i].R,a[a[i].R+1].R);}}for(i=1;i<=n;i++){if(a[pos].R>=a[i].R){continue;}else{nn++;pos=i;len[nn]=a[i].R-a[i].L+1;}}sort(len+1,len+1+nn,greater<int>());for(i=1;i<=min(nn,m);i++){ans+=len[i];}cout<<ans<<endl;}return 0;
    }
    

\(F\) 牛客 NC275719 自爆机器人

  • 考虑在 \(i,j\) 两栋墙壁中移动的本质是消耗 \(2|x_{i}-x_{j}|\) 的时间。

  • 除去 \(n\) 的必须消耗时间外,以 \(m-1\) 段墙壁间的区间作为物品跑完全背包即可。

  • \(m-1\) 段的区间长度中至多有 \(\sqrt{n}\) 个本质不同的长度,去重后时间复杂度为单次查询时间复杂度为 \(O(t\sqrt{n})\)

    点击查看代码
    int x[200010],a[200010],f[200010];
    int main()
    {int T,n,m,t,ans,i,j,k;cin>>T;for(k=1;k<=T;k++){cin>>n>>m>>t;ans=0;memset(f,0,sizeof(f));for(i=1;i<=m;i++){cin>>x[i];}sort(x+1,x+1+m);for(i=1;i<=m-1;i++){a[i]=2*(x[i+1]-x[i]);}sort(a+1,a+m);a[0]=unique(a+1,a+m)-(a+1);f[0]=1;for(i=1;i<=a[0];i++){for(j=a[i];j<=t-n;j++){f[j]|=f[j-a[i]];}}for(i=t-n;i>=0;i--){if(f[i]==1){ans=i+n;break;}}cout<<ans<<endl;}return 0;
    }
    

\(G\) 牛客 NC275735 大鱼吃小鱼

  • 考虑进行差分,接着进行前缀和即可计算某一时刻鱼的重量的总和。

  • 考虑将重量进行离散化,树状数组维护原重量方便差分的询问。

  • 吃掉不超过自身当前重量的鱼本质上是一个近似斐波那契求和的过程,迭代上界大约在 \(43\) 次左右,时刻离散化后暴力进行迭代即可。

    点击查看代码
    struct node
    {ll pos,val,tim;
    }q[200010];
    ll b[100010],l[100010],r[100010],y[100010],cnt=0;
    void add(ll pos,ll val,ll tim)
    {cnt++;q[cnt].pos=pos;q[cnt].val=val;q[cnt].tim=tim;
    }
    bool cmp(node a,node b)
    {return a.tim<b.tim;
    }
    struct BIT
    {ll c[200010];ll lowbit(ll x){return (x&(-x));}void add(ll n,ll x,ll val){for(ll i=x;i<=n;i+=lowbit(i)){c[i]+=val;}}ll getsum(ll x){ll ans=0;for(ll i=x;i>=1;i-=lowbit(i)){ans+=c[i];}return ans;}
    }T;
    int main()
    {ll t,n,x,pos,ans,sum,num,last,i,j,k,h;cin>>t;for(h=1;h<=t;h++){cin>>n>>x;cnt=0;for(i=1;i<=n;i++){cin>>l[i]>>r[i]>>y[i];b[i]=y[i];}sort(b+1,b+1+n);b[0]=unique(b+1,b+1+n)-(b+1);for(i=1;i<=n;i++){pos=lower_bound(b+1,b+1+b[0],y[i])-b;add(pos,y[i],l[i]);add(pos,-y[i],r[i]);}sort(q+1,q+1+cnt,cmp);ans=x;for(i=1;i<=cnt;i=j+1){j=i;while(q[j+1].tim==q[j].tim&&j+1<=cnt){j++;}for(k=i;k<=j;k++){T.add(b[0],q[k].pos,q[k].val);}sum=x;last=0;while(1){num=T.getsum(upper_bound(b+1,b+1+b[0],sum)-b-1);if(num==last){break;}else{sum+=num-last;last=num;}}ans=max(ans,sum);}cout<<ans<<endl;}return 0;
    }
    

总结

  • \(D\) 把调和级数的时间复杂度算错了,吃了 \(1\) 发罚时;因为清空不当,吃了 \(2\) 发罚时。
  • \(F\) 赛时没切可能是因为太着急了(?)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/786437.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL Server 数据库 优化 性能瓶颈

优化sql查询,分库分表,读写分离。 建立索引,分页,时间段不要太长(限制数量)。 升级电脑:固态硬盘,多个cpu,万兆网口。 超级大表等优化。一查询,磁盘 100%lock select * from xx (nolock) 预防为主,测试为重。 建立模拟环境(测试环境),一模一样的应用环境,提前测…

线性dp:大盗阿福(打家劫舍)

大盗阿福本题与leetcode198题——打家劫舍的题意一模一样,阅读完本文以后可以尝试以下题目力扣题目链接) 题目叙述: 阿福是一名经验丰富的大盗。趁着月黑风高,阿福打算今晚洗劫一条街上的店铺。这条街上一共有N家店铺,每家店中都有一些现金。阿福事先调查得知,只有当他同时…

Nexpose v6.6.266 for Linux Windows - 漏洞扫描

Nexpose v6.6.266 for Linux & Windows - 漏洞扫描Nexpose v6.6.266 for Linux & Windows - 漏洞扫描 Rapid7 Vulnerability Management, release Aug 21, 2024 请访问原文链接:https://sysin.org/blog/nexpose-6/,查看最新版。原创作品,转载请保留出处。 作者主页:…

扫描线总结

扫描线是线段树的典型应用。这玩意不难,用途也比较狭窄,重点在理解思想。例 0 【模板】扫描线 题意 求 \(n\) 个四边平行于坐标轴的矩形的面积并。 对于 \(100\%\) 的数据,\(1 \le n \le {10}^5\),\(0 \le x_1 < x_2 \le {10}^9\),\(0 \le y_1 < y_2 \le {10}^9\)。…

Pollard-Rho学习笔记

1.利用最大公约数求出一个约数 n和某个数的公约数一定是n的约数,即\(\forall k \in\mathbf{N}_{+},\gcd(k,n) \mid n\),只要选取适当的k使得\(1<\gcd(k,n)< n\),,就能够求得n的一个约数 满足这个条件的k很多,n的因数的大部分倍数都可行 我们通过\(f(x)=(x^2+c)\bmod…

DaVinci Resolve Studio 19.0 正式版 (macOS, Windows) - 剪辑、调色、特效和音频后期制作

DaVinci Resolve Studio 19.0 正式版 (macOS, Windows) - 剪辑、调色、特效和音频后期制作DaVinci Resolve Studio 19.0 正式版 (macOS, Windows) - 剪辑、调色、特效和音频后期制作 Blackmagic Design DaVinci Resolve Studio 请访问原文链接:https://sysin.org/blog/davinci…

读软件开发安全之道:概念、设计与实施07密码学(上)

密码学1. 加密工具 1.1. 加密工具之所以没有得到充分使用,就是因为人们往往认为密码学是一个准入门槛极高的专业领域 1.2. 如今的加密学大部分都源自纯数学,所以只要能够正确使用,加密学确实行之有效1.2.1. 不代表这些算法本身确实无法破解,而是需要数学领域出现重大突破才…

004.MinIO-DirectPV分布式存储部署

MinIO部署介绍 部署概述 Kubernetes hostpath、local和本地静态配置都存在需要事先在node节点准备好可用的块存储或文件系统,例如对插入的硬盘,或者磁盘阵列做分区格式化,文件系统则需提前创建好Kubernetes即将利用的挂载目录,并且两种方法都会有亲和性限制,无法做到让Kub…

dotnet 默认创建的 JsonContent 没有 Content Lenght 的内容头

本文记录一个 dotnet 的设计问题,默认创建出来的 JsonContent 对象的 Headers 里,是没有 Content-Length 信息的如下面代码创建一个 JsonContent 对象 using System.Net.Http.Json;var foo = new Foo();var jsonContent = JsonContent.Create(foo);class Foo {public int Val…

dotnet X11 多次调用 XPutImage 是否能做到渲染同步

本文将告诉大家我在麒麟系统和统信系统以及分别搭配飞腾和兆芯处理器的设备上,使用连续的 XPutImage 方法推送界面,测试是否能够在一次渲染内完成。测试结论是不能做到渲染同步本文的核心测试代码如下XPutImage(display, handle, gc, ref xImage, @event.ExposeEvent.x, @eve…

dotnet C# 结构体出方法弹栈之后的行为

本文记录我在 .NET 9 里测试的行为,在方法里面创建的在栈上的结构体,在方法执行结束之后,栈上的结构体将会被弹栈进入不受管理区域,此时的结构体内存内容不会立刻被清空或被改写这是我在对 dotnet X11 栈空间被回收导致调用 XPutShmImage 闪退 博客的内容进行更多的测试,确…

Tesla 开发者 API 指南:BLE 密钥 – 身份验证和车辆命令

注意:本工具只能运行于 mac 或者 linux, win下不支持。 1. 克隆项目到本地 https://github.com/teslamotors/vehicle-command.git 2. 项目根目录下执行命令 go get ./... go build ./... go install ./... cd cmd cd tesla-control go build 3. 生成密钥 生成私钥 openssl e…