牛客小白月赛17-记录(附题解)

正题

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


成绩

在这里插入图片描述在这里插入图片描述


总结

除了那道积分数学其他还好

后面没有FFF题的题解


T1:小sun的假期T1:小sun的假期T1:sun

题目大意

长度为nnn的序列,mmm个区间,求最大的没有被任何区间覆盖的区间。

解题思路

我们将区间按照右端点从大到小枚举,我们每次求从这个右端点往右可以扩展多少格。我们会发现只有右端点在它右边的会造成影响。而这个值就是这些区间最左的左端点。

codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e5+100;
struct node{int l,r;
}a[N];
int n,m,ans,Min;
bool cMp(node x,node y)
{return x.r<y.r;}
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=m;i++)scanf("%d%d",&a[i].l,&a[i].r);sort(a+1,a+1+m,cMp);Min=n;for(int i=m;i>=1;i--){ans=max(ans,Min-a[i].r);Min=min(Min,a[i].l);}printf("%d",ans);
}

T2:T2:T2:扫雷

题目大意

n∗mn*mnm的图,有一些雷,求每个位置旁边有多少雷

解题思路

暴力模拟不解释

codecodecode

#include<cstdio>
#include<string>
#include<iostream>
using namespace std;
int a[1002][1002],n,m;
int main()
{//freopen("mine.in","r",stdin);//freopen("mine.out","w",stdout);scanf("%d%d\n",&n,&m);string s;for (int x=1;x<=n;x++){getline(cin,s);for (int y=0;y<m;y++){if (s[y]=='*'){for (int i=x-1;i<=x+1;i++)for (int j=y-1;j<=y+1;j++){if (i>=0 && j>=0 && i<=n && j<=m && a[i][j+1]!=23333)a[i][j+1]++;}a[x][y+1]=23333;}}}for (int i=1;i<=n;i++){for (int j=1;j<=m;j++)if (a[i][j]==23333) printf("%c",'*');else printf("%d",a[i][j]);printf("\n");}
}

T3:T3:T3: 异或和

题目大意

nnn个数,求出现次数为奇数的数异或和

解题思路

若出现次数为偶数,两两异或抵消,所以就是求所有数的异或和

codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,a,ans;
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a),ans^=a ;printf("%d",ans);
}

T4:T4:T4:解密

题目大意

加密方法是将字符串每个字符ccc变为(k1∗c+k2)%26(k1*c+k2)\%26(k1c+k2)%26。给一串加密后的,要求解密。

解题思路

暴力枚举解密后的,然后匹配即可。

codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
ll k1,k2,big,a,n;
char s[1100];
int main()
{scanf("%lld%lld",&k1,&k2);scanf("%s",s+1);n=strlen(s+1);for(ll i=1;i<=n;i++){big=(s[i]<='Z');a=s[i]-(s[i]<='Z'?'A':'a');for(ll j=0;j<=25;j++)if((j*k1+k2)%26ll==a){printf("%c",j+(big?'A':'a'));break;}}
}

T5:T5:T5:图的遍历

题目大意

一张无向图,每次走两步,求至少增加多少条边可以遍历完整张图

解题思路

考虑贪心,我们先考虑现在的图联通,我们可以将图分为偶点和奇点。偶点就是可以遍历到的,奇点就是不能的,我们发现若有奇点此时答案为1,否则为0.

那若是分为若干个联通块呢?我们会发现联通块之间无论如何连接并不会影响答案,所以直接暴力连接即可。

codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e5+100;
struct node{int to,next;
}a[N*2];
int n,m,ls[N],tot,ans,z,last;
bool v[N][2];
void addl(int x,int y)
{a[++tot].to=y;a[tot].next=ls[x];ls[x]=tot;
}
void dfs(int x,int k)
{if(v[x][k]) return;v[x][k]=1;for(int i=ls[x];i;i=a[i].next)dfs(a[i].to,k^1);
}
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){int x,y;scanf("%d%d",&x,&y);addl(x,y);addl(y,x);}last=1;dfs(1,1);for(int i=2;i<=n;i++)if(!v[i][0]&&!v[i][1]){ans++;dfs(i,1);addl(last,i);last=i;}memset(v,0,sizeof(v));dfs(1,1);for(int i=1;i<=n;i++)if(!v[i][1]){ans++;break;}printf("%d",ans+z);
}

T7:T7:T7:区间求和

题目大意

一个序列,每次询问一个区间[l,r][l,r][l,r]
∑i=lrai∗num(ai)\sum_{i=l}^r a_i*num(a_i)i=lrainum(ai)
num(ai)num(a_i)num(ai)表示这个区间中aia_iai的数量

解题思路

显然的莫队不解释。

codecodecode

