【jzoj】2018.2.5NOIP普及组——C组模拟赛

前言

今天第一次正式C组题,不过……比较恐怖。


正题


题目1:公牛和母牛(jzoj1292)

有n头牛,可以是公牛或母牛,每头公牛之间至少得有k头母牛。求方案数。

输入输出(建议跳过)

Input

第一行:两个空格隔开的整数N(N<=100000)和K。

Output

输出一个整数表示方法总数,答案可能很大,所以只需输出mod 5,000,011的值即可。

Sample Input

4 2

Sample Output

6

解题思路

推出动态转移方程,用f[i]来表示i头牛的方案数。

f[i]=f[i1]+1(i<=k+1)f[i]=f[i−1]+1(i<=k+1)

f[i]=f[ik]+f[i1](i>k+1)f[i]=f[i−k]+f[i−1](i>k+1)

因为如果在i处放置了公牛那么前k个就不能放,所以是f[i-k],放母牛的话就累加之前的方案数f[i-1]

代码

#include<cstdio>
using namespace std;
int n,k,f[100001];
int main()
{scanf("%d%d",&n,&k);k++;//加f[0]=1;//初始化for (int i=1;i<=n;i++){if (i>k){f[i]=(f[i-k]+f[i-1])%5000011;//动态转移}else{f[i]=(1+f[i-1])%5000011;//动态转移}}printf("%d",f[n]);//输出
}

题目2:最短路(jzοj3777)

每个点的权值遵守以下规律

f[1][1]=1
f[i][j]=f[i-1][j]+f[i][j-1]

然后求(1,1)到(m,n)的最小权值 mod 10000000007。

输入输出(建议跳过)

Input

一行两个正整数N,M,表示图的大小。

Output

一行一个整数Ans,表示答案模1000000007后的值。

Sample Input

1 2

Sample Output

6

解题思路

杨辉三角,也就是组合,然后用快速幂求组合公式

cnm=n!m!(nm)!cmn=n!m!(n−m)!

然后取膜的快速幂
cnm(modp)=((m!(nm)!)m!(p2)(modp)+n)(modp)cmn(modp)=((m!(n−m)!)∗m!(p−2)(modp)+n)(modp)

代码

#include<cstdio>
#include<algorithm>
#define mod 1000000007
using namespace std;
long long n,m,s,x,y;
long long qsm(long long x,long long c)//快速幂
{long long ans=1;while (c){if (c&1) {ans=(ans*x)%mod;}x=(x*x)%mod;c>>=1;}return ans;
}
int main()
{scanf("%lld%lld",&n,&m);if (n<m) swap(n,m);x=1;y=1;for (long long i=n+2;i<=n+m+1;i++) x=(x*i)%mod;//求m!(n-m)!for (long long i=1;i<=m;i++) y=(y*i)%mod;//m!printf("%lld",(x*qsm(y,mod-2)%mod+n)%mod);//公式
}

题目3:Magical GCD(jzoj3780)

给出一个长n的序列,i到j的价值为i到j的最大公约数乘以它的长度。求最大价值

输入输出(建议无视)

Input

单个测试点包含多组数据。
输入的第一行是一个整数T表示数据组数。
每组数据的第一行是一个整数N,描述序列长度。
接下来N个数字,描述这个序列元素A[i]。

Output

对于每组测试数据输出一行,包含一个整数,表示序列最大的 Magical GCD。

Sample Input

1
5
30 60 20 20 20

Sample Output

80

解题思路

暴力枚举左到右会超时,所以我们用g[i]表示从i到r的gcd。
然后我们会发现这样会有许多重复的,只要我们过滤掉重复的gcd就好了。
所以我们先用一个右指针和左指针,发现重复时,就可以利用指针在下次枚举时无视自己

代码

