计蒜之道 测试赛 (BCD)

测试赛写写题解不会被吐槽吧。。。

淘汰赛车

时限:1000ms

内存:262144K

赛车比赛在潘多拉星球变得越来越流行了。但是他们的比赛跟我们平常的不太一样:n 辆赛车在一条长长的直道上展开同台竞技。每辆赛车的速度都为 1m/s,整条赛道在每一米都有坐标标记。

在比赛的赛车中,赛车 i 从 0 秒开始由 ai 向 bi 移动。到达 bi 之后转而返回由 bi 向 ai 移动。循环往复。

又是蒜头菌!原来这是蒜头菌正在玩的一个手机小游戏。蒜头菌可以在某些位置放下 TNT 炸毁某些赛车。因为他有 m 个问题。其中,问题 j 是:在 tj 时刻,在 xi 到 yi 之间共有几辆赛车?

你的任务就是回答萌蒜头的问题。

输入

输入的第一行包含两个数字 n 和 m(1 ≤ n, m ≤ 1000),分别代表正在比赛的赛车数量和蒜头的问题数。

接下来的 n 行中,每行包含 2 个整数 ai、bi(0 ≤ ai, bi ≤ 109, ai != bi),分别代表赛车 i 的起点和终点。

再接下来的 m 行中,每行包含 3 个整数 xj,yj,tj(0 ≤ xj ≤ yj ≤ 109, 0 ≤ tj ≤ 109),分别代表问题 j 的左右坐标边界和询问的时间。

输出

输出共有 m 行,每行各有一个整数,分别代表对应的 m 个问题的答案。

样例1

输入:

5 5
0 1
0 2
2 3
3 5
4 5
0 5 0
0 1 2
0 2 1
2 5 2
2 5 3

输出:

5
1
2
4
3

题目分析:其实是个大水题啊,主要是自己太sb了,一开始没好好分析,因为车子是来回开,m和n又都是1e3,所以直接在线求解,对每个跑道的赛车求出t时刻的位置,判断在不在目标区间内,求的方法就是每类取模

#include <cstdio>
#include <cstring>
int const MAX = 1005;
int a[MAX], b[MAX];

int main()
{
    int n, m;
    while(scanf("%d %d", &n, &m) != EOF)
    {
        for(int i = 0; i < n; i++)
            scanf("%d %d", &a[i], &b[i]);
        while(m--)
        {
            int x, y, t;
            scanf("%d %d %d", &x, &y, &t);
            int ans = 0;
            for(int i = 0; i < n; i++)
            {
                int tmp, dis = b[i] - a[i];
                if((t / dis) % 2 == 0)
                    tmp = a[i] + (t % dis);
                else
                    tmp = b[i] - (t % dis);
                if(tmp <= y && tmp >= x)
                    ans ++;
            }
            printf("%d\n", ans);
        }
    }
}

置换的玩笑

时限:1000ms

内存:262144K

小蒜头又调皮了。这一次,姐姐的实验报告惨遭毒手。

姐姐的实验报告上原本记录着从 1 到 n 的序列,任意两个数字间用空格间隔。但是“坑姐”的蒜头居然把数字间的空格都给删掉了,整个数字序列变成一个长度为 1 到 100 的且首部没有空格的数字串。

现在姐姐已经怒了,蒜头找你写个程序快点把试验数据复原。

输入

输入文件有一行,为一个字符串——被蒜头搞乱的实验数据。

字符串的长度在 1 到 100 之间。

输出

输出共一行,为姐姐的原始测试数据—— 1 到 n 的输出。

任意两个数据之间有一个空格。

样例1

输入:

4111109876532

输出:

4 1 11 10 9 8 7 6 5 3 2

题目分析:首先我们通过字符串长度可以计算出n的值,当len <= 9时,n=len,否则n = 9 + (len - 9) / 2,然后就是DFS搜了,各种剪,直接看程序吧

#include <cstdio>
#include <cstring>
char s[105];
int num[100];
int len, n;
bool flag, vis[100];

bool ok()	//判断是否合法
{
	bool has[100];
	memset(has, false, sizeof(has));
	for(int i = 0; i < n; i++)
		has[num[i]] = true;
	for(int i = 1; i <= n; i++)
		if(!has[i])
			return false;
	return true;
}

void DFS(int idx, int cnt) //下标到idx,得到cnt个数
{
	if(cnt + len - idx < n)	//如果剩下字符串的长度不能得到n个数则返回
		return;
	if(flag)	//找到可行解则返回
		return;
	if(idx >= len)	//搜到最后判断并返回
	{
		if(cnt == n && ok())
			flag = true;
		return;
	}
	num[cnt] = s[idx] - '0'; //个位数
	if(!vis[num[cnt]])	//当前数字没有被得到则记录下来并继续搜索
	{
		vis[num[cnt]] = true;
		DFS(idx + 1, cnt + 1);
		if(flag)
			return;
		vis[num[cnt]] = false;
	}
	if(idx < len - 1)
	{
		num[cnt] = 10 * (s[idx] - '0') + s[idx + 1] - '0'; //十位数
		if(num[cnt] <= n && num[cnt] > 9)
		{
			if(!vis[num[cnt]])
			{
				DFS(idx + 2, cnt + 1);
				if(flag)
					return;
				vis[num[cnt]] = false;
			}
		}
	}
	return;
}

