牛客练习赛52-记录

正题

比赛链接:https://ac.nowcoder.com/acm/contest/1084#question


成绩

在这里插入图片描述


T1:T1:T1:数数

题目大意

给出nnn,求∑i=1n∑j=1n(i∗j)\sum_{i=1}^n \sum_{j=1}^n (i*j)i=1nj=1n(ij)

∏i=1n∏j=1n(i∗j)\prod_{i=1}^n\prod_{j=1}^n(i*j)i=1nj=1n(ij)

解题思路

第一个答案显然就是
(∑i=1ni)∗(∑j=1nj)(\sum_{i=1}^ni)*(\sum_{j=1}^n j)(i=1ni)(j=1nj)
等差数列求和即可O(1)O(1)O(1)解决。
第二个是
∏i=1ni2n⇒(∏i=1ni)2n\prod_{i=1}^ni^{2n} \Rightarrow\ (\prod_{i=1}^n i)^{2n}i=1ni2n (i=1ni)2n
预处理后O(log⁡n)O(\log n)O(logn)回答。

codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll XJQ=998244353;
ll t,n,s[10010000],sum;
ll power(ll x,ll b)
{ll ans=1;while(b){if(b&1) ans=ans*x%XJQ;x=x*x%XJQ;b>>=1;}return ans;
}
int main()
{scanf("%lld",&t);s[0]=1;for(ll i=1;i<=1e7;i++)s[i]=s[i-1]*i%XJQ;while(t--){scanf("%lld",&n);sum=((n+1)*n/2)%XJQ;printf("%lld %lld\n",sum*sum%XJQ,power(s[n],2*n));}
}

T2:GalahadT2:GalahadT2:Galahad

题目大意

一个长度为nnn的序列,求[l,r][l,r][l,r]这个区间的和,需要注意的是若一个数出现多次的话只计算一次。

解题思路

莫队会T\color{red}\texttt{\huge莫队会T}莫队会T
我们先将询问按照右端点单调不降排序,然后我们用指针进行扫描。

现在我们不需要考虑右端点了,只需要在已有的数中每次询问一个左端点。

我们考虑如何计算,因为不能重复,我们可以对于每个数计算出一个可以影响的范围,也就是最右边的那个数。

我们现在得出一种算法,我们每次右端点移动时加入一个数,若这个数之前没有就直接在树状数组上加入,否则就将前面的那个赋值为0后再进行加入。

codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define lowbit(x) (x&-x)
#define ll long long
using namespace std;
const ll N=5e5+100;
struct node{ll l,r,id;
}a[N];
ll n,m,w[N],t[N],ans[N],v[N],sum;
void change(ll x,ll z)
{while(x<=n){t[x]+=z;x+=lowbit(x);}
}
ll ask(ll x)
{ll ans=0;while(x){ans+=t[x];x-=lowbit(x);}return ans;
}
bool cMp(node x,node y)
{return x.r<y.r;}
int main()
{scanf("%lld%lld",&n,&m);for(ll i=1;i<=n;i++)scanf("%lld",&w[i]);for(ll i=1;i<=m;i++)scanf("%lld%lld",&a[i].l,&a[i].r),a[i].id=i;sort(a+1,a+1+m,cMp);ll tail=1;for(ll i=1;i<=m;i++){while(tail<=a[i].r){if(v[w[tail]])  change(v[w[tail]],-w[tail]);else sum+=w[tail];v[w[tail]]=tail;change(tail,w[tail]);tail++;}ans[a[i].id]=sum-ask(a[i].l-1);}for(ll i=1;i<=m;i++)printf("%lld\n",ans[i]);
}

T3:T3:T3:烹饪

题目大意

nnn个数的序列aaa,在其中选出若干个组成无序序列bbb。使得N+∈∑(bi∗ki)\mathbb{N}^+\in \sum (b_i*k_i)N+(biki)
kik_iki为任意整数。

