indeed2017校招在线编程题(网测)三

A. Calculate Sequence

分析:就是斐波那契递推公式,但是初始值是指定的,只用求第10个数,数据范围和复杂度都比较小,直接写。

B. 忘了叫啥了。

就是有a-j十个字符组成的字符串,要求去掉一些字符,使得剩下的长度大于k,且这些满足要求里面的字符串字典序最小的。然后需要枚举删除的字符串,2^10 = 1024,字符长度最大值100,所以复杂度为1024*100,在1s的时限内完全可以,直接编写。

C. Anagram Multiple Number

这题好像更简单哎,求一个数的倍数,而且长度和包含的字符完全一致,然后长度一致,那就只有2-9倍的数字满足要求,然后判断一下是否相同字符,这个数最大9999999,完全int就足够了,直接写。

D. Construct Permutation

先读懂题意,(这些题虽然都是英文的,但是描述都很短,看例子也很容易理解),就是某些位置不能放置某些数字,数据范围maxn = 100,时限是2s,用dfs一个一个序列检查合法性肯定是不行的,因为100!,这个复杂度实在是太高了,然后考虑有没有一种规则性的放法,使得按照这个规则放置以后都是满足要求的,我没有想到这个放法,(后来听师姐说可以),然后我就考虑每个位置只能放一个数,而且一定存在解,我猜是不是最大流最小割可以做,然后就画了画,应该可以。就是一个数字可以放到任一位置,这些边上的流量为1,除去输入中的不能放置的情况,然后添加源点到每个数字一条边,这些边上的流量也是1,然后添加汇点,每个位置到汇点的流量也是1,然后运行最大流算法,我从网上找了一个dinic的模板,其他算法应该也可以,由于最后一定存在解,也就是最大流一定是n,就是数字的个数,然后寻找数字的放置的位置,就是该数字发出的边中流量由1变为0的边,另一端的顶点就是最后的位置。最后计算复杂度,顶点个数100*2 + 2 = 202,dinic复杂度 202 * (202 * (202 + 1) / 2) = 8e6, 打答案的复杂度是100 * 100,在2s的时限内,完全可以。

代码先不贴了。

时间: 2024-08-09 07:48:47

indeed2017校招在线编程题(网测)三的相关文章

2018阿里巴巴在线编程题

在其他博客上看到一道 "2018阿里巴巴在线编程题" 我记得题目大概是这样的:输入数据n(n>=6)代表n个数,从0-9任意输入n个数,然后在n个数选出6个数xx-xx-xx表示 时:分:秒,求出最小时间和最大时间,若时间无效,则输出时间无效,例如: 输入: 6 6 5 4 3 2 1 输出: 123456 235641 输入: 6 9 9 9 9 9 9 输出: 时间无效 看着有点意思,就自己做了一遍,输出格式自己美化了一下,没有严格按照题目要求.代码如下: def find_

2018 校招在线编程 20题-01

1. 最大乘积(拼多多) 输入 3 4 1 2 输出 24 解题思路: 定义五个数,一个最大,一个次大,一个第三大,一个最小,一个次小.只要找到这五个数,问题就解决了.因为最大乘积只可能是最大*(次大*第三大) 或者是 最大*(最小*次小).时间复杂度O(n),空间复杂度O(1).PS:这道题输入有问题,题目给的样例是直接给了一组数,而此时用例先给了一个数的个数n,然后再给了一组数. 1 #include<bits/stdc++.h> 2 using namespace std; 3 4 in

华为2020校招笔试编程题

刚做完华为的笔试题,简要描述一下三道编程题的解决方法以及python代码实现 第一题大致描述: 给定两个已经升序排序好的的序列A={a1,a2,a3,...an} 和B={b1,b2,b3...bn} ,一个数R,找出满足以下条件的的(ai,bj)序列对 1.ai<=bj 2.bj和ai两者的距离 满足 bj-ai<=R ,要是该条件不满足,就从序列B中找出 和ai 距离最接近R的一个点bj(同时要满足条件1) 输入样例:A={1,3,5},b={2,4,6},R=1 输出样例:(1,2)(3

蘑菇街2016研发工程师在线编程题

传送门 第一题: [编程题] 搬圆桌 现在有一张半径为r的圆桌,其中心位于(x,y),现在他想把圆桌的中心移到(x1,y1).每次移动一步,都必须在圆桌边缘固定一个点然后将圆桌绕这个点旋转.问最少需要移动几步. 输入描述: 一行五个整数r,x,y,x1,y1(1≤r≤100000,-100000≤x,y,x1,y1≤100000) 输出描述: 输出一个整数,表示答案 输入例子: 2 0 0 0 4 输出例子: 1 题解转自:ixiaomo 思路很简单,千万别想复杂了 无论圆桌如何移动,都必须在圆

英雄会题目解析- 第五届在线编程大赛月赛第三题:石子游戏

题目: 甲乙两人面对若干堆石子,其中每一堆石子的数目可以任意确定.两人轮流按下列规则取走一些石子,游戏的规则如下:1.每一步应取走至少一枚石子:2.每一步只能从某一堆中取走部分或全部石子:3.如果谁无法按规则取子,谁就是输家.如果甲乙两人都采取最优的策略,甲先拿,请问,是甲必胜还是乙必胜.输入格式:多组数据,每组数据两行,第一行是一个整数N, 2<=N<=10000下一行是N个正整数,代表每堆的石子数,石子数在32位整数内.输出格式:每组测试数据输出一行,如果甲存在必胜策略,输出"W

CSDN英雄会-第五届在线编程大赛月赛第三题:石子游戏(1)

题目详情 甲乙两人面对若干堆石子,其中每一堆石子的数目可以任意确定. 两人轮流按下列规则取走一些石子,游戏的规则如下: 1.每一步应取走至少一枚石子: 2.每一步只能从某一堆中取走部分或全部石子: 3.如果谁无法按规则取子,谁就是输家. 如果甲乙两人都采取最优的策略,甲先拿,请问,是甲必胜还是乙必胜. 输入格式: 多组数据,每组数据两行,第一行是一个整数N, 2<=N<=10000 下一行是N个正整数,代表每堆的石子数,石子数在32位整数内. 输出格式: 每组测试数据输出一行,如果甲存在必胜策

美团2016在线编程题 最大差(贪心)

题目描述 有一个长为n的数组A,求满足0≤a≤b<n的A[b]-A[a]的最大值. 给定数组A及它的大小n,请返回最大差值. 测试样例: [10,5],2 返回:0 思路:最大插差值dis初始化为0,用一个指针从头遍历,找到指针之前及指针指向的元素的最小值为被减数min1,若指针指向的元素A[i] - min1 > dis,则dis更新为 A[i] - min1. 1 class LongestDistance { 2 public: 3 int getDis(vector<int>

2017美团点评web前端在线编程题(1)(2)

题1: 题目描述: 很多网页上会显示一些其他网页的超链接,如一些搜索网页会逐条列出搜索到的条目.在一些网页中,被用户点击过的超链接会换一种颜色. 假设某网页一开始有n条超链接,从上到下有1-n编号,每条超链接都显示成一个字符串,最开始所有的超链接都显示为蓝色.现在给出用户点击过得那些超链接, 一条超链接只要被点击过了,就会由蓝色变成紫色,请输出最后所有的仍未蓝色的超链接. 输入: 第一行输入一个整数n,接下来n行,每行一个字符串,表示每个超链接的名称,名称只有小写字母构成,长度不超过20,且所有

阿里前端在线编程题

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>demo</title> <style> * { padding: 0; margin: 0