第一次参加这种有奖励的比赛(没错,我就是为猴子而去的

一年没怎么碰代码果然手生,还是用没写多久的C++,差点全跪了

T1数学奇才琪露诺:

首先定义一个函数F(x),F(x)=x的各个数位上的数字和

然后在区间[l,r]求F(x)k*p+q=x的所有x,按升序输出

T1题解:

枚举x肯定是不行的,F(x)的值只有0到81,我们枚举F(x)的值,然后算出F(x)k*p+q,看数位和是不是符合

可能会爆int,所以要开long long

#include <cstdio>
#include <algorithm>
#include <vector>
#include <set>
using namespace std; long long k,p,q,l,r,a[],tot; long long s(long long x){
long long ss=;
while(x>){
ss+=x%;
x=x/;
}
return ss;
} long long pow(long long x,long long y){
long long ipow=;
long long i;
for(i=;i<=y;++i)ipow=ipow*x;
return ipow;
} int main(){
scanf("%lld%lld%lld%lld%lld",&k,&p,&q,&l,&r);
long long i;
tot=;
for(i=;i<=;++i){
long long tmp;
tmp=pow(i,k)*p+q;
if((tmp>=)&&(s(tmp)==i)&&(tmp>=l)&&(tmp<=r))a[++tot]=tmp;
}
sort(a+,a++tot);
printf("%lld\n",tot);
for(i=;i<=tot;++i)printf("%lld ",a[i]);
return ;
}

T1

T2完美拓印:

给你一条轮廓线和一个印章,问有多少种方法可以让印章的一条边缘(上下两边)与轮廓线重合,印章可以180°旋转

T2题解:

我们注意到只要相邻两格的高度差一样就行,所以我们把相邻两项的差拿出来做kmp就行了

注意要做四次kmp,下面平的也要考虑,还有就是特判n=1的情况

#include <cstdio>
#include <algorithm>
#include <vector>
#include <set>
using namespace std; int n,m,a[],b[],nex[],ans; int work(){
int i,j;
for(i=n-;i>;--i)a[i]=a[i-]-a[i];
nex[]=;
nex[]=;
for(i=;i<n;++i){
j=nex[i-];
while((j>)&&(a[i]!=a[j+]))j=nex[j];
if(a[i]==a[j+])nex[i]=j+;
else nex[i]=;
}
i=;j=;
while(j<m-){
if(a[i+]==b[j+])++i,++j;
else
if(i==)++j;
else i=nex[i];
if(i==n-){
++ans;
i=nex[i];
}
}
for(i=;i<n;++i)a[i]=a[i-]-a[i];
return ;
} int swap(int &a,int &b){
int t;
t=a;a=b;b=t;
return ;
} int main(){
int i;
ans=;
scanf("%d%d",&n,&m);
for(i=;i<n;++i)scanf("%d",&a[i]);
for(i=;i<m;++i)scanf("%d",&b[i]);
if(n==){
printf("%d\n",*m);
return ;
}
for(i=m-;i>;--i)b[i]=b[i-]-b[i];
work();
for(i=;i<n/;++i)swap(a[i],a[n-i-]);
for(i=;i<n;++i)a[i]=-a[i];
work();
for(i=;i<n;++i)a[i]=;
work();
work();
printf("%d\n",ans);
return ;
}

T2

T3幻影阁的难题:

给你两棵树,你可以分别在两棵树上找一个点,然后在这两个点之间连一条长度为t的边

1.求连边之后最长路的最小值

2.求最长路的期望长度

T3题解:

首先我们看第一问,我们只要树dp算出从某个点出发的最长链,然后取两棵树的最小值相加再加t,但是我们还要考虑不经过新边的情况,那么就是原来树上的最长链,从这两个中取最大值就行了

第二问要求期望,所以我们要把所有的情况都算出来,然后总长除以n*m,我们先把两棵树计算好的最长链排好序

然后我们要计算的就是∑max(最长链,a[i]+b[j]),因为我们排好了序,所以对于每一个i,取最长链的是一段连续的区间,我们只要记一下前缀和就可以快速计算了

#include <cstdio>
#include <algorithm>
#include <vector>
#include <set>
using namespace std; long long n,m,t,tot;
long long nex[],las[],l[],aa[];
long long s1[],s2[],fa[],fir[],q[],len[];
bool f[];
long long ss2[],g[];
long long ans,ans1,ans2; int insert(int x,int y,int z){
++tot;
l[tot]=z;
las[tot]=y;
nex[tot]=fir[x];
fir[x]=tot;
} int work(){
int i,x,y,z;
tot=;
for(i=;i<=n;++i)fir[i]=,f[i]=false,s1[i]=,s2[i]=;
for(i=;i<n;++i){
scanf("%d%d%d",&x,&y,&z);
insert(x,y,z);
insert(y,x,z);
}
f[]=true;
int ll,rr;
ll=;rr=;
q[]=;
for(;ll<=rr;++ll){
int j;
for(j=fir[q[ll]];j!=;j=nex[j])
if(!f[las[j]]){
f[las[j]]=true;
q[++rr]=las[j];
len[rr]=l[j];
fa[rr]=ll;
}
}
len[]=;g[]=;
s1[]=;s2[]=;
for(i=n;i>;--i){
if(s1[i]+len[i]>s1[fa[i]])s2[fa[i]]=s1[fa[i]],s1[fa[i]]=s1[i]+len[i];
else
if(s1[i]+len[i]>s2[fa[i]])s2[fa[i]]=s1[i]+len[i];
}
long long tmp=;
for(i=;i<=n;++i){
if(s1[i]+len[i]!=s1[fa[i]])g[i]=s1[fa[i]]+len[i];
else g[i]=s2[fa[i]]+len[i];
g[i]=max(g[i],g[fa[i]]+len[i]);
tmp=min(tmp,max(g[i],s1[i]));
ans1=max(ans1,g[i]+s1[i]);
}
ans2+=tmp;
return ;
} long long gcd(long long a,long long b){
if(b==)return a;
return gcd(b,a%b);
} int main(){
scanf("%d%d%d",&n,&m,&t);
ans=;ans1=;ans2=;
work();
int i,j;
for(i=;i<=n;++i)aa[i]=max(g[i],s1[i]);
swap(n,m);
work();
for(i=;i<=n;++i)g[i]=max(g[i],s1[i]);
sort(aa+,aa++m);
sort(g+,g++n);
ans1-=t;
ss2[]=aa[];
for(i=;i<=m;++i)ss2[i]=ss2[i-]+aa[i];
j=m;
for(i=;i<=n;++i){
while((j>)&&(g[i]+aa[j]>ans1))--j;
ans+=ans1*j+g[i]*(m-j)+ss2[m]-ss2[j];
}
ans+=t*n*m;
ans2=max(ans2+t,ans1+t);
printf("%lld\n",ans2);
long long tmp;
tmp=gcd(ans,n*m);
printf("%lld",ans/tmp);
printf("/");
printf("%lld",n*m/tmp);
return ;
}

T3

记codevs第一次月赛的更多相关文章

  1. 记次浙大月赛 134 - ZOJ Monthly, June 2014

    链接 虽做出的很少,也记录下来,留着以后来补..浙大题目质量还是很高的 B 并查集的一些操作,同类和不同类我是根据到根节点距离的奇偶判断的,删点是直接新加一个点,记得福大月赛也做过类似的,并差集的这类 ...

  2. Contest1063 - 2017广东工业大学第一次月赛-部分题解

    Problem A: Chiruno Description 五年前,Aerix 无意间飞到了幻想乡,然后遇到了传说中的⑨酱,心情非常激动,想和她合影留念,但是⑨酱比较傲娇,她只欣赏算数能力强的,也不 ...

  3. 洛谷4059找爸爸(Code+第一次月赛)

    题目:https://www.luogu.org/problemnew/show/P4059 dp. 1.看出-A-B(k-1)可以理解成连续空格的第一个 -A,其余 -B: 2.把会干扰的“上一步右 ...

  4. Codeforces Round #477滚粗记&&祭第一次div2场

    4.29 - 23:58:现在似乎在ST的样子……先等一波 Day4.29 prescript : 难得遇上一场9:00开始的div2,看了看大家都打,索性也当一回神仙吧. 晚上出去吃饭,匆匆赶回家, ...

  5. 记:第一次更新服务器CUDA和GPU驱动

    因有需求需要改动centos7中的CUDA(更新到10)和GUP 的driver(更新到410)的版本. 事先需要查看原版本的信息,使用nvidia-smi可以查看driver的版本信息(最新的也显示 ...

  6. 2019级第一次月赛暨ACM工作室第一次招新赛、补题赛

    A:最简单签到,没有之一 Description 此题简单如题意,就是求最大值 Input 多组输入 每组输入输入一串字符串(包括字母和数字),长度小于500 Output 每行输出字符ASCII值与 ...

  7. 【日常学习】codevs1287 矩阵乘法题解

    转载请注明出处 [ametake版权全部]http://blog.csdn.net/ametake欢迎来看. 先上题目 题目描写叙述 Description 小明近期在为线性代数而头疼,线性代数确实非 ...

  8. 洛谷2019 3月月赛 T1

    题干 2019第一次月赛 我只有255pts T1还是比较水的... 海星 T1一道简单的模拟(就是有坑..导致很多人不能一次性AC 比如说我) _3个坑点 1.位数问题 2.-0 3.0... #i ...

  9. P6686 混凝土数学

    哈哈哈!我爱月赛. 第一次月赛拿到分呢. (卡掉卡掉) 题目描述 你正在看混凝土数学,这时旁边的工地开工了,你觉得看他们施工更有意思,于是你向窗外望去,注意到了一些长度不同的木棍.具体而言,你看到了  ...

随机推荐

  1. 金山词霸每日一句开放平台 .NET demo

    先附上地址:http://open.iciba.com/?c=api 小金山提供了2种获取数据的方式 1. 通过填入自己的网站名称.网址.邮箱地址 来生成一段javascript脚本,直接将生成的代码 ...

  2. 转:OK6410内存及启动流程

    一.内存 只是从大体上介绍,并没有涉及寄存器的操作 6410的系统资源为:256MB DDR .2GB NANDFlash 如下图所示: ROM是只读存储器,RAM是随机存储器. 区别: 1.ROM( ...

  3. 关于Cygwin——包管理、替换默认终端、同MSYS的比较

    (搬运自我在SegmentFault的博客) Cygwin 是一个用于 Windows 的类 UNIX shell 环境. 它由两个组件组成:一个 UNIX API 库,它模拟 UNIX 操作系统提供 ...

  4. 使用Moses中tokenizer.perl无法正常工作:纠结的"<" 和">"(已解决)

    发现居然没有输入文本和输出文本,折腾了一晚上,到了半夜终于搞懂了: 官方的Manual上这么写的: The tokenisation can be run as follows: ~/mosesdec ...

  5. 使用Linux调用资源库中的Job报错-ERROR: No repository provided, can't load job.

    使用kettle调用资源库中的作业或者是转换,需要注意一下两个问题: 问题一:(-rep后不需要IP)标准shell代码如下 #!/bin/bash export JAVA_HOME=/usr/lib ...

  6. Mysql允许外网接入

    首先你可以为mysql创建一个账户,或者为root用户接入数据库. 授权用户指定所有主机以指定用户连接服务器 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDE ...

  7. 基于Elasticsearch的自定义评分算法扩展

    实现思路: 重写评分方法,调整计算文档得分的过程,然后根据function_score或script_sort进行排序检索.   实现步骤: 1.新建java项目TestProject,引入Elast ...

  8. 戏说PHP的嵌套函数

    PHP很早就支持嵌套函数了.并是不PHP5.3有闭包时才有的.然而,它却不是象JS,AS那样的闭包嵌套.即它的嵌套函数根本无闭包模式的逃脱. PHP嵌套函数有一些特别之处.最特别的是,当外部函数被调用 ...

  9. linux下sort详解(sort对科学记数法的排序)

    1.参数解释 -t 设置分隔符 -k 设置比较域(列) -n 按数字比较 -g 科学记数法方式比较 -o 设置输出文件,与“>”相比可以设置输出到原文件,“>”会清空原文件 -r 降序(大 ...

  10. Java把内存划分为4个部分 1. 代码区 1、栈区 3、堆区 4、静态区域

    1.栈区(stacksegment)—由编译器自动分配释放,存放函数的参数值,局部变量的值等,具体方法执行结束之后,系统自动释放JVM内存资源 2.堆区(heapsegment)—一般由程序员分配释放 ...