求有多少种选择方案数。

解题思路

根据裴蜀定理,我们有ax+by=gcd(a,b)ax+by=gcd(a,b)ax+by=gcd(a,b),若gcd(a,b)=1gcd(a,b)=1gcd(a,b)=1那么就可以变成任意正整数。我们可以将其扩展到多元。
gcd(a,b)x+cy=gcd(a,b,c)⇒ax+by+cz=gcd(a,b,c)gcd(a,b)x+cy=gcd(a,b,c)\Rightarrow ax+by+cz=gcd(a,b,c)gcd(a,b)x+cy=gcd(a,b,c)ax+by+cz=gcd(a,b,c)
以此类推我们可以得出若我们选择的无序序列bbbgcd=1gcd=1gcd=1那么就满足条件。

我们依次设立dpdpdp,设fi,jf_{i,j}fi,j表示到第iii个,gcdgcdgcd之和为jjj时的方案数。我们有
fi,gcd(i,j)=∑fi−1,jf_{i,gcd(i,j)}=\sum f_{i-1,j}fi,gcd(i,j)=fi1,j

这里我们倒过来转移即可,下面的代码是滚动了的。

codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll XJQ=998244353;
ll n,num,f[2100];
ll power(ll x,ll b)
{ll ans=1;while(b){if(b&1) ans=ans*x%XJQ;x=x*x%XJQ;b>>=1;}return ans;
}
int main()
{scanf("%lld",&n);for(ll i=1;i<=n;i++){scanf("%lld",&num);f[num]=(f[num]+1)%XJQ;for(ll j=1;j<=2000;j++)(f[__gcd(j,num)]+=f[j])%=XJQ;}printf("%lld",(f[1]*power(2,XJQ-2))%XJQ);
}

T4:T4:T4:粉丝群

题目大意

求有多少个nnn个数的序列满足以下条件

  1. 和为2n2n2n且每个数不小于1
  2. 任意一个子集的和不为nnn

求有多少个,和字典序第kkk小的方案的异或和。

解题思路

结论题,打表找一下就好了。
我们会发现方案数是n−1n-1n1111和一个n+1n+1n+1,还有若是奇数的话还有一个全是222的方案。

证明一下(十分感性),此时我们有一个长度为序列nnn,此时对于每个1≤ai≤n1\leq a_i\leq n1ain

那么我们发现若一个数为2+k2+k2+k那么至少就会有kkk个数为111,假设最终能组成nnn的有lll个数那么有
2l+∑i=1lki=n−z(z∈[0,∑i=1lk])2l+\sum_{i=1}^l k_i=n-z(z\in [0,\sum_{i=1}^l k])2l+i=1lki=nz(z[0,i=1lk])
⇒∑i=1lki≥n−2l−∑i=1lk\Rightarrow \sum_{i=1}^l k_i\geq n-2l-\sum_{i=1}^l ki=1lkin2li=1lk∑i=1lki≤n−2l\sum_{i=1}^l k_i\leq n-2li=1lkin2l
显然此时对于任意∑i=1lki&gt;0\sum_{i=1}^l k_i&gt;0i=1lki>0都有解

codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
ll n,k;
int main()
{scanf("%lld%lld",&n,&k);printf("%lld\n",n+(n&1)-(n==1));if(n&1) printf("%lld",(k==n)?2:(n+1));else printf("%lld",(n+1)^1);
}

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

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

相关文章

Windows Developer Day - Windows AI Platform

本次 Windows Developer Day&#xff0c;最值得期待的莫过于 Windows AI Platform 了&#xff0c;可以说是千呼万唤始出来。观看直播的开发者们&#xff0c;留言最多的也是 Windows AI Platform。下面结合微软提供的展示过程&#xff0c;文档和 Git Sample 来详细分析一下。基础…

EF Core:一统SQL和NoSQL数据库

