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. 【已解决】MySQL5.x和MySQL8.x 密码验证的区别(修改MySQL数据库密码的验证方式)

    mysql5.x使用的是 mysql_native_password mysql8.x使用的是 caching_sha2_password 1. 进入mysql mysql -u root -p 2. ...

  2. Python爬虫爬取全球疫情数据并存储到mysql数据库

    思路:使用Python爬虫对腾讯疫情网站世界疫情数据进行爬取,封装成一个函数返回一个    字典数据格式的对象,写另一个方法调用该函数接收返回值,和数据库取得连接后把    数据存储到mysql数据库 ...

  3. 【已解决】Hadoop_01 Linux修改hosts文件

    设置主机名 [root@localhost ~]# hostnamectl set-hostname s1[root@localhost ~]# reboot 修改hosts文件 [root@mast ...

  4. C++设计模式 - 适配器模式(Adapter)

    接口隔离模式 在组件构建过程中,某些接口之间直接的依赖常常会带来很多问题.甚至根本无法实现.采用添加一层间接(稳定)接口,来隔离本来互相紧密关联的接口是一种常见的解决方案. 典型模式 Facade P ...

  5. 4 CSS属性选择器

    4 属性选择器 属性选择器是通过元素的属性及属性值来选择元素的.下面介绍属性选择器的用法. 第一种用法 作用:选择含有指定属性的元素. 语法:[属性名]{} 示例如下: <!DOCTYPE ht ...

  6. 1 CSS的引入方式

    1 CSS的引入方式 CSS样式有三种不同的使用方式,分别是行内样式,嵌入样式以及链接式.我们需要根据不同的场合不同的需求来使用不同的样式. 行内样式 行内样式,就是写在元素的style属性中的样式, ...

  7. #CDQ分治,单调栈,双指针#BZOJ 4237 稻草人 AT1225 かかし

    洛谷传送门 BZOJ 4237 稻草人 题意 在一个平面直角坐标系上给出\(n\)个点, 问有多少个点对\((i,j)\)满足\(x_i<x_j,y_i<y_j\), 而且对于\(n\)个 ...

  8. #模拟#洛谷 2327 [SCOI2005]扫雷

    题目 分析 考虑最多只有两种情况,因为确定一个位置其它位置随即也能确定, 那么指定第一个位置有没有雷然后判断一下后面推出的雷数是否为0或1,不是显然不行 代码 #include <cstdio& ...

  9. Windows下Net6开源akstream项目vs2022调试GB28181协议对接摄像头全流程

    一.背景介绍 笔者经历多个项目对接摄像头需求,不同项目具体要求又有所不同,碰到的摄像头对接开发问题,整理记录.此篇主要用于记录备用及给有缘人提供解决思路等. 1.   同一局域网对接(海康摄像头),如 ...

  10. ​CentOS防火墙操作命令 ​

    CentOS防火墙操作命令 1.查看防火墙服务状态 systemctl status firewalld.service 或者查看防火墙的状态: 1 firewall-cmd --state 2.开启 ...