Educational Codeforces Round 147 (Rated for Div. 2) 题解
总结:5.10晚VP一场,总体来说还算可以吧,AC了AB两题,C题还差点
A. Matching
题意就是看能表示的数字的数目
思路:看问号出现的位置,如果问号出现在第一位,则答案乘9,否则,答案乘10
AC代码:
#include<iostream>
using namespace std;int main(){int T,ans;string s;cin>>T;while(T--){cin>>s;ans=1;if(s[0]=='0'){cout<<"0"<<'\n';continue;}for(int i=0;i<=s.size();i++){if(i==0&&s[i]=='?'){ans=9;}else if(s[i]=='?'){ans*=10;}}}return 0;
}
B. Sort the Subarray
有坑!!!一开始想的不对,WA2了,只是算了最长上升序列,没有考虑到这一段是否进行修改
思路:首先找到更改后的序列和原序列不同的最长的左边和右边,然后从左边和右边分别向两边扩展,如果左面的数小于等于最左面的或者右边的数大于等于最右边的就加上这个数,否则停止
//有坑!!!注意这道题的思路!!!
#include<iostream>
using namespace std;const int N=200005;
int a[N],b[N];
int main(){int T,n,l,r,nmin,nmax;bool f;cin>>T;while(T--){f=0;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}for(int i=1;i<=n;i++){cin>>b[i];if(a[i]!=b[i]){if(!f){l=i;f=1;}r=i; } }nmin=b[l];nmax=b[r];for(int i=l-1;i>=1;i--){if(b[i]>nmin){break;}l--;nmin=b[i];}for(int i=r+1;i<=n;i++){if(b[i]<nmax){break;}r++;nmax=b[i];}cout<<l<<' '<<r<<'\n';}return 0;
}
C. Tear It Apart
一开始就是找规律,发现每个字符串都能每次删去奇数位置的字符或者偶数位置的字符,但是发现删去字符后的处理很麻烦,尤其是在判断是否还有不同的字符的时候,复杂度很高,所以只能另辟蹊径
思路:记录每个字符出现的位置,保留的字符从a开始逐个遍历,记录两个保留的字符之间的最大间距(或者开头或者结尾),最大间距log2即为答案(这个是推出的guilv)
1 1
2 2
3 2
4 3
5 3
6 3
7 3
8 4
9 4
10 4
11 4
12 4
13 4
#include<iostream>
#include<vector>
#include<cmath>
using namespace std;int main(){int T,ans,nmax;string s;cin>>T;while(T--){ans=0x3f3f3f3f;vector<int>a[30];cin>>s;for(int i=0;i<s.size();i++){a[s[i]-'a'].push_back(i);}for(int i=0;i<26;i++){if(!a[i].size()){continue;}nmax=0;if(a[i][0]!=0){nmax=max(nmax,a[i][0]);}if(a[i][a[i].size()-1]!=s.size()-1){nmax=max(nmax,(int)s.size()-a[i][a[i].size()-1]-1);}for(int j=1;j<a[i].size();j++){nmax=max(nmax,a[i][j]-a[i][j-1]-1);}ans=min(ans,nmax);}//注意log的求法!!!
// if(ans==0){
// cout<<0<<'\n';
// }else if(log2(ans)==ceil(log2(ans))){
// cout<<ceil(log2(ans))+1<<'\n';
// }else{
// cout<<ceil(log2(ans))<<'\n';
// }//或者这样写 if(!ans){cout<<0<<'\n';}else{cout<<(int)log2(ans)+1<<'\n';}}return 0;
}
Educational Codeforces Round 147 (Rated for Div. 2) 题解相关推荐
- 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 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],让你在区间内找出两个 ...
最新文章
- Linux系统下如何安装软件包
- DDR读写简介及相关
- Android5.x新特性之 Toolbar和Theme的使用
- 数组去重--这几种方法够不?
- 找不到或无法加载主类 org.jivesoftware.openfire.starter.ServerStarter
- RSA的密钥把JAVA格式转换成C#的格式
- python文件内容倒序_python实现对列表中的元素进行倒序打印
- Windows 上好用的7款下载工具
- 使用poi解析word转html,并处理word中图片
- 张明楷的100个刑法案例
- 计算机一级B考试总结500字,期中考试总结与反思500
- 两款C#开源单文件串口调试工具的源码库
- win10系统添加打印机
- 淘宝下架苹果iOS充值业务,马云或在为支付宝扫除障碍
- 检测到远端X服务正在运行中
- 众邮快递的物流信息是怎么在电脑上批量查询的
- google pinyin下如何输入英文
- Kubernetes 集群DNS选择:CoreDNS vs Kube-DNS
- 东原地产首获“蓝筹地产” 千亿货值业绩增速成亮点
- Vue 框架-06-条件语句 v-if 实现选项卡效果