#include<cstdio>
#include<iostream>
#define ll long long
using namespace std;
int ls[100001],nx[100001],t,n;
ll a[100001],g[100001],maxs;
ll gcd(ll x,ll y)//辗转相除法
{if (x%y==0) return y;else return gcd(y,x%y);
}
int main()
{scanf("%d",&t);for (int ti=1;ti<=t;ti++){maxs=0;scanf("%d",&n);for (int i=1;i<=n;i++){scanf("%lld",&a[i]);g[i]=a[i];nx[i]=i+1;//左指针ls[i]=i-1;//右指针}for (int r=1;r<=n;r++)for (int i=1;i<=r;i=nx[i]){g[i]=gcd(g[i],a[r]);//求最大公约maxs=max(g[i]*(r-i+1),maxs);//求最大值if (g[i]==g[i-1])//发现重复{nx[ls[i]]=nx[i];//修改指针让下次无视自己ls[nx[i]]=ls[i];//同上}}printf("%lld\n",maxs);}
}

题目4:Multiset(jzoj3781)

有一个数0,有以下两种操作

让一个数增加x=x+1
将一个数分裂为两个非负整数

给出一个序列,求出至少要多少次操作才可以变为这个序列

输入输出(建议无视)

Input

第一行为一个整数N,描述最终集合的大小。
第二行为N个非负整数,为最终集合的每一个元素。

Output

输出唯一一行,Alice 最少玩的轮数。

Sample Input

Sample Input 1
1
0

Sample Input 2
4
1 1 1 1

Sample Input 3
5
0 3 0 3 0

Sample Output

Sample Output 1
0
Sample Output 2
3
Sample Output 3
5

解题思路

首先感谢纪中dalao的帮助
反推,就变成了减去1和合并这两种操作。
然后贪心:用桶w[i]来表示在第i步有多少个数会变为0

代码

#include<cstdio>
#include<iostream>
using namespace std;
int n,x,maxs,s;
int w[1000001];
int main()
{scanf("%d",&n);for (int i=1;i<=n;i++){scanf("%d",&x);w[x]++;//桶maxs=max(maxs,x);//记录最大值}s=w[0];//0的个数for (int i=1;i<=maxs;i++){s=(s+1)/2+w[i];//合并0并加入新的0}while (s>1) {s=(s+1)/2;maxs++;}//合并剩余部分printf("%d",maxs);//输出
}

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

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

相关文章

LinkedHashSet VS HashSet

LinkedHashSet的使用 LinkedHashSet作为HashSet的子类&#xff0c;在添加数据的同时&#xff0c;每个数据还维护了两个引用&#xff0c;记录此数据前一个 数据和后一个数据。 优点&#xff1a;对于频繁的遍历操作&#xff0c;LinkedHashSet效率高于HashSet

oop

# 一个典型的类的定义 class Student:def __init__(self, name, score): # 构造方法第一个参数必须为 selfself.name name # 实例属性self.score scoredef say_score(self): # 实例方法print(self.name, 的分数是&#xff1a;, self.score)s1 Student(张三, 80) # s1 是…

隐马尔科夫模型-基本模型与三个基本问题

转载自 隐马尔科夫模型-基本模型与三个基本问题 隐马尔科夫模型-基本模型与三个基本问题 这次学习会讲了隐马尔科夫链&#xff0c;这是一个特别常见的模型&#xff0c;在自然语言处理中的应用也非常多。 常见的应用比如分词&#xff0c;词性标注&#xff0c;命名实体识别等…

日常技术分享 : 一定要注意replcaceAll方法,有时候会如你所不愿!

点击上方蓝色关注我们&#xff01;今天&#xff0c;踩过了一个雷&#xff0c;特此整理了一下&#xff0c;以防大家也被中招&#xff01;事情是这样的&#xff0c;在做一个项目时&#xff0c;需要用到String类的replcaceAll方法&#xff0c;可以这么说&#xff0c;该方法就是替换…

在微服务中如何管理数据

来自Stitch Fix团队的工程副总裁Randy Shoup在QCon纽约2017会议上讨论了如何在基于微服务的应用中管理数据和隔离持久化。他还介绍了将事件&#xff08;Event&#xff09;作为微服务的第一类构造。他介绍自己的团队将机器学习技术应用到了业务的各个组成部分&#xff0c;比如购…

jozj3419-最大利润【树形dp】

前言 树形dp是前天学的&#xff0c;题目也是前天做的&#xff0c;可博客却是今天发的。 正题 题目大意 一棵树一样的火车站&#xff0c;每个站点有不同的利润&#xff0c;不能连续选择相连的两个站点的利润&#xff0c;求最大利润。 输入输出&#xff08;建议无视&#xf…

<url-pattern>标签中使用/和/*的区别:

/所匹配的请求可以是/login或.html或.js或.css方式的请求路径&#xff0c;但是/不能匹配.jsp请求路径的请求因此就可以避免在访问jsp页面时&#xff0c;该请求被DispatcherServlet处理&#xff0c;从而找不到相应的页面/*则能够匹配所有请求&#xff0c;例如在使用过滤器时&…

SpringIOC

SpringIOC 作用: 实现了层与层之间对象的逻辑性的解耦.IOC将耦合性非常高的对象进行解耦. SpringIOC创建对象的三种方式 1.通过构造器方式 ①无参数构造器(创建一个没有初始化数据的对象) ②有参 数构造器(创建一个带有初始化数据的对象) Applicationcontext.xml <?x…

隐马尔科夫模型-前向算法

转载自 隐马尔科夫模型-前向算法 隐马尔科夫模型-前向算法 在该篇文章中讲了隐马尔科夫模型&#xff08;HMM&#xff09;一基本模型与三个基本问题 隐马尔科夫模型-基本模型与三个基本问题&#xff0c;这篇文章总结一下隐马尔科夫链&#xff08;HMM&#xff09;中的前向与后…

线段树初见——区间询问与改变最大值

前言 昨天某B组讲主席树&#xff0c;然后就作死的去听了&#xff0c;也没听懂&#xff08;因为连线段树都不懂&#xff09;&#xff0c;然后好奇心就去问了一下老师线段树是个蛤&#xff0c;然后这篇博客就诞生了。 正题 首先线段树就是一个可以快速区间改变和询问的东东&am…

关系数据库理论

依赖 候选码 三大范式 公理系统 求最小函数的依赖集 例 解 模式分解

SpringMVC支持ant风格的路径

&#xff1f;&#xff1a;表示任意的单个字符 *&#xff1a;表示任意的0个或多个字符 **&#xff1a;表示任意的一层或多层目录 注意&#xff1a;在使用**时&#xff0c;只能使用/**/xxx的方式

19级:班级日常分享 | 一天一瞬间

点击上方蓝色关注我们&#xff01;昨天没有看到他们早读&#xff0c;有点失落。今天再一次去教室&#xff0c;还未走到门口呢&#xff0c;就听见教室里面的早读生透过门缝传出&#xff0c;甚是开心。在陪他们早读的时候&#xff0c;自己顺便读了几篇散文和古诗古文&#xff0c;…

在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序

前言 Visual Studio 2017已经发布了很久了。做为集成了Asp.Net Core 1.1的地表最强IDE工具&#xff0c;越来越受.NET系的开发人员追捧。 随着Google Angular4的发布。我一直在想&#xff0c;怎么能够用这个地表最强IDE工具编写Angular4的Asp.Net Core项目。经过不懈的研究。终…

机器学习中向量化编程总结记录

转载自 机器学习中向量化编程总结记录 向量化编程总结记录 很多时候&#xff0c;我们在实现算法的时候&#xff0c;总会碰到累和的伪代码&#xff1a; 比如下面这个&#xff1a; 为了简单我这里只重复5次&#xff0c;但是原理是一样的。 很显然我们要得到这个结果&#xf…

Spring整合Mybatis-完成用户登录

①导入的jar包: ②在src下创建并配置applicationcontext.xml文件 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance&qu…

【jzoj】2018.2.7NOIP普及组——某【BC】组模拟赛

前言 ……终于改完了&#xff0c;像之前小L一样崩溃。今天C组和B组一起做题&#xff0c;所以…… 正题 题目1&#xff1a;教主的花园&#xff08;jzoj1792&#xff09; 一平面直角坐标系&#xff0c;在x轴的位置建立一堵墙&#xff0c;墙上有n道门&#xff0c;给出门的位置&a…

解决获取请求参数的乱码问题

解决获取请求参数的乱码问题&#xff0c;可以使用SpringMVC提供的编码过滤器CharacterEncodingFilter&#xff0c;但是必须在web.xml中进行注册 <!--配置springMVC的编码过滤器--> <filter><filter-name>CharacterEncodingFilter</filter-name><fi…

刘奕佳: 我的职校新生活 | 班级日常分享

点击上方蓝色关注我们&#xff01;时光匆匆&#xff0c;一转眼到了开学季&#xff0c;校园里弥漫着浓重的书香之气踏入校园&#xff0c;映入眼帘的就是雄伟的教学楼&#xff0c;意气风发的朗朗书声&#xff0c;让人情不自禁的陷入深深的学习中。实训楼当熟悉的上下课铃声又在我…

一个非常好的依存句法可视化工具

转载自 一个非常好的依存句法可视化工具 一个非常好的依存句法可视化工具 在依存句法研究中&#xff0c;常见的CONLL格式的句法树库&#xff0c;一眼看上去就不是太明白整棵树的结构。 这里分享推荐一个南京大学nlp实验室制作的一个依存句法可视化工具&#xff0c;效果如图…