2017 计蒜之道 初赛 第一场 A题B题
来源:互联网 发布:批发源码 编辑:程序博客网 时间:2024/05/29 02:55
A. 阿里的新游戏
通过率: 81.04 %通过人数: 1090分值: 500
B. 阿里天池的新任务(简单)
通过率: 61.89 %通过人数: 588分值: 1000
C. 阿里天池的新任务(中等)
通过率: 3.24 %通过人数: 9分值: 1500
D. 阿里天池的新任务(困难)
通过率: 4.6 %通过人数: 4
A:直接暴力所有情况
#include<stdio.h>#include<string.h>int a[200][200];int d=100;int main(){int n,m;while(~scanf("%d%d",&n,&m)){memset(a,0,sizeof(a));for(int i=0;i<n;i++){int x,y;scanf("%d%d",&x,&y);a[d+x][d+y]=1;}for(int i=0;i<m;i++){int x,y;scanf("%d%d",&x,&y);}int ans=0;//内圈 int t=1;if(a[d+t][d-t]==1&&a[d+t][d]==1&&a[d+t][d+t]==1) //有 ans++;if(a[d-t][d-t]==1&&a[d-t][d]==1&&a[d-t][d+t]==1) //左 ans++;if(a[d+t][d+t]==1&&a[d][d+t]==1&&a[d-t][d+t]==1) //shang ans++;if(a[d+t][d-t]==1&&a[d][d-t]==1&&a[d-t][d-t]==1) ans++;//中 t=2;if(a[d+t][d-t]==1&&a[d+t][d]==1&&a[d+t][d+t]==1) ans++;if(a[d-t][d-t]==1&&a[d-t][d]==1&&a[d-t][d+t]==1) //左 ans++;if(a[d+t][d+t]==1&&a[d][d+t]==1&&a[d-t][d+t]==1) //shang ans++;if(a[d+t][d-t]==1&&a[d][d-t]==1&&a[d-t][d-t]==1) ans++;//外圈 t=3;if(a[d+t][d-t]==1&&a[d+t][d]==1&&a[d+t][d+t]==1) ans++;if(a[d-t][d-t]==1&&a[d-t][d]==1&&a[d-t][d+t]==1) //左 ans++;if(a[d+t][d+t]==1&&a[d][d+t]==1&&a[d-t][d+t]==1) //shang ans++;if(a[d+t][d-t]==1&&a[d][d-t]==1&&a[d-t][d-t]==1) ans++;//轴if(a[d+1][d]==1&&a[d+2][d]==1&&a[d+3][d]==1) ans++;if(a[d-1][d]==1&&a[d-2][d]==1&&a[d-3][d]==1) //左 ans++;if(a[d][d+1]==1&&a[d][d+2]==1&&a[d][d+3]==1) //shang ans++;if(a[d][d-1]==1&&a[d][d-2]==1&&a[d][d-3]==1) ans++;printf("%d\n",ans);}return 0;}
B:kmp算法字符串匹配
#include<stdio.h>#include<string.h>typedef long long ll;ll n,a,b,L,R,ans;char ts[1010101];int f[1001000];char make(int wi){if(L<=wi&&wi<=R){if(wi%2==0)return 'A';elsereturn 'T';}else{if(wi%2==0)return 'G';elsereturn 'C';}}void getfail(char p[],int f[]) //字符串p自我匹配 { int len=strlen(p); f[0]=f[1]=0; for(int i=1;i<len;i++) { int j=f[i]; while(j&&p[i]!=p[j]) j=f[j]; if(p[i]==p[j]) f[i+1]=j+1;//多匹配到了一个字符 else f[i+1]=0;//该字符配不上 } } int find(char*P, int*f)//p去匹配字符串T { int m = strlen(P); getfail(P, f); //得出部分匹配表 int j = 0; //短串的下标 for(int i = 0; i < n; i++) //长串下标 { while(j && P[j] != make((b+i*a)%n))//突然失配了 { j = f[j]; //j往回退,直到0或者上一个字符相等的位置 } if(P[j] == make((b+i*a)%n)) { j++; //匹配了一个字符,j++ } if(j == m) //短串匹配到头了 { ans++; //return i - m + 1;//返回成功匹配的起点字符位置 } } return -1; } int main(){while(~scanf("%lld%lld%lld%lld%lld",&n,&a,&b,&L,&R)){scanf("%s",ts);ans=0;find( ts, f);printf("%lld\n",ans);}return 0;}
阅读全文
1 0
- 2017 计蒜之道 初赛 第一场 A题B题
- 2017 计蒜之道 初赛 第一场 A题B题
- 2017计蒜之道初赛第一场B
- 2017 计蒜之道 初赛 第一场 B题(阿里天池的新任务)
- 2017 计蒜之道 初赛 第三场 A+B
- 2017 计蒜之道 初赛 第一场 A题(阿里的新游戏)
- 2017 计蒜之道 初赛 第四场 (计蒜课比赛)第一题
- 2017计蒜之道初赛第一场
- 2017计蒜之道 初赛 第一场
- 2017 计蒜之道 初赛 第一场
- 2017 计蒜之道 初赛 第一场
- 2017 计蒜之道 初赛 第一场 A.阿里的新游戏
- 2017 计蒜之道 初赛 第一场 A. 阿里的新游戏
- 2017 计蒜之道 初赛 第二场 A题(百度的年会游戏)
- 2016计蒜之道初赛第一场----A青云的服务器密钥【贪心】
- [贪心] 2016 计蒜之道 初赛 第一场 A. 青云的服务器密钥
- 2017 计蒜之道 初赛 第四场 (第二题) B. 商汤科技的行人检测(简单)
- 2016 计蒜之道 初赛 第一场
- sdut oj 2449 走迷宫
- 康托展开
- J
- eclipse窗口基础认识
- 插入排序的原理
- 2017 计蒜之道 初赛 第一场 A题B题
- Tensorflow升级1.0版本
- centos7 安装 matplotlib和numpy
- The Suspects(POJ-1611)
- gps 简介---之一
- win10配置java环境变量,解决javac不是内部或外部命令等问题
- 图的遍历以及二叉树的遍历
- Find Largest Value in Each Tree Row(找出一棵树每一行的最大值)
- 【HDU1421】搬寝室