九度OJ
九度
eck_燃
不要看上去很努力
展开
-
手机键盘(简单模拟)
题目描述清华大学研究生复试机试真题按照手机键盘输入字母的方式,计算所花费的时间 如:a,b,c都在“1”键上,输入a只需要按一次,输入c需要连续按三次。 如果连续两个字符不在同一个按键上,则可直接按,如:ad需要按两下,kz需要按6下 如果连续两字符在同一个按键上,则两个按键之间需要等一段时间,如ac,在按了a之后,需要等一会儿才能按c。 现在假设每按一次需要花费一个时间段,等待时间需要花...原创 2018-08-18 12:24:21 · 1954 阅读 · 0 评论 -
背包问题——01背包&01背包装箱
贪心算法01背包01背包问题是背包类问题中最基本的问题,其它各类背包问题都是在其基础上演变而来 牢记01背包的特点:每一件物品至多只能选一件,即在背包中该物品数量只有0和1两种情况 装入背包,如果装不下就换下一个,直到包满或者无物品可以装入的时候 之所以使用逆序循环,保证更新dp[j]的时候dp[j-W[i]]是没有放入物品i时的数据dp[i-1][j-W[i]] 这是因为01...原创 2018-03-30 21:57:11 · 626 阅读 · 0 评论 -
背包问题——多重背包
多重背包多重背包是介于01背包和完全背包之间: 有容积为V的背包,我们给定一些物品,每种物品包含体积w,价值v和数量k, 求用该背包能装下的最大价值总量。 与之前的背包问题都不同,每种物品可选数量不再为无穷多或者1,而是介于其中的一个确定数k 我们可以将多重背包问题转化到01背包上去,即每种物品均被视为k种不同的物品,不过这样时间复杂度较高 我们可以选择有技巧...原创 2018-03-31 15:59:21 · 320 阅读 · 0 评论 -
数学问题——素数
判断是否为素数public class Main { public static void main(String[] args) { for (int i = 1; i < 20; i++) { System.out.println(i + " " + isPrime(i)); } } public...原创 2018-03-31 21:26:32 · 386 阅读 · 0 评论 -
数学问题——位运算实现加减乘除
位运算实现加减乘除位运算实现加法 public static int add(int a, int b) { int sum = a; while (b != 0) {//不断的相加,直到没有进位信息 sum = a ^ b;//产生进位信息 二进制后直接&运算就是(1&1=1 else 0)...原创 2018-03-31 21:37:42 · 584 阅读 · 0 评论 -
比赛时候的一些技巧
避免除法百鸡问题(2009年哈尔滨工业大学计算机研究生机试真题)题目描述: 用小于等于n元去买100只鸡,大鸡5元/只,小鸡3元/只,还有1/3元每只的一种小鸡,分别记为x只,y只,z只。编程求解x,y,z所有可能解。 输入: 测试数据有多组,输入n。 输出: 对于每组输入,请输出x,y,z所有可行解,按照x,y,z依次增大的顺序输出。 样例输入: ...原创 2018-03-31 23:38:28 · 252 阅读 · 0 评论 -
日期类问题
例 2.3 日期差值 (2009 年上海交通大学计算机研究生机试真题)时间限制:1 秒 内存限制:32 兆 特殊判题:否题目描述:输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为 YYYYMMDD 输出: 每组数据输出一行,即日期差值 样例输入:样例输出: 11 来源: 九度教程第 6 题import java....原创 2018-03-31 23:45:00 · 358 阅读 · 0 评论 -
二分求幂——人见人爱 A^B(九度57题)
二分求幂若要求2^32次方,首先想到要将2循环相乘32次。但实际上不需要这么麻烦 按照原始策略解的时候,当完成前16次循环时,就已经获得了2^16的值,就不需要随后的16次循环了 只需要将2^16求平方即可。同理 2^16只需要对2^8求平方即可,2^8只需要求2^4的平方即可…… 这样本来32次乘法才能完成的工作,只需要6次乘法便可以完成。 2^32具有某种特性,它是2的整数次方,其...原创 2018-04-08 21:44:06 · 318 阅读 · 0 评论 -
递归回溯——Prime Ring Problem
Uva 1016 Prime ring problem紫书194页原题 王道计算机考研机试指南147页Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 14715 Accepted Submission(s): 6720...原创 2018-03-29 16:39:08 · 223 阅读 · 0 评论 -
贪心算法——搬寝室
搬寝室题目描述: 搬寝室是很累的,xhd深有体会.时间追述2006年7月9号,那天xhd迫于无奈要从27号楼搬到3号楼,因为10号要封楼了.看着寝室里的n件物品,xhd开始发呆,因为n是一个小于2000的整数,实在是太多了,于是xhd决定随便搬2*k件过去就行了.但还是会很累,因为2*k也不小是一个不大于n的整数.幸运的是xhd根据多年的搬东西的经验发现每搬一次的疲劳度是和左右手的物品的重量...原创 2018-03-30 20:27:04 · 477 阅读 · 0 评论 -
动态规划——最长公共子序列LIS(dp+最优解)
某国为了防御。。。 算了,简单就是一个长度为n的数列,求最长降序(允许相等) 序列是不连续的,在数组中找一个最长升序看有几项思路 反向求降序,可以用辅助数组,但这道题用一个变量就可以做记录 这里给dp版本训练思维public class LIS_DP { public static void main(String[] args) { int ar...原创 2018-03-30 19:20:35 · 1695 阅读 · 0 评论 -
贪心算法专题
贪心本质一个贪心算法总是做出当前最好的选择,也就是说,它期望通过局部最优选择从而得到全局最优的解决方案。——《算法导论》贪心算法的特点贪心算法在解决问题只根据当前已有的信息就做出选择,而且一旦做出了选择,这个选择都不会改变。换言之,贪心算法并不是从整体最优考虑,它所做出的选择只是在某种意义上的局部最优。贪心算法能得到许多问题的整体最优解或整体最优解的近似解。因此,贪心算法在实际...原创 2018-01-18 22:28:48 · 742 阅读 · 0 评论 -
成绩排序
主要是为了让大家熟悉比较器函数的用法以及如何将类或者结构体根据要求的属性优先级进行排序。还有java转c++的知识点题目描述: 有N个学生的数据,将学生数据按成绩高低排序,如果成绩相同则按姓名字符的字母序排序,如果姓名的字母序也相同则按照学生的年龄排序,并输出N个学生排序后的信息。输入: 测试数据有多组,每组输入第一行有一个整数N(N<=1000),接下来的...原创 2017-10-15 20:52:10 · 545 阅读 · 0 评论 -
输出数组内前n大的数
给你n个整数,请按照从大到小输出其中前m个大的数 输入 每组测试数据有两行,第一行有两个数n,m(0 输出 从大到小输出前m大的数 输入 5 3 3 -35 92 213 -644 输出 213 92 3 三种方法数组排序,然后输出 最好的快排,时间复杂度O(N*logN) 空间复杂度O(logN) 显然题目不是考察你排序,假设我输入数组长度10000我只要前两个最原创 2018-02-06 19:56:18 · 1287 阅读 · 0 评论 -
二叉树专题(二叉树遍历与重构)
二叉树二叉树的遍历public class BinaryTree{ //java二叉树的节点结构 重点!!!! public static class Node{ int value; Node left; Node right; public Node(int data) { ...原创 2018-02-14 23:20:30 · 466 阅读 · 0 评论 -
最短路——Floyd算法
图Floyd求最短路径在最小生成树之外,我们讨论图论中另一个经典问题,最短路径问题,寻找图中某两个特定节点间最短路径长度。 所谓图上的路径,即从图中一个起始点到一个终止节点途中经过的所有节点序列,路径的长度即所经过边的权值和 此类算法在实际中运用非常广泛,解决此类问题我们要根据图的特点和问题的特征选择不同的算法。Floyd算法的特点时间复杂度因为是三重循环,每个n次故为O...原创 2018-03-11 10:29:15 · 419 阅读 · 0 评论 -
递归回溯——Oil Deposits
Oil DepositsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 21383 Accepted Submission(s): 12319Problem Description The GeoSurvComp geo...原创 2018-03-29 21:43:39 · 216 阅读 · 0 评论 -
深度优先检索——DFS
图搜索深度优先搜索其实之前几篇博客的递归就已经很接近dfs了。伪代码描述 我们先回顾一下之前已经介绍过的广度优先搜索——BFS 广度优先搜索就是在由状态的转移和扩展构成的解答树上层次遍历的结果 与其相对的,假如我们改变对解答树的遍历方式,改为优先遍历层次更深的状态, 直到遇到一个状态节点,其不再拥有子树,则返回上一层,访问其未被访问过的子树, 直到解答...原创 2018-03-30 10:12:48 · 498 阅读 · 0 评论 -
动态规划——递推求解 错邮件
动态规划这是算法用途最广变化最多的算法之一 其实所有的动态规划,都可以由递归改写。 想要学好动态规划,就一定要对递归有深刻理解 递归与动态规划专题 递推呢就是最简单的动态规划,通过已经得到的值求解出下一个需要求解的值 当然也可以写成递归的形式如下一篇文章 兔子和奶牛递推求解一些简单的问题可以直接通过递推公式的方法求解 如斐波那契数列(这个大家就太熟悉了不写了)...原创 2018-03-30 11:55:32 · 208 阅读 · 0 评论 -
算法竞赛入门经典——训练指南 例题2
算法竞赛入门经典——训练指南 例题2你有n个部下 每个部下完成一项任务 第i个部下需要你花Bi分钟交代任务,然后他会独立的无间断的执行Ji分钟后完成任务。你需要选择交代任务的顺序,使得所有任务尽早执行完毕。 注意,不能同时给两个部下交代任务,但部下们可以同时执行各自的任务。样例输入: 3 2 5 3 2 2 1 样例输出: 8原创 2017-11-25 15:00:35 · 325 阅读 · 0 评论