AtCoder Beginner Contest 072
来源:互联网 发布:五十知天命六十耳顺 编辑:程序博客网 时间:2024/05/17 16:55
题目链接:http://abc072.contest.atcoder.jp/
纪念第一次写完4道题,尽管4道都是水题。
下面上代码。
AC代码:
/*2017年9月2日23:15:46 A简单比较大小 */ #include <iostream>#include <map>#include <set>#include <string>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>#include <queue>using namespace std;int main(){int n,t;scanf("%d%d",&n,&t);if(t>=n) printf("0\n");else printf("%d\n",n-t);return 0;}
/*2017年9月2日23:15:46 B简单输出 */ #include <iostream>#include <map>#include <set>#include <string>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>#include <queue>using namespace std;const int maxn=1e5+10;char s[maxn];int main(){scanf("%s",s);int len=strlen(s);for(int i=0;i<len;i+=2){printf("%c",s[i]);} printf("\n");return 0;}
/*2017年9月2日23:15:46 C统计每一种可能性,最后取次数出现最多的。注意-1 用另外一个数组存就行 */ #include <iostream>#include <map>#include <set>#include <string>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>#include <queue>using namespace std;const int maxn=1e5+10;int a[maxn];int b[maxn];//b[0]代表-1的个数 int main(){int n;scanf("%d",&n);for(int i=0;i<maxn;i++) a[i]=0;b[0]=0;int ans=0;for(int i=1;i<=n;i++){int x;scanf("%d",&x);if(x>=1){a[x-1]++;a[x]++;a[x+1]++;ans=max(ans,max(a[x-1],max(a[x],a[x+1])));}else{b[0]++;a[x]++;a[x+1]++;ans=max(ans,max(b[0],max(a[x],a[x+1])));} } printf("%d\n",ans);return 0;}
/*2017年9月2日23:15:46 D找规律,手推几个就可以先扫一遍,如果a[i]==i 就打个标记然后扫一遍标记,如果出现连续s[i]不为0 记为pre[i] 为当前位置连续的几个s[i]==true 也就是 a[i]==i 如果pre[i]==1 且前后都是0 答案+1如果pre[i]>1 且pre[i+1]=0 也就是说 当前最多连续有pre[i]的 a[i]==i 答案+ pre[i]/2 向上取整 */ #include <iostream>#include <map>#include <set>#include <string>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>#include <queue>using namespace std;const int maxn=1e5+10;int a[maxn];bool s[maxn];int pre[maxn];int main(){int n;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);if(a[i]==i) s[i]=true;else s[i]=false; }if(s[1]) pre[1]=1;else pre[1]=0;for(int i=2;i<=n;i++){if(s[i]) pre[i]=pre[i-1]+1;else pre[i]=0;}int ans=0;for(int i=1;i<n;i++){if(!pre[i]||pre[i]<pre[i+1]) continue;else{if(pre[i]&1) ans+=(pre[i]+1)/2;else ans+=pre[i]/2;}}/*上面的循环没有考虑到pre[n]单独拿出来考虑*/ if(pre[n]&1){ans+=(pre[n]+1)/2;}else if(pre[n]){ans+=pre[n]/2;}printf("%d\n",ans);return 0;}
阅读全文
0 0
- AtCoder Beginner Contest 072
- AtCoder Beginner Contest 072
- AtCoder Beginner Contest 072
- AtCoder Beginner Contest 072
- AtCoder Beginner Contest 072 ABCD C++&&Python3
- AtCoder Beginner Contest 055
- AtCoder Beginner Contest 052
- AtCoder Beginner Contest 057
- AtCoder Beginner Contest 063
- AtCoder Beginner Contest 069
- AtCoder Beginner Contest 069
- AtCoder Beginner Contest 070
- AtCoder Beginner Contest 073
- AtCoder Beginner Contest 075
- AtCoder Beginner Contest 081
- AtCoder Beginner Contest 081
- AtCoder Beginner Contest 082
- AtCoder Beginner Contest 082
- asp.net图片上传
- Android 穿过点画平滑曲线
- codevs1214 线段覆盖(贪心,区间型)
- palindrome-number
- CentOS 7的安装
- AtCoder Beginner Contest 072
- eclipse个人常用快捷键整理1.0
- 书单
- Java JSON解析工具类(支持泛型)
- 解决办法:Android Studio报错“Error:Failed to open zip file.”
- C++从入门到入坟
- R语言:leaflet包做地图展示
- HYSBZ 2038 莫队算法
- 接口和抽象类:Interface、abstract