推出EF Core的初衷之一&#xff0c;就是开发出一种可在很少甚至不更改代码的情况下使用SQL和NoSQL数据库的模型。Microsoft正向此目标迈出第一步&#xff0c;发布了用于Azure Cosmos DB的实验性EF提供程序&#xff08;provider&#xff09;。据EF 2.1路线图介绍&#xff1a;Cos…

Java 并发总结——进程与线程

一、进程与线程 &#xff08;1&#xff09;线程与进程 进程是程序在一个数据集合上运行的过程&#xff0c;它是系统进行资源分配和调度的一个独立单位。进程实体由程序段&#xff0c; 数据段 PCB&#xff08;进程控制块&#xff09;组成。 线程可以看做轻量级进程&#xff0c;…

.NET Core使用skiasharp文字头像生成方案(基于docker发布)

一、问题背景目前.NET Core下面针对于图像处理的库微软并没有集成&#xff0c;在.NET FrameWork下我们已经习惯使用System.Drawing类库做简单的图像处理&#xff0c;到了.NET Core下一脸懵逼的我&#xff0c;只能百度谷歌看看有没啥解决方案&#xff0c;好在网上资料也多&#…

jzoj6375-华灵「蝶妄想」【结论题】

正题 题目大意 n∗mn*mn∗m填(((或者)))。求一个方案使得最多的行和列匹配。 解题思路 我们先考虑nnn或mmm为奇数&#xff0c;那么显然奇数的肯定不必配&#xff0c;那么就只需要考虑行或列即可。 若nnn和mmm都为偶数时 我们发现在边边的行列不可能都匹配上&#xff0c;那就…

C# - Span 全面介绍:探索 .NET 新增的重要组成部分

假设要公开特殊化排序例程&#xff0c;以就地对内存数据执行操作。可能要公开需要使用数组的方法&#xff0c;并提供对相应 T[] 执行操作的实现。如果方法的调用方有数组&#xff0c;且希望对整个数组进行排序&#xff0c;这样做就非常合适。但如果调用方只想对部分数组进行排序…

C#中DateTime的缺陷与代替品DateTimeOffset

C#中的DateTime在逻辑上有个非常严重的缺陷&#xff1a;> var d DateTime.Now;> var d2 d.ToUniversalTime();> d d2false> d.Equals(d2);false在C#交互模式中输入以上代码&#xff0c;可以发现尽管一个是本地时间&#xff08;d&#xff09;&#xff0c;一个是U…

重磅消息-Service Fabric 正式开源

微软的Azure Service Fabric的官方博客在2017.3.24日发布了一篇博客 Service Fabric .NET SDK goes open source &#xff0c;介绍了社区呼声最高的Service Fabric开源的情况以及当前的情况&#xff0c;当时开源了Service Fabric的.NET SDK部分&#xff0c;社区一直在期盼着Ser…

.NET Core 配置Configuration杂谈

前言.NET Core 在配置文件的操作上相对于.NET Framework做了不少改变&#xff0c;今天来聊一聊。关于Configuration的Package都是以Microsoft.Extensions.Configuration开头的支持多种方式的配置&#xff0c;包括内存、Json文件、XML文件等等&#xff0c;今天我们主要用Json格式…

秘密:从程序员到领导者的微妙之处

读到一篇关于程序员、领导力和领导者的好文章&#xff0c;翻译过来分享下。借用一句文中的话&#xff1a;“好吧&#xff0c;我只是个程序员&#xff0c;为什么需要领导&#xff1f;” &#xff0c;读完你就知道了。做一个优秀的领导者可能不是大部分程序员会立即认同的东西。许…

老衣的微服务实践简要指引2017版

这是老衣在2017年5月份总结的&#xff0c;适用于中小团队跨平台微服务开发的实践指引&#xff08;简化版&#xff09;。若有有不当之处&#xff0c;欢迎指点更正因本文涉及到大量第三方库或工具&#xff0c;详细学习和了解需要参考相关官方文档。若您在使用Mac电脑&#xff0c;…

