Codeforces Round #424 (Div. 2)A-B-C 日常训练
来源:互联网 发布:漫画创作软件 编辑:程序博客网 时间:2024/05/22 03:16
题目链接:
点击打开链接、
暂时摆这三道,后面补完在贴。
A
简单模拟
#include<stdio.h>#include<string.h>const int maxn=1100;int a[maxn];int num[maxn];int main(){ int n; int mx=-1; scanf("%d",&n); memset(num,0,sizeof(num)); for(int i=0;i<n;i++){ scanf("%d",&a[i]); // num[a[i]]++; if(mx<a[i]) mx=a[i]; } num[0]=1; for(int i=0;i<n-1;i++){ if(a[i]==a[i+1]) num[i+1]=num[i]+1,num[i]=1; else num[i+1]=1; } /*check num[]*/ /* for(int i=0;i<n;i++){ printf("%d ",num[i]); }printf("\n"); */ int number=0; for(int i=0;i<n;i++){ if(num[i]>1) number++; }//*bool up=true; bool ans=true; if(number>1) printf("NO\n"); else{ for(int i=0;i<n-1;i++){ if(a[i]<a[i+1]&&up){ //printf("1\n"); continue; }else if(a[i]==a[i+1]&&a[i]==mx){ //printf("2\n"); continue; }else if(a[i]>a[i+1]&&up){ // printf("3\n"); up=false; } else if(a[i]>a[i+1]&&!up){ //printf("4\n"); continue; } else{ // printf("5\n"); ans=false; break; } } if(ans) printf("YES\n"); else printf("NO\n"); }//*/ return 0;}
B
#include<stdio.h>#include<ctype.h>#include<string.h>const int maxn=1100;char a[maxn],b[maxn],c[maxn];int main(){ scanf("%s",a); scanf("%s",b); scanf("%s",c); for(int i=0;i<strlen(c);i++){ if(isalpha(c[i])==0){ printf("%c",c[i]); }else if(isalpha(c[i])==2){ for(int j=0;j<26;j++){ if(a[j]==c[i]){ printf("%c",b[j]); break; } } }else if(isalpha(c[i])==1){ char ch=tolower(c[i]); for(int j=0;j<26;j++){ if(a[j]==ch){ printf("%c",toupper(b[j])); break; } } } } return 0;}
更简单的模拟
C题
逆向思维。
一个初始值要满足所有的n,那么对于任意一个b[i]全部倒推其所有可能的初始值init[i],答案一定在这里面,检查这些init 是否可以推出其他的n-1个分数即可,注意去重
#include<stdio.h>#include<algorithm>#include<set>using namespace std;typedef long long ll;const int maxn=2100;ll a[maxn],b[maxn];ll pre[maxn];ll ini[maxn];ll bn[maxn];int k,n;set<ll> ans,init,bset,tmp;bool bs(ll des){ int l=0,r=n-1; // int m=(l+r)/2; while(l<=r){ int m=(l+r)/2; if(b[m]==des){ // printf("b[%d]=%d\n",m,b[m]); return true; } //return true; if(b[m]<des){ l=m+1; }else if(b[m]>des){ r=m-1; } } return false;}int main(){ //int k,n; scanf("%d%d",&k,&n); for(int i=0;i<k;i++){ scanf("%I64d",&a[i]); } for(int i=0;i<n;i++){ scanf("%I64d",&b[i]); bset.insert(b[i]); } // for(int i=0;i<k;i++)printf("%d ",a[i]);puts(""); // for(int i=0;i<n;i++) printf("%d ",b[i]);puts(""); pre[0]=a[0]; for(int i=1;i<k;i++){ pre[i]=pre[i-1]+a[i]; } //for(int i=0;i<k;i++)printf("%d ",pre[i]);puts(""); for(int i=0;i<k;i++){ ini[i]=b[0]-pre[i]; init.insert(ini[i]); } // for(int i=0;i<k;i++) printf("%d ",ini[i]);puts(""); int res=0; sort(b,b+n); for(auto it=init.begin();it!=init.end();it++){ ll cur=*it; int num=0; // printf("cur=%d\n",cur); tmp.clear(); for(int j=0;j<k;j++){ //printf("cur+pre[%d]=%d",j,cur+pre[j]); // if(bset.find(cur+pre[j])!=bset.end()){ if(bs(cur+pre[j])){ tmp.insert(cur+pre[j]);//就是这个地方要去重 WA了5次 if(tmp.size()==n){ // ans.insert(cur); res++; // printf("anscur=%d\n",cur); break; } continue; } } } printf("%d\n",res); return 0;}
阅读全文
0 0
- Codeforces Round #424 (Div. 2)A-B-C 日常训练
- Codeforces Round #423 (Div. 2)A-B-C-D 日常训练打卡
- Codeforces Round #285 (Div. 2) (A、B、C、D)
- Codeforces Round #299 (Div. 2) -- (A,B,C)
- Codeforces Round #301 (Div. 2) -- (A,B,C,D)
- Codeforces Round #302 (Div. 2) -- (A,B,C)
- Codeforces Round #313 (Div. 2) (A、B、C、D)
- Codeforces Round #364 (Div. 2)(A,B,C,D)
- Codeforces Round #376 (Div. 2) (A.B.C)
- 【Codeforces Round #383 (Div. 2)】 (A,B,C)
- 【Codeforces Round #384 (Div.2)】(A,B,C)
- 【Codeforces Round #402 (Div. 2) 】(A,B,C,D )
- Codeforces Round #441 (Div. 2)A + B + C
- Codeforces Beta Round #95 (Div. 2) A B C E
- 【CodeForce】Codeforces Round #140 (Div. 2) A B C
- 【CodeForce】Codeforces Round #142 (Div. 2) A B C
- Codeforces Round #160 (Div. 2)——A,B,C
- Codeforces Round #177 (Div. 2)——A,B,C
- 2.4 const限定符
- linux系统的初步认识和一些简单指令‘
- tslib移植
- 关于初学AJAX的小伙伴,可以参考
- 两个ScrollView的滑动冲突解决
- Codeforces Round #424 (Div. 2)A-B-C 日常训练
- 快速排序
- dup 复制文件描述符
- 安装zabbix监控服务
- 8.1(1)
- Cg Programming/Unity/Nonlinear Deformations非线性变形
- 二叉树C语言
- 51Nod 1084 矩阵取数问题 V2(多线程dp)
- matlab 保存图像去白边