2017 计蒜之道 初赛 第一场 A、B题
A题 阿里的新游戏
题目概述:
阿里九游开放平台近日上架了一款新的益智类游戏——成三棋。成三棋是我国非常古老的一个双人棋类游戏,其棋盘如下图所示:

成三棋的棋盘上有很多条线段,只能在线段交叉点上放入棋子。我们可以用坐标系来描述棋盘:

如果一条线段上的三个交叉点都被同一玩家的棋子占据的话,则称这条线段被该玩家 成三。现在,小红和小明两人在游戏平台上下棋,其中小红的棋子是黑色的。请你帮小红计算他成三的线段数。
样例对应的棋盘如下:

输入格式
输入第一行两个整数 n,m(3 \le n, m \le 9)n,m(3≤n,m≤9),nn表示小红的棋子数,mm 表示小明的棋子数。
接下来 nn 行输入小红的棋子坐标。
接下来 mm 行输入小明的棋子坐标。
输入保证坐标合法,并且棋子之间不重合。
输出格式
输出小红成三的线段数。
样例输入
6 3
-1 0
-2 0
-3 0
-1 -1
-1 1
1 0
0 2
0 3
2 2
样例输出
2 水题,粗暴的做使用16个if就可以AC,我是用了4个数组,px,nx,py,ny(p代表正,n代表负),看棋子落在了哪一个维度,因为不会有重复的,所以当某一个数组的某一个值等于3,即为成三(虽然我很想吐槽小明去干嘛了)
#include <stdio.h>
int py[],px[],nx[],ny[];
int main(){
    int n,m;
    int x,y;
    scanf("%d %d",&n,&m);
    for(int i=;i<n;i++){
        scanf("%d %d",&x,&y);
        if(x>){
            px[x]++;
        }
        if(x<){
            nx[-x]++;
        }
        if(y>){
            py[y]++;
        }
        if(y<){
            ny[-y]++;
        }
        if(x==&&y>){
            py[]++;
        }
        if(x==&&y<){
            ny[]++;
        }
        if(y==&&x>){
            px[]++;
        }
        if(y==&&x<){
            nx[]++;
        }        
    }
    for(int i=;i<m;i++){
        scanf("%d %d",&x,&y);
    }
    int res=;
    for(int i=;i<=;i++){
        if(nx[i]==){
            res++;
        }
        if(px[i]==){
            res++;
        }
        if(ny[i]==){
            res++;
        }
        if(py[i]==){
            res++;
        }
    }
    printf("%d\n",res);
    return ;
}
B题 阿里天池的新任务(简单)
阿里“天池”竞赛平台近日推出了一个新的挑战任务:对于给定的一串 DNA 碱基序列 tt,判断它在另一个根据规则生成的 DNA 碱基序列 ss中出现了多少次。

输入格式
数据第一行为 55 个整数,分别代表 n , a , b , L , Rn,a,b,L,R。第二行为一个仅包含A、T、G、C的一个序列 tt。
数据保证 0 < a < n,0<a<n, 0 \le b < n,0≤b<n, 0 \le L \le R < n,0≤L≤R<n, |t| \le 10^{6}∣t∣≤106,a,na,n 互质。
对于简单版本,1 \leq n \leq 10^{6}1≤n≤106;
对于中等版本,1 \leq n \leq 10^{9}, a = 11≤n≤109,a=1;
对于困难版本,1 \leq n \leq 10^{9}1≤n≤109。
输出格式
输出一个整数,为 tt 在 ss 中出现的次数。
样例说明
对于第一组样例,生成的 ss 为TTTCGGAAAGGCC。
样例输入1
13 2 5 4 9
AGG
样例输出1
1
样例输入2
103 51 0 40 60
ACTG
样例输出2
5 这个题因为数据规模较小可以生成t,所以可以直接使用KMP算法出结果。
#include <stdio.h>
#include <string.h> char s[1000005];
char t[1000005];
int nexts[1000005];
int lens,lent; void getnexts() {
nexts[0]=-1;
int k=-1,j=0;
while(j<lent) {
if(k==-1||t[k]==t[j]) {
++j,++k;
nexts[j]=k;
} else k=nexts[k];
}
} void KMP() {
int i=0,j=0,ans=0,pos=0,f=1;
while(i<lens) {
if(s[i]==t[j]) {
++i,++j;
if(j==lent) {
++ans;
}
} else if(nexts[j]==-1) {
++i;
} else j=nexts[j];
}
printf("%d\n",ans);
} int main(){
int n,a,b,l,r; scanf("%d %d %d %d %d",&n,&a,&b,&l,&r);
int w=b-a;
scanf("%s",t); for(int i=0;i<n;i++){
w=(w+a)%n;
if(l<=w&&w<=r&&w%2==0){
s[i]='A';
}
else if(l<=w&&w<=r&&w%2==1){
s[i]='T';
}
else if((w<l||r<w)&&w%2==0){
s[i]='G';
}
else if((w<l||r<w)&&w%2==1){
s[i]='C';
}
else{ } }
lens=strlen(s),lent=strlen(t);
getnexts();
KMP();
return 0; }
2017 计蒜之道 初赛 第一场 A、B题的更多相关文章
- 2017 计蒜之道 初赛 第一场  A 阿里的新游戏
		