Entity Framework Core 之数据库迁移

前言最近打算用.NET Core写一份开源的简易CMS系统,来练练手所以又去深入研究了一下Entity Framework Core 发现其实有些细节园子里还是很少讲到.特意整理了几个细节.正文1.数据库迁移先了解一下什么是"数据库迁移",它提供了一种方法&#xff0c;可以逐步将Code First…

随机挑战#4记录

正题 van♂van♂van♂成记录 题目 P2052−[NOI2011]P2052-[NOI2011]P2052−[NOI2011]道路修建【树】 博客链接:https://blog.csdn.net/Mr_wuyongcong/article/details/102249021 P2796−FacerP2796-FacerP2796−Facer的程序【dpdpdp】 博客链接:https://blog.csdn.net/Mr_wuy…

Visual Studio 2017 15.7 Preview 1 发布

上周 Visual Studio 2017 15.6 版和 Visual Studio for Mac 7.4 版已发布&#xff0c;今天 VS 发布了下一个次要更新的第一个预览&#xff1a;Visual Studio 2017 15.7。本预览的主要亮点包括&#xff1a;提高生产率更好的诊断额外的C 开发改进更好的Android和iOS环境管理通用 …

部署用于生产的Exceptionlees(一个强大易用的日志收集服务)

Exceptionless简介Exceptionless从翻译来看是无异常的意思&#xff0c;其实它收集了很多异常信息。大家可以把他看做事一个非常好用的日志收集服务。还提供了&#xff0c;多组织、多项目。它是一个开源项目&#xff0c;作者也非常的热心&#xff0c;项目地址https://github.com…

ASP.NET Core Web API下事件驱动型架构的实现(四):CQRS架构中聚合与聚合根的实现

在前面两篇文章中&#xff0c;我详细介绍了基本事件系统的实现&#xff0c;包括事件派发和订阅、通过事件处理器执行上下文来解决对象生命周期问题&#xff0c;以及一个基于RabbitMQ的事件总线的实现。接下来对于事件驱动型架构的讨论&#xff0c;就需要结合一个实际的架构案例…

如何看待微软新开源的Service Fabric?

本人曾在Service Fabric (SF)项目中做了几年&#xff0c;这次很兴奋能看到它的开源。短短两天已经有1300多个关注了。我看了一下开源的代码&#xff0c;真是满满的干货&#xff0c;200多万行C代码&#xff0c;所有最核心的协议算法都在里面。但是&#xff0c;不得不承认&#x…

RabbitMQ教程C#版 “Hello World”

先决条件 本教程假定RabbitMQ已经安装&#xff0c;并运行在localhost标准端口&#xff08;5672&#xff09;。如果你使用不同的主机、端口或证书&#xff0c;则需要调整连接设置。从哪里获得帮助 如果您在阅读本教程时遇到困难&#xff0c;可以通过邮件列表联系我们。1.介绍Rab…

牛客小白月赛18-记录

正题 比赛链接:https://ac.nowcoder.com/acm/contest/1221 成绩 总结 好难&#xff0c;就拿了一些水题分 T1:Forsaken喜欢数论\texttt{T1:Forsaken喜欢数论}T1:Forsaken喜欢数论 题目大意 f(i)f(i)f(i)表示iii的最小质因子&#xff0c;求∑i2nf(i)\sum_{i2}^nf(i)∑i2n​f(i…

.NET Core开源API网关 – Ocelot中文文档

Ocelot是一个用.NET Core实现并且开源的API网关&#xff0c;它功能强大&#xff0c;包括了&#xff1a;路由、请求聚合、服务发现、认证、鉴权、限流熔断、并内置了负载均衡器与Service Fabric、Butterfly Tracing集成。这些功能只都只需要简单的配置即可完成&#xff0c;下面我…