int main()
{
	while(scanf("%s", s) != EOF)
	{
		flag = false;
		memset(vis, false, sizeof(vis));
		memset(num, 0, sizeof(num));
		len = strlen(s);
		if(len > 9)
			n = 9 + (len - 9) / 2;
		else
			n = len;
		DFS(0, 0);
		for(int i = 0; i < n - 1; i++)
			printf("%d ", num[i]);
		printf("%d\n", num[n - 1]);
	}
}

作弊揭发者

时限:1000ms

内存:65536K

鉴于我市拥堵的交通状况,市政交管部门经过听证决定在道路两侧安置自动停车收费系统。当车辆驶入车位,系统会通过配有的摄像头拍摄车辆画面,通过识别车牌上的数字、字母序列识别车牌,通过连接车管所车辆信息数据库确认车辆,进行扣费。

斗智斗勇的好戏一般从此处展开…

一些车主通过在停车时遮挡车牌上的一个或多个数字、字母序列,来阻碍识别系统的识别工作,以此逃避停车费用的缴纳。

车主这简直是用轻轻的一挡搞出来一个世界难题有木有?!管理是一方面,技术解决才是王道啊。

这么难的项目不得不交给计蒜客实验室了。D 神负责识别颜色,E 神负责型号识别,可能的车牌范围就这么一点点的被缩小了。作为实习生的蒜头也是任务艰巨,将已经存在车辆数据库中的可与当前已知信息相匹配的车牌信息筛选出来,这可是整个项目的第一步啊,重要性我就不多说了,加油吧。

输入

输入文件的第一行包含 9 个字符的字符序列代表识别的。

其中可识别的字符已由大写字母和数字显示,“*”表示因为遮挡而未被识别的字符。

输入文件的第二行包含一个整数 n (1 ≤ n ≤ 1000) —— 机动车数据库中的牌照信息的数量。

接下来 n 行,包含相应的牌照信息,每行一个。

牌照信息为长度为 9 的仅包含数字和大写字母的字符串。所有的牌照信息保证各不相同。

输出

输出文件的第一行为一个整数 k (0 ≤ k ≤ n) —— 符合给定要求的牌照数。

接下来的 k 行,输出所有可能的牌照信息。

样例1

输入:

A**1MP19*
4
A001MP199
E885EE098
A111MP199
KT7351TTB

输出:

2
A001MP199
A111MP199

题目分析:小模拟,直接搞

#include <cstdio>
#include <cstring>
char s[1005][10], re[1005][10];