#pragma GCC optimize(2)
%:pragma GCC optimize(3)
%:pragma GCC optimize("Ofast")
%:pragma GCC optimize("inline")
%:pragma GCC optimize("-fgcse")
%:pragma GCC optimize("-fgcse-lm")
%:pragma GCC optimize("-fipa-sra")
%:pragma GCC optimize("-ftree-pre")
%:pragma GCC optimize("-ftree-vrp")
%:pragma GCC optimize("-fpeephole2")
%:pragma GCC optimize("-ffast-math")
%:pragma GCC optimize("-fsched-spec")
%:pragma GCC optimize("unroll-loops")
%:pragma GCC optimize("-falign-jumps")
%:pragma GCC optimize("-falign-loops")
%:pragma GCC optimize("-falign-labels")
%:pragma GCC optimize("-fdevirtualize")
%:pragma GCC optimize("-fcaller-saves")
%:pragma GCC optimize("-fcrossjumping")
%:pragma GCC optimize("-fthread-jumps")
%:pragma GCC optimize("-funroll-loops")
%:pragma GCC optimize("-fwhole-program")
%:pragma GCC optimize("-freorder-blocks")
%:pragma GCC optimize("-fschedule-insns")
%:pragma GCC optimize("inline-functions")
%:pragma GCC optimize("-ftree-tail-merge")
%:pragma GCC optimize("-fschedule-insns2")
%:pragma GCC optimize("-fstrict-aliasing")
%:pragma GCC optimize("-fstrict-overflow")
%:pragma GCC optimize("-falign-functions")
%:pragma GCC optimize("-fcse-skip-blocks")
%:pragma GCC optimize("-fcse-follow-jumps")
%:pragma GCC optimize("-fsched-interblock")
%:pragma GCC optimize("-fpartial-inlining")
%:pragma GCC optimize("no-stack-protector")
%:pragma GCC optimize("-freorder-functions")
%:pragma GCC optimize("-findirect-inlining")
%:pragma GCC optimize("-fhoist-adjacent-loads")
%:pragma GCC optimize("-frerun-cse-after-loop")
%:pragma GCC optimize("inline-small-functions")
%:pragma GCC optimize("-finline-small-functions")
%:pragma GCC optimize("-ftree-switch-conversion")
%:pragma GCC optimize("-foptimize-sibling-calls")
%:pragma GCC optimize("-fexpensive-optimizations")
%:pragma GCC optimize("-funsafe-loop-optimizations")
%:pragma GCC optimize("inline-functions-called-once")
%:pragma GCC optimize("-fdelete-null-pointer-checks")
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cctype>
#define ll long long
using namespace std;
const int N=1e5+100;
struct node{ll l,r,id,pos;
}a[N];
ll n,m,w[N],l,r,now,id[N],t;
ll cnt[N],ans[N];
bool operator <(node x, node y) {return x.pos<y.pos||(x.pos==y.pos&&x.r<y.r);
}
inline ll read() {ll x=0,f=1; char c=getchar();while(!isdigit(c)) {if(c=='-')f=-f;c=getchar();}while(isdigit(c)) x=(x<<1)+(x<<3)+c-48,c=getchar();return x*f;
}
void print(ll x){if (x>9) print(x/10); putchar(x%10+48); return;
}
void add(ll x)
{now+=(2*cnt[x]+1)*x;cnt[x]++;}
void del(ll x)
{now-=(2*cnt[x]-1)*x;cnt[x]--;}
int main()
{n=read();m=read();t=sqrt(n);for(ll i=1;i<=n;i++)w[i]=read();for(ll i=1;i<=m;i++)a[i].l=read(),a[i].r=read(),a[i].id=i,a[i].pos=(a[i].l-1)/t+1;sort(a+1,a+1+m);l=1,r=0;for(ll i=1;i<=m;i++){while(l>a[i].l) add(w[--l]);while(r<a[i].r) add(w[++r]);while(l<a[i].l) del(w[l++]);while(r>a[i].r) del(w[r--]);ans[a[i].id]=now;}for(ll i=1;i<=m;i++)print(ans[i]),putchar('\n');
}

T8:T8:T8:取球游戏

题目大意

ccc种颜色,抽随机nnn个(每种颜色等概率),求最后是mmm种颜色个数为奇数的概率

解题思路

我们设fi,jf_{i,j}fi,j表示抽到第iii个,颜色为jjj个的方案数,有
fi,j∗jc+&gt;fi+1,j−1f_{i,j}*\frac{j}{c}\ \ \ +&gt;\ \ \ f_{i+1,j-1}fi,jcj   +>   fi+1,j1
fi,j∗c−jc+&gt;fi+1,j+1f_{i,j}*\frac{c-j}{c}\ \ \ +&gt;\ \ \ f_{i+1,j+1}fi,jccj   +>   fi+1,j+1

这个可以用矩阵乘法优化即可。

codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll Size=111;
ll n,c,m;
double a[Size][Size],ans[Size][Size],C[Size][Size];
void mulself() {for(ll i=0;i<=c;i++)for(ll j=0;j<=c;j++)C[i][j]=0;for(ll i=0;i<=c;i++)for(ll j=0;j<=c;j++)for(ll k=0;k<=c;k++)C[i][j]+=a[i][k]*a[k][j];for(ll i=0;i<=c;i++)for(ll j=0;j<=c;j++)a[i][j]=C[i][j];
}
void mul(){for(ll i=0;i<=c;i++)for(ll j=0;j<=c;j++)C[i][j]=0;for(ll i=0;i<=c;i++)for(ll j=0;j<=c;j++)for(ll k=0;k<=c;k++)C[i][j]+=a[i][k]*ans[k][j];for(ll i=0;i<=c;i++)for(ll j=0;j<=c;j++)ans[i][j]=C[i][j];
}
void ksm(ll b) {while(b){if(b&1) mul();mulself();b>>=1;}
}
int main()
{scanf("%lld%lld%lld",&c,&n,&m);a[0][1]=1;a[c][c-1]=1;for(ll i=1;i<c;i++)a[i][i+1]=(double)(c-i)/c,a[i][i-1]=(double)i/c;for(ll i=0;i<=c;i++)ans[i][i]=1;ksm(n);printf("%.3lf",ans[0][m]);
}

T9:T9:T9:坐电梯

题目大意

mmm个请求楼层,优先走到最高层的,求要多久才接到kkk

解题思路

在所有读入的数中求一个最大值hhh,然后答案就是2h−1−k2h-1-k2h1k

codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,k,maxs,num;
int main()
{scanf("%d%d",&n,&k);maxs=k;for(int i=1;i<=n;i++){scanf("%d",&num);maxs=max(maxs,num);}printf("%d",maxs-1+maxs-k);
}

T10:T10:T10:技术

题目大意

一序列中有的空缺了,求有多少种填数方式使得这是一个单调不降序列

解题思路

我们发现若一段连续的空缺lll,且这段空缺中可以填的数的个数为kkk,那么这段空缺的方案数就是Ck+l−1l−1C^{l-1}_{k+l-1}Ck+l1l1(插板法)。然后计算方案数即可。

codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll XJQ=1e9+7,N=2e6+100;
ll num[N],n,ans=1,last=1000,z,inv[N];
ll C(ll n,ll m)
{if(n<m) return 0;ll ans=1;for(ll i=1;i<=m;i++)ans=ans*((n-i+1)%XJQ)%XJQ*inv[i]%XJQ;return ans;
}
int main()
{scanf("%lld",&n);inv[1]=1;for(ll i=2;i<=N;i++)inv[i]=inv[XJQ%i]*(XJQ-XJQ/i)%XJQ;for(ll i=1;i<=n;i++){scanf("%lld",&num[i]);if(num[i]){(ans*=C(last-num[i]+i-z-1,i-z-1))%=XJQ;last=num[i];z=i;}}(ans*=C(last-1+n-z,n-z))%=XJQ;printf("%lld",ans);
}

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

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

相关文章

安全、高效的MySQL DDL解决方案

MySQL作为目前应用最广泛的开源关系型数据库&#xff0c;是许多网站、应用和商业产品的主要数据存储。在生产环境&#xff0c;线上数据库常常面临着持续的、不断变化的表结构修改&#xff08;DDL&#xff09;&#xff0c;如增加、更改、删除字段和索引等等。其中一些DDL操作在M…

DNS总结

一、DNS &#xff08;1&#xff09;简介 域名系统&#xff08;英文&#xff1a;Domain Name System&#xff0c;缩写&#xff1a;DNS&#xff09;是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使人更方便地访问互联网。 DNS 协议也是…

谈谈在.NET Core中使用Redis和Memcached的序列化问题

前言在使用分布式缓存的时候&#xff0c;都不可避免的要做这样一步操作&#xff0c;将数据序列化后再存储到缓存中去。序列化这一操作&#xff0c;或许是显式的&#xff0c;或许是隐式的&#xff0c;这个取决于使用的package是否有帮我们做这样一件事。本文会拿在.NET Core环境…

牛客练习赛52-记录

正题 比赛链接:https://ac.nowcoder.com/acm/contest/1084#question 成绩 T1:T1:T1:数数 题目大意 给出nnn&#xff0c;求∑i1n∑j1n(i∗j)\sum_{i1}^n \sum_{j1}^n (i*j)i1∑n​j1∑n​(i∗j) 和 ∏i1n∏j1n(i∗j)\prod_{i1}^n\prod_{j1}^n(i*j)i1∏n​j1∏n​(i∗j) 解题…

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;就需要结合一个实际的架构案例…