题链:https://nanti.jisuanke.com/t/15499 这题观察图纸可知成三线段上的相邻点之间的距离有1,2,3三种情况的,同时要成线段必然是同横坐标或者纵坐标,然后我们排除掉穿过 ...
 - 2017 计蒜之道 初赛 第一场 B阿里天池的新任务(简单)
		
题链:"https://nanti.jisuanke.com/t/15500" 本来希望通过找循环节然后套KMP来通过后面题的,可是只过了B题,可能循环节不一定是存在的. #inc ...
 - 计蒜之道 初赛第一场B 阿里天池的新任务(简单)
		
阿里“天池”竞赛平台近日推出了一个新的挑战任务:对于给定的一串 DNA 碱基序列 tt,判断它在另一个根据规则生成的 DNA 碱基序列 ss 中出现了多少次. 首先,定义一个序列 ww: \displ ...
 - 2018 计蒜之道-初赛 第一场 A-百度无人车
		
百度一共制造了 nn 辆无人车,其中第 ii 辆车的重量为 a_i\ \mathrm{kg}ai kg. 由于车辆过重会增大轮胎的磨损程度,现在要给这 nn 辆车减轻重量.每将一辆车减轻 1\ \m ...
 - 2016 计蒜之道 初赛 第一场 D 青云的机房组网方案 (虚树)
		
大意: 给定树, 点$i$的点权为$a_i$, 求$\sum\limits_{a_i \perp a_j}dis(i,j)$ 中等难度可以枚举每条边的贡献, 维护子树内每个数出现次数$a$, 转化为求 ...
 - 2019 计蒜之道 初赛 第一场 商汤的AI伴游小精灵
		
https://nanti.jisuanke.com/t/39260 根据题意我们可以知道 这是一个树 我们只需要找到出度最大的两个点就好了 如果包含根节点的话要-- 两个点相邻的话也要-- 数据很 ...
 - 2019 计蒜之道 初赛 第一场  商汤AI园区的n个路口(中等) (树形dp)
		
北京市商汤科技开发有限公司建立了新的 AI 人工智能产业园,这个产业园区里有 nn 个路口,由 n - 1n−1 条道路连通.第 ii 条道路连接路口 u_iui 和 v_ivi. 每个路口都布有 ...
 - 2019 计蒜之道 初赛 第二场  B. 百度AI小课堂-上升子序列(简单) ( 实现)
		
题目背景 91029102 年 99 月 22 日,百度在 X 市 XX 中学举办的第一场 AI 知识小课堂大获好评!同学们对矩阵的掌握非常棒. 今天的 AI 知识小课堂的第二场开讲啦.本场 AI ...
 - 2017 计蒜之道 初赛 第五场  UCloud 的安全秘钥(中等)
		
每个 UCloud 用户会构造一个由数字序列组成的秘钥,用于对服务器进行各种操作.作为一家安全可信的云计算平台,秘钥的安全性至关重要.因此,UCloud 每年会对用户的秘钥进行安全性评估,具体的评估方 ...
 
随机推荐
- 配置nginx服务器全局命令
			
service nginx start|stop|reload 报错:Failed to reload nginx.service: Unit not found.[解决方案] 在执行service ...
 - Storm框架入门
			
1 Topology构成 和同样是计算框架的Mapreduce相比,Mapreduce集群上运行的是Job,而Storm集群上运行的是Topology.但是Job在运行结束之后会自行结束,Topolo ...
 - windows下es安装教程
			
es安装 1.es下载地址:https://www.elastic.co/downloads/past-releases 2.使用es需要先安装好jdk,注意es版本和jdk版本的兼容问题,es6.1 ...
 - js动态创建类对象
			
1.定义函数,函数中定义类对象 f1=function(){ //定义类 function Pannel(name){ this.name = name; this.print = function( ...
 - 3、springboot之热部署
			
我用的是idea 一.开启idea自动make功能 1.CTRL + SHIFT + A --> 查找make project automatically --> 选中 2.CTRL + ...
 - 使用 WireShark 分析 TCP/IP 三次握手  和 四次挥手
			
TCP 三次握手 示意图 Wireshark 抓包注意事项 为了演示一个TCP三次握手建立连接的过程,我们通过 Chrome 访问一个网页. 已知 HTTP 协议就是建立在TCP链接上的 比如访问以下 ...
 - Linux 文件系统大小调整
			
有些使用需要进行文件系统的大小调整,比如使用LVM,或者在loopback设备上建立文件系统等,但该文件系统不是根文件系统时可以通过一下步骤,简单的进行: e2fsck -f /dev/loop0 r ...
 - echarts 表格与 div 之间 空白的设置
			
一. options 图表选项,包含图表实例任何可配置选项: 公共选项 , 组件选项 , 数据选项 {Object} grid 二. grid 直角坐标系内绘图网格 名称 默认值 描述 {number ...
 - WebClient用法小结(转载)
			
如果只想从特定的URI请求文件,则使用WebClient,它是最简单的.NET类,它只用一两条命令执行基本操作,.NET FRAMEWORK目前支持以http:.https:.ftp:.和 file: ...
 - Linux系统搭建GitLab---阿里云Centos7搭建Gitlab踩坑
			
一.简介 GitLab,是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目安装. 它拥有与GitHub类似的功能,能 ...