摘要: 题目链接 设计单向链表 题解 就是一个基础的数据结构题,选自 PapaMelon 系统算法课程 - 基础版,目的是为了让我们熟悉单向链表的各种操作,包括:插入,删除,倒转,遍历 #include <iostream> #include <cstdio> #include <vector> #incl 阅读全文
posted @ 2021-07-12 17:04 Titanium 阅读(67) 评论(0) 推荐(0) 编辑
摘要: www.gonglin91.com 阅读全文
posted @ 2013-06-28 20:08 Titanium 阅读(236) 评论(0) 推荐(0) 编辑
摘要: http://codeforces.com/problemset/problem/317/A题意:给两个数字,可以两数相加去替换其中一个数字。问要做多少次,可以让两个数字钟至少一个 >= 目标数字m,输出次数,不可能的话输出-1比较简单的题目,用来练习JAVA,代码写得有点,呵呵................import java.util.*;public class Main{ static long max(long x , long y){ return x > y ? x : y; } static long solve(long a ,long b ,l... 阅读全文
posted @ 2013-06-18 13:52 Titanium 阅读(420) 评论(0) 推荐(0) 编辑
摘要: 题目1502:最大值最小化(二分答案)九度OJJavaimport java.util.Scanner; public class Main { public static int max(int x ,int y){ return x > y ? x : y; } public static int solve(int tot , int m , int n ,int a[]){ int low = 1 , high = tot; while(low <= high){ int mid = (... 阅读全文
posted @ 2013-06-17 20:05 Titanium 阅读(633) 评论(0) 推荐(0) 编辑
摘要: 推荐技术公众号:不爱睡觉的大猪 好像LCA的题目并不多,现在就做了10道左右,但是找不到别的了,在此做个小总结,将来有更好的题目会不断更新 解决LCA问题,一般用3种方法 1.朴素方法:两个点都一直沿路径往上走,直到有某一个节点被经过两次并且是第一次出现这样的点,那么这个就是LCA 此方法最好理解, 阅读全文
posted @ 2013-06-14 10:20 Titanium 阅读(6592) 评论(0) 推荐(3) 编辑
摘要: LCA + 二分(很好的题目,思维难度和编程技巧兼具的一题,但是写起来又不会太麻烦,好题!)思路参考了网上题意:略,就是点间可以跳跃,但是不能越过两个点,每次跳跃的距离就是两点的距离 * 21.一般很容易想到,可以把一个状态看成一个点,那么状态间的转移就可以看做点间的连边,而且应该是无向边,应该两个状态是可以转化的。但是想到这里还不够,如果能想到这个图其实是个二叉树那么就完美了,而且应该说是一个无限深的二叉树,而且每个节点都有两个儿子,不会只有1个为什么会是一个二叉树,是因为对于每个状态,它都一定只会有3种或2种转移可能。对于一个状态,我们将3个点排好序,x < y < z如果y 阅读全文
posted @ 2013-06-14 09:45 Titanium 阅读(1379) 评论(0) 推荐(0) 编辑
摘要: 稍后更新部分题解........ 阅读全文
posted @ 2013-06-13 16:40 Titanium 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 数学,规律,构造类问题题意,就是以任意一个点为中心,交换它左右两个点的位置。一开始想这题,有个地方错了,所以一直想不到,就是把所有黑子当成一样的,白子当成一样,这样想也不是说错,但是这样想会限制了思维然后换一种思维,给所有棋子按1到n编号,就算颜色相同,编号也不同,是不同的棋子。然后我们看看交换的时候会发生什么事情以点a为中心,那么a-1和a+1发生交换,那么也就是说,编号a-1的点去了a+1的位置,如果继续交换的话,它还可以去到a+3,a+5……的位置,这里有一个突破点就是,它所在的位置的奇偶性不行,如果它一开始就在奇数的位置,无论怎么交换它还是在奇数位置,偶数亦然。但!不要这么轻易下结论, 阅读全文
posted @ 2013-06-12 20:11 Titanium 阅读(586) 评论(0) 推荐(0) 编辑
摘要: 搜索题意:先给出大方阵的边长,再给出m个小方阵并给出每个方阵的边长,问是否可以不发生重叠地把小方阵放进大方阵中,并且大方阵完全利用没有剩余这题的代码不难写,关键是要找到策略,这题的策略比搜索本身的剪枝更有价值摆放小方阵的策略是,尽可能往上面摆,然后尽可能往左边摆。另外有个策略一开始想错了,我是想先把小方阵排序,先放好大的,再放好小的,这样在摆放过程中可能出问题,画图可知,正确的策略是就目前的摆放情况,能放得到下哪个就放哪个,无所谓大小为了满足尽可能放在左上方的条件,需要记录大方针的状态col[i]的意义是,第i列,从最顶部数下来,被连续占据了多少格注意在整个摆放过程中,每一列都保证是被连续占据 阅读全文
posted @ 2013-06-12 18:06 Titanium 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 图论构造类问题题意:输入n个点,要求你连接一些边,使其变为无向图,并且,在图中任选3个点,这3个点的度都不会完全相等构造方法是对于奇数个点,第n/2+1个点不要连线,将点集分为相等的两部分,1到n/2为一部分,n/2+2到n为一部分,从第一部分开始连线,都指向第二部分,1号点连n/2条,2号点连n/2-1条,3号点连n/2-2条………………n/2号点连1条对于偶数个点是一样的,刚好能将点分为两个部分,两个部分的连线方法一样(这构造太巧妙了,很容易就能看到不会有3个点的度相同)#include <iostream>#include <cstdio>#include < 阅读全文
posted @ 2013-06-12 17:50 Titanium 阅读(194) 评论(0) 推荐(0) 编辑