CF- 943(已更 B-E)

D赛时没调出来(╬▔皿▔)╯,还有几分钟的时候反而把E过了,本来应该是上大分一场(⊙﹏⊙),等会会补G1

这假期要刷题,还要补文化课……后面有空的话更一下之前打的线下赛的题解

B

双指针……

void solve(){
int n,m;cin>>n>>m;
string a,b;cin>>a>>b;
int now=0,ans=0;
rep(i,0,n-1){
while(a[i]!=b[now]&&now<m) now++;
if(a[i]==b[now]){//找到的话快指针now移动,合法长度ans++
now++;
ans++;
}
if(now==m){//找不到就break
break;
}
}
cout<<ans<<endl;
 

C

用到了一点数学知识

分析

已知 $a_{i}%a_{i-1}=x_{i}$

则有 $(a_{i}-x_{i})|a_{i-1}$

|表示能整除

所以 $a_{i}=k*a_{i-1}+x_{i}$

但同时必有$x_{i}<a_{i-1}$,由此可以得到k的取值

代码

void solve(){
int n;cin>>n;
rep(i,2,n){
cin>>x[i];
}
a[1]=x[2]+1;//由样例可知
rep(i,2,n){
int k=1;
if(i==n){
a[i]=a[i-1]+x[i];
continue;
}
while(a[i]<=x[i+1]){
a[i]=k*a[i-1]+x[i];
k++;
}
}
rep(i,1,n){
cout<<a[i]<<" ";
}
cout<<endl;
rep(i,1,n+1){
x[i]=a[i]=0;
}
}

D

考察了循环结构、顺序结构……反正我赛时是因为这个写假了

分析

暴力枚举两人会在点now开始一直停留,此前已移动了pre次,那么之后对答案的贡献就是$a[now]*(k-pre)$,而此前移动对答案的贡献res我们可以每次移动时就更新一次,我们对其取max就是两人的最大得分

比如10 8 2 10
3 1 4 5 2 7 8 10 6 9
5 10 5 1 3 7 10 15 4 3
对于后手:
一开始now=10,pre=0,res=0,若在该点一直停留对答案的贡献为a[10]*8=24;
此后:
now=9,pre=1,res=3————3+a[9]*7=31
now=6,pre=2,res=7————7+a[6]*6=49
————14+a[7]*5=64
————24*a[8]*4=84
now=10,break;

正解代码

void solve(){
int n,k,ps,pb;cin>>n>>k>>pb>>ps;
rep(i,1,n) cin>>p[i];
rep(i,1,n) cin>>a[i];
int aa=0,bb=0;
if(p[pb]==pb) aa=k*a[pb];
if(p[ps]==ps) bb=k*a[ps];
int now=pb,pre=0,res=0;
while(1){
if(pre<=k){
aa=max(aa,res+a[now]*(k-pre));
}
res+=a[now];
now=p[now];
if(now==pb) break;
pre++;
}
now=ps,pre=0,res=0;
while(1){
if(pre<=k){
bb=max(bb,res+a[now]*(k-pre));
}
res+=a[now];
now=p[now];
if(now==ps) break;
pre++;
}
if(aa>bb){
cout<<"Bodya";
}
else if(aa<bb){
cout<<"Sasha";
}
else{
cout<<"Draw";
}
cout<<endl;

贴一个赛时样例都过不了的假写法,虽然思路是一样的(╬▔皿▔)╯

int now=pb,pre=0,res=0;
//cout<<now<<" "<<p[now]<<endl;
while(p[now]!=pb){//实际上p[now]=pb就跳出了
//cout<<now<<" "<<p[now]<<" "<<res<<endl;
if(pre<=k){
aa=max(aa,res+a[now]*(k-pre));
}
//else break;
//cout<<aa<<" "<<" "<<pre<<" "<<now<<" "<<res<<endl;
res+=a[now];
now=p[now];
pre++;
}
now=ps,pre=0,res=0;
while(p[now]!=ps){
if(pre<=k){
bb=max(bb,res+a[now]*(k-pre));
}
//else break;
//cout<<bb<<" "<<" "<<pre<<" "<<now<<" "<<res<<endl;
res+=a[now];
now=p[now];
pre++;
}
cout<<aa<<" "<<bb<<endl;

E

万恶的构造题

void solve(){
int n;cin>>n;
if(n==2){
cout<<"1 1"<<endl<<"2 2"<<endl<<endl;
return;
}
rep(i,1,n-2){
cout<<"1 "<<i<<endl;
}
cout<<n-1<<" 1"<<endl;
cout<<n<<" "<<n<<endl<<endl;
}

G1

CF-943(已更B-E)的更多相关文章

  1. [Recommendation System] 推荐系统之协同过滤(CF)算法详解和实现

    1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...

  2. CF(协同过滤算法)

    1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...

  3. 协同过滤(CF)算法

    1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...

  4. 【转载】协同过滤 & Spark机器学习实战

    因为协同过滤内容比较多,就新开一篇文章啦~~ 聚类和线性回归的实战,可以看:http://www.cnblogs.com/charlesblc/p/6159187.html 协同过滤实战,仍然参考:h ...

  5. Collaborative Filtering(协同过滤)算法详解

    基本思想 基于用户的协同过滤算法是通过用户的历史行为数据发现用户对商品或内容的喜欢(如商品购买,收藏,内容评论或分享),并对这些喜好进行度量和打分.根据不同用户对相同商品或内容的态度和偏好程度计算用户 ...

  6. AppBoxFuture: Raft快照及日志截断回收

      AppBoxFuture的存储引擎依赖Raft一致性协议来保证各个分区副本的一致性,如果不处理Raft日志将不断增长,因此需要特定的机制(定期或每处理一定数量的日志)来回收那些无用的日志数据.通过 ...

  7. 600 条最强 Linux 命令总结

    600 条最强 Linux 命令总结 每博一文案 你有千万条微博想写,可有些根本不重要,后来你才懂那是你怕别人看穿你所以才把真话埋在日常里.你有千万句话想说,可点开那 个对话框,你根本打不出一个字.你 ...

  8. 【20161203-20161208】清华集训2016滚粗记&&酱油记&&游记

    先挖坑(这个blog怎么变成游记专用了--) 已更完 #include <cstdio> using namespace std; int main(){ puts("转载请注明 ...

  9. MariaDB kill命令

    MariaDB的KILL命令不只可以杀掉连接,而且可以只杀掉某连接当前的SQL,而不断开连接.KILL QUERY thread_id;kill thread_id可以杀掉当前的连接,而kill QU ...

  10. mysql5.5手册读书日记(3)

    <?php /* MySQL_5.5中文参考手册 587开始 与GROUP BY子句同时使用的函数和修改程序 12.10.1. GROUP BY(聚合)函数 12.10.2. GROUP BY修 ...

随机推荐

  1. Oracle 索引原理

    B-Tree索引 一个B树索引只有一个根节点,它实际就是位于树的最顶端的分支节点. 可以用下图一来描述B树索引的结构.其中,B表示分支节点,而L表示叶子节点. 对于分支节点块(包括根节点块)来说,其所 ...

  2. proteus之四状态锁定器

    proteus之四状态锁定器 1.实验原理 利用4071(或门)的锁定功能,当输入为1时输出结果锁定为1,使结果锁定在这个地方.4028(BCD译码器)将输入转化为输出,利用输出反馈到或门用于自锁. ...

  3. 关于Actor Component的思考--学习斯坦佛UE+C++

    跟着B站的视频学习,感觉自己的头很混乱.所以浅浅总结一下创建Actor Component之后其的作用和相关操作. Actor Component 首先Component为一个组件,源码就是一个类的声 ...

  4. CDA数据分析师证书一级Level 1 专业备考资料

    CDA数据分析师一级Level 1 专业备考资料 包含视频课程+视频配套参考资料,新版大纲,可以边看边学边做笔记. 考试大纲+模拟题+报考指南 + 教材电子书PDF版 关注订阅号[靠谱杨阅读人生]回复 ...

  5. vector优化

    C++的stdvector使用优化 #include<iostream> #include<vector> using namespace std; class Vectex ...

  6. #分块,可撤销并查集#洛谷 5443 [APIO2019]桥梁

    题目 分析 最直接的做法就是在线一边修改边权,询问直接全部重排, 然后用可撤销并查集维护连通块大小,这样时间复杂度为 \(O(qm)\) 同样尽量让大部分的边不需要修改边权,那么每 \(B\) 个操作 ...

  7. Avalonia的UI组件

    Avalonia是一个强大的跨平台UI框架,允许开发者构建丰富的桌面应用程序. 它提供了众多UI组件.灵活的布局系统.可定制的样式以及事件处理机制. 在这篇博客中,我们将详细解析Avalonia的UI ...

  8. OpenHarmony有氧拳击之设备端开发

    一.简介 在一个风和日丽,阳光明媚的下午,码农们都像往常一样正在专注地码代码.突然前面的小哥哥站起来,手握开发板,来回出拳.这是怎么回事? 原来这是一款拳击互动游戏,本文将带你一同解开其中的奥秘.开发 ...

  9. 文档贡献与写作必读-OpenHarmony开发者文档风格指南

    在您使用OpenHarmony文档或参与OpenHarmony文档/生态内容贡献时,是否遇到过如下问题: ● 应该使用第一人称还是第二人称来写作? ● Markdown文件应该如何命名? ● 代码块及 ...

  10. Agent内存马分析

    什么是Java Agent 我们知道Java是一种强类型语言,在运行之前必须将其编译成.class字节码,然后再交给JVM处理运行.Java Agent就是一种能在不影响正常编译的前提下,修改Java ...