int main()
{
    char t[10];
    while(scanf("%s", t) != EOF)
    {
        memset(re, 0, sizeof(re));
        int n;
        scanf("%d", &n);
        for(int i = 0; i < n; i++)
            scanf("%s", s[i]);
        int ans = 0;
        for(int i = 0; i < n; i++)
        {
            int j;
            for(j = 0; j < 9; j++)
            {
                if(t[j] == '*')
                    continue;
                if(t[j] != s[i][j])
                    break;
            }
            if(j == 9)
                strcpy(re[ans ++], s[i]);
        }
        printf("%d\n", ans);
        for(int i = 0; i < ans; i++)
            printf("%s\n", re[i]);
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-20 01:12:08

计蒜之道 测试赛 (BCD)的相关文章

计蒜之道 测试赛

题目链接:http://www.jisuanke.com/minicourse/63 绿色能源 蒜头又要改变世界了.这次他将为一些恶劣地形环境设计太阳能取电方案. 在最新的设计中,太阳能板被设置在一些太阳能塔上,与塔同高. 这一次,将有 n 座太阳能塔被设置,这些塔已经被提前制作完成,其中 i 号塔高为 hi,现在工程师需要确定将塔安置在哪些位置,以获得最大的总能量. 太阳能塔被安置的地形环境由 m 个点的多边形来表示.多边形的每个点将会给出对应的坐标(xi, yi),xi < xi+1. 经过

计蒜之道2015程序设计大赛初赛第二场——人人都有极客精神

计蒜之道2015程序设计大赛初赛第二场——人人都有极客精神 (一)体面 人人公司是一家极为鼓励极客精神的公司,当有重要的项目需要上线但又时间太紧,甚至需要当天上线的时候,往往会挂起海盗旗开启电子日期显示,让大家可以在对时间有更明确的感知的情况下,同心协力搞定重要的项目.海盗旗下方的电子屏显示的日期形式为 YYYYMMDD (年份占 4 位.月份占 2 位.天数占 2 位). 日期电子屏幕上每个数字对应的显示如下图: 从上图可以得知每个数字对应的笔画数,比如 2 的笔画数是 5,8 的笔画数是 7

计蒜之道2015程序设计大赛初赛第一场——搜狗输入法的分词算法

(一)题面 计蒜之道2015程序设计大赛初赛第一场——搜狗输入法的分词算法 搜狗输入法最近的用户输入中出现了一种新的输入模式,形如 “0k1234567”,搜狗的工程师发现这一模式后了解到,这是一种新被提出的对于十五进制数字的标记模式,其中 “0k” 是标记进制为15的前缀标记,之后的部分 “1234567” 是实际的十五进制的数字串. 在发现这一标记模式后,搜狗的工程师开始尝试在已有的分词算法上进一步加入对于十五进制数字串的处理,把网页上的这种形式的 15 进制数正确地提取出来.我们知道,标记

2017 计蒜之道 初赛 第一场 B.阿里天池的新任务

2017 计蒜之道 初赛 第一场 B.阿里天池的新任务 1 /* QYP kuai wo dai ma*/ 2 #include<algorithm> 3 #include<iostream> 4 #include<iomanip> 5 #include<cstring> 6 #include<cstdlib> 7 #include<cstdio> 8 #include<queue> 9 #include<ctime

计蒜之道2015程序设计大赛初赛第三场——腾讯手机地图

计蒜之道2015程序设计大赛初赛第三场——腾讯手机地图 (一)题面 腾讯手机地图的定位功能用到了用户手机的多种信号,这其中有的信号的作用范围近,有的信号作用的范围则远一些.有的信号相对于用户在不同的方位强度是不同的,有的则是在任何一个方向上信号强度都一致的. 已知用户面向北方拿着自己的手机,在不同方位的各种信号覆盖区域可以被抽象成以用户为圆心的一系列扇形.已知每个扇形的半径 r,和每个扇形的两条边相对于正东方向的夹角度数.每个信号覆盖区域抽象出的扇形都可以通过从第一条边逆时针旋转到第二条边画出.

2017计蒜之道 初赛 第二场 百度的科学计算器(简单)

/** 题目:2017计蒜之道 初赛 第二场 百度的科学计算器(简单) 链接:https://nanti.jisuanke.com/t/15504 题意:给一个合法的表达式,包含加号+.减号-.括号().数字常量,表达式中没有空格. 输入数据保证数字常量以及计算过程中数值绝对值均不超过 10^12??,对于浮点型数值常量,保证小数点后不超过 666 位. 思路:暴力模拟:python有函数可以直接调用. 坑点:如果表达式中出现过浮点数,那么输出结果保留6位小数, 否则输出整数,不出现小数. */

计蒜之道2015程序设计大赛初赛第四场——爱奇艺的自制节目

计蒜之道2015程序设计大赛初赛第四场——爱奇艺的自制节目 (一)题面 爱奇艺作为一家视频网站巨头,要为上亿的用户每天都提供“悦享品质”的服务.除了引进一些优秀的影视作品外,爱奇艺还做了一些诸如奇葩说.晓松奇谈的自制节目.爱奇艺最近又准备制作四档新的节目,它们分别是 W, X, Y, Z:但是现在能用来录这些节目的演播室只有两个,分别是演播室 A 和演播室 B. W 节目的现场搭建比较复杂,每一期都要在演播室 A 来录制,X 节目的摄影机位调整会影响节目质量,每一期都固定在演播室 B 来录制.而

2018 计蒜之道复赛 贝壳找房魔法师顾问(并查集+dfs判环)

贝壳找房在遥远的传奇境外,找到了一个强大的魔法师顾问.他有 22 串数量相同的法力水晶,每个法力水晶可能有不同的颜色.为了方便起见,可以将每串法力水晶视为一个长度不大于 10^5105,字符集不大于 10^5105 的字符串.现在魔法师想要通过一系列魔法使得这两个字符串相同.每种魔法形如 (u,\ v),\ u,\ v \le 10^5(u, v), u, v≤105,可以将一个字符 uu改成一个字符 vv,并且可以使用无限次.出于种种原因,魔法师会强行指定这两个串能否进行修改. 若失败输出 -

计蒜之道 測试赛

题目链接:http://www.jisuanke.com/minicourse/63 绿色能源 蒜头又要改变世界了. 这次他将为一些恶劣地形环境设计太阳能取电方案. 在最新的设计中,太阳能板被设置在一些太阳能塔上,与塔同高. 这一次,将有 n 座太阳能塔被设置.这些塔已经被提前制作完毕.当中 i 号塔高为 hi,如今project师须要确定将塔安置在哪些位置.以获得最大的总能量. 太阳能塔被安置的地形环境由 m 个点的多边形来表示.多边形的每一个点将会给出相应的坐标(xi, yi).xi < x