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. C# OpenCv 证件照换底色

    using OpenCvSharp; using System; using System.Collections.Generic; using System.Linq; using System.T ...

  2. Flume入门操作

    十一.Flume 1)开启Flume的监控端口 bin/flume-ng agent -c conf/ -n a1 -f job/flume-netcat-logger.conf -Dflume.ro ...

  3. Scala 元祖Tuple

    1 package chapter07 2 3 object Test10_Tuple { 4 def main(args: Array[String]): Unit = { 5 // 1. 创建元组 ...

  4. 6 CSS样式继承

    6 样式继承 CSS的样式表继承指的是,特定的CSS属性向下传递到子孙元素.总的来说,一个HTML文档就是一个家族,然后html元素有两个子元素,相当于它的儿子,分别是head和body,然后body ...

  5. #树状数组,离散#C 波动序列

    分析 设\(dp[i][j][0/1/2/3]\)表示前\(i\)个位置当前选的数为\(j\), 且选择的是第一行/第二行/第三行不下降/第三行不上升, 状态转移方程显然,用线段树或者树状数组维护一下 ...

  6. 国产Linux发行版 Deepin 评价与主观展望 我与Deepin的故事

    全文皆属于up自己的主观臆断,有不到之处可以进行批评,共同成长. P1 编辑时间(2021-2-20) 昨天,我刷b站的时候见到一则旧闻,关于我国操作系统的.原本只是想写个1000字左右的评论的,没想 ...

  7. 拥抱开源更省钱「GitHub 热点速览」

    免费.低成本.自托管.开源替代品...这些词就是本周的热门开源项目的关键字.常见的 AI 提升图片分辨率的工具,大多是在线服务或者调用接口的客户端,而「Upscaler」是一款下载即用的免费 AI 图 ...

  8. js推送网页到扩展屏上--谷歌浏览器

    平时我们推送网页.打开窗口都是用的 window.open,但是谷歌却不支持这种方法,也不是不支持,是可以打开窗口,但是无法将窗口移动到扩展屏上. 后面经过百度,发现了一个支持谷歌推送网页到扩展屏的方 ...

  9. scala 生成指定日期范围的list

    可以通过scala中的流处理,生成指定范围内的日期list import java.time.LocalDate def dateStream(fromDt:LocalDate):Stream[Loc ...

  10. maven 创建spring boot 需要的配置[一]

    前言 之所以写这个是因为现在官方推荐云创建: 所以标注一下maven project,创建后,如何导入spring boot. 正文 1.步骤一 在pom.xml 中加入: <dependenc ...