Educational Codeforces Round 92 (Rated for Div. 2)题解(A-C)
目录
- A.LCM Problem
- B.Array Walk
- C. Good String
A.LCM Problem
题意:给定两个整数定义的闭区间[l,r][l,r][l,r],让你在区间内找出两个数x,yx,yx,y满足LCM(x,y)≤rLCM(x,y) \le rLCM(x,y)≤r;
思路:容易验证LCM(x,y)LCM(x,y)LCM(x,y)至少是min(x,y)min(x,y)min(x,y)的二倍,所以直接构造一组最小的解(l,2l)(l,2l)(l,2l)
#include <bits/stdc++.h>
using namespace std;int main() {int t;cin>>t;while(t--){long long l,r;cin>>l>>r;if(l*2<=r) cout<<l<<' '<<2*l<<endl;else cout<<"-1 -1"<<endl;}return 0;
}
B.Array Walk
题意:给定一个序列{a1,a2,a3,...,an}\{a_1,a_2,a_3,...,a_n\}{a1,a2,a3,...,an},你一开始站在1的位置并且拥有权值a1a_1a1,你可以向右或向左走,每走到一个位置,权值和就加上此位置的权值,限制是可以不能连续向左走。例如移动序列可以是{1,2,1,2,1,2}\{1,2,1,2,1,2 \}{1,2,1,2,1,2}但是不能是{1,2,3,2,1}\{1,2,3,2,1\}{1,2,3,2,1},问走kkk步,最多向左走z(z≤5)z(z\le5)z(z≤5)步,最后权值和最大是多少。
思路:首先计算全部向右走的和sum[k+1]sum[k+1]sum[k+1],并处理过程中相邻两格的和(考虑向左一步又向右一步的走法),当最大的相邻和所在两格不是最后两格的时候,我们选择将最后的向右两步走变为在最大相邻和的地方左右走,序列结束的位置ededed也就相应往左移两位,由于zzz比较小,可以枚举向左走(1−z)(1-z)(1−z)步的情况取最大值。
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn=1e5+10;
ll sum[maxn],a[maxn],s2[maxn];
int main() {int t;cin>>t;ll n,k,z;while(t--){cin>>n>>k>>z;for(int i=1;i<=n;i++){cin>>a[i];sum[i]=sum[i-1]+a[i];}for(int i=1;i<n;i++) s2[i]=a[i]+a[i+1];ll ans=sum[k+1],ed=k+1,m=-1;for(int p=1;p<=z;p++){ed=k+1-p*2;m=-1;if(ed<1) break;for (int i = 1; i <= ed; i++) m=max(m,s2[i]);ans = max(sum[ed]+ m*p,ans);}cout<<ans<<endl;}return 0;
}
C. Good String
题意:给定一个由 0∼90\sim90∼9 构成的字符串 s=t1t2⋯tns=t_1t_2⋯t_ns=t1t2⋯tn,询问最少从sss中删除几个字符,使得新得到的字符串满足: t2t3⋯tn−1tnt1=tnt1t2⋯tn−2tn−1t_2t_3⋯t_{n−1}t_nt_1=t_nt_1t_2⋯t_{n−2}t_{n−1}t2t3⋯tn−1tnt1=tnt1t2⋯tn−2tn−1 。
思路:容易得到:t1=t3=t5=⋅⋅⋅∩t2=t4=⋅⋅⋅tnt_1=t_3=t_5=··· \cap t_2=t_4=···t_nt1=t3=t5=⋅⋅⋅∩t2=t4=⋅⋅⋅tn因此,该字符串的构成最多只有两种字符,并且有两种字符时,必定形如121212⋯121212⋯121212⋯的形式。由于该字符串由 0∼90\sim 90∼9 构成,一共只有10×10+1010\times 10+1010×10+10 种情况(相邻的两位数的情况、全部数字相同),直接暴力枚举即可。
记录错误:这里要注意的是形如232321323232323232132323232323213232323这种两两重复但是中间插了一个数字的情况,一开始我并没有考虑到,只进行了相邻的数字数量计数,错误代码会输出3,正确的做法应该是枚举1∼991\sim991∼99的所有数字,计算如果只保留这两种数字的交替出现,应该删除多少字符;然后算一下只保留一种字符需要删除的字符数量,二者取一个minminmin即可。
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn=1e5+10;
ll sum[111],cnt[11];
int main() {int t;cin>>t;ll n,k,z;while(t--){memset(sum,0,sizeof(sum));memset(cnt,0,sizeof(cnt));string str;cin>>str;int len=str.size();if(len<=2){cout<<0<<endl;continue;}for(int i=0;i<len;i++) cnt[str[i]-'0']++;ll m=-1,mm=-1;for(int a=0;a<10;a++){for(int b=0;b<10;b++){m=0;for(int i=0;i<len;i++){int x=str[i]-'0';if(m&1){if(x==a) m++;}else{if(x==b) m++;}}m-=(m&1);mm=max(mm,m);}}m=-1;for(int i=0;i<10;i++) m=max(m,cnt[i]);cout<<min(len-m,len-mm)<<endl;}return 0;
}
这场分掉的真难受,都是思路对了但是最后写炸了;接下来会补题
Educational Codeforces Round 92 (Rated for Div. 2)题解(A-C)相关推荐
- Educational Codeforces Round 117 (Rated for Div. 2)题解(A~D)
Educational Codeforces Round 117 (Rated for Div. 2) 今天这场没打,赛后从九点半到十一点把前面四个题目给补了一下,E题明天有时间看看能不能弄出来. A ...
- Educational Codeforces Round 140 (Rated for Div. 2)题解
看看时间还有十几分钟,开不出来题了,写个题解 A. Cut the Triangle 检查是不是直角边平行于坐标轴的直角三角形即可 这里可以用异或来写,代码较为简洁,我就不改了,直接贴上我的丑代码 c ...
- Educational Codeforces Round 133 (Rated for Div. 2) 题解 CD
D: 这是一道好dp(对我来说) 我做的时候有想过正解那个方式当考虑到可能有重复就没有深入思考了 假设dp[i][j]代表第i次j的方案数 此时我们可以发现dp[i][j]=sum(dp[i-1][j ...
- Educational Codeforces Round 105 (Rated for Div. 2) 题解
Educational Codeforces Round 105 (Rated for Div. 2) A. ABC String 枚举ABC分别为"( "和 " )&q ...
- Educational Codeforces Round 36 (Rated for Div. 2) 题解
Educational Codeforces Round 36 (Rated for Div. 2) 题目的质量很不错(不看题解做不出来,笑 Codeforces 920C 题意 给定一个\(1\)到 ...
- Educational Codeforces Round 76 (Rated for Div. 2) 题解
Educational Codeforces Round 76 题解 比赛链接 A. Two Rival Students #include<bits/stdc++.h> using na ...
- Educational Codeforces Round 93 (Rated for Div. 2) 题解
目录 A.CF1398A Bad Triangle(模拟) B.CF1398B Substring Removal Game(贪心) C.CF1398C Good Subarrays(映射) D.CF ...
- Educational Codeforces Round 107 (Rated for Div. 2) 题解
文章目录 A. Review Site B. GCD Length C. Yet Another Card Deck D. Min Cost String E. Colorings and Domin ...
- Educational Codeforces Round 132 (Rated for Div. 2) 题解(A~D)
A题链接 题目大意: t t t 次询问,先给一扇门 n n n 的钥匙,开了 n n n 门后,会给当前数字 a i a_i ai 的门的钥匙. 比如样例一:给了第3个门的钥匙,第3个门打开后给2 ...
最新文章
- python中的EVAL函数的定义和用法!
- P1991 无线通讯网
- win7+centos7.2双系统安装
- Android开发之assets目录下资源使用总结
- Sentinel介绍和Windows下安装Sentinel-dashboard
- Linux文件目录基础笔记
- 基类成员的public访问权限在派生类中变为_第17篇:C++继承中虚表的内存布局
- AutoPostBack与AutoComplete介绍
- 用matlab解线性规划题目,用MATLAB软件解线性规划范例
- Windows打开热点断网解决方法
- xml布局中实现文字下划线的效果
- 使用MNE工具包处理脑电数据(1)基础处理总览(EEG、MEG、ERP研究)
- linux搭建摄像头,Linux环境下配置虚拟摄像头akvcam
- maven编译报错java -source,pom设置maven.compiler.source原理
- 惊!用python将数据存到txt文件中发现顺序乱排或缺斤少两
- 他们做的通用人工智能,要让所有产品都具备“智能”大脑
- 《网络攻防》 免杀原理与实践
- PTA 7-40 统计闰年个数
- 前台页面与后台管理系统自动生成工具
- 计算机组装时各配件的安装顺序,如何组装一台电脑 组装一台电脑配件及步骤【详解】...
热门文章
- python plt图片保存emf类型_matplotlib---保存图片出现的问题
- Java 监控线程池所有任务是否执行完毕
- dotnet OpenXML 读取 PPT 主序列进入退出强调动画
- vue 获取当前路由地址——router.currentRoute与$route
- Julia Computing获得 2400 万美元融资,前 Snowflake CEO 加入董事会
- 【天光学术】语言学论文:英语认知语言学和心理语言学的融通互补探析(节选)
- Python监听RabbitMq ready数量
- 消息队列RabbitMQ入门与PHP实战
- 卖高价的洋水果是个好榜样
- Ninja ripper 工具使用教程