计蒜客
微凉code
这个作者很懒,什么都没留下…
展开
-
二分法
二分法又称分半法,或对分法,是一种方程式根的近似值求法。二分法经常做为许多算法的优化途径,可以使一些O(n)的算法优化成O(logn)。所以在计算机竞赛中经常使用,为基础算法。 二分法的思想:分而治之。将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同,(如果子问题的规模仍然不够小,则再划分为k个子问题),然后递归的求解这...原创 2019-05-11 15:20:44 · 3628 阅读 · 0 评论 -
过河
在一个夜黑风高的晚上,有n个小朋友在桥的这边,现在他们需要过桥,但是由于桥很窄,每次只允许不超过两人通过,他们只有一个手电筒,所以每次过桥后,需要有人把手电筒带回来,第i号小朋友过桥的时间为a[i],两个人过桥的总时间为二者中时间长者。问所有小朋友过桥的总时间最短是多少。输入格式第一行输入一个整数n(1≤n≤1000),表示有n个小朋友。第二行有n个整数ai...原创 2019-03-03 10:13:05 · 192 阅读 · 0 评论 -
墙壁涂色
题目不再赘述,设 f[n] 为n尺寸墙壁有多少种涂色方法。f[1]=3: (红), (黄) ,(蓝)f[2]=6: (红,黄),(红,蓝),(黄,红),(黄,蓝),(蓝,红),(蓝,黄)f[3]=6: (红,黄,蓝),(红,蓝,黄),(黄,红,蓝),(黄,蓝,红),(蓝,红,黄),(蓝,黄,红)找规律了:f[4]:(红,黄,蓝)+(黄),(红,蓝,黄)+(...原创 2019-03-03 10:10:37 · 298 阅读 · 0 评论 -
数组分组
输入:752 26 1 36 72 48 43输出:1596pre[i][j]预处理从i到j分为一组的权值,dp[i]考虑前i-1位已经分好了,那么不断尝试前 j 位(dp[j]已经是最大值)和 j+1到 i 位 的最大值,并赋值给dp[i].代码如下;package Texun_12;import java.util.Scanner;public clas...原创 2019-03-03 08:57:15 · 504 阅读 · 0 评论 -
一维消消乐
题目:有n颗珠子排成一排,每一颗珠子有一个价值wi,游戏是这样,相邻的珠子可以选择消去,每一对珠子的消失,都会给总分增加两颗珠子相乘的分数,每颗珠子只能消一次,并且消完会占位 。代码如下:package Texun_12;import java.util.Scanner;public class L11 { public static void main(String[]...原创 2019-03-02 21:47:52 · 2536 阅读 · 0 评论 -
逃生
题目:蒜头君在玩一款逃生的游戏。在一个 n×m 的矩形地图上,蒜头位于其中一个点。地图上每个格子有加血的药剂,和掉血的火焰,药剂的药效不同,火焰的大小也不同,每个格子上有一个数字,如果格子上的数字是正数说明是一个药剂代表增加的生命值,如果是负数说明是火焰代表失去的生命值。蒜头初始化有 v 点血量,他的血量上限是 c,任何时刻他的生命值都不能大于血量上限,如果血量为 0 则会死亡,不能继续游...原创 2019-03-02 21:28:35 · 249 阅读 · 0 评论 -
动态规划练习
题目:工作空闲之余,蒜头君经常带着同事们做游戏,最近蒜头君发明了一个好玩的新游戏:nn位同事围成一个圈,同事 A 手里拿着一个兔妮妮的娃娃。蒜头君喊游戏开始,每位手里拿着娃娃的同事可以选择将娃娃传给左边或者右边的同学,当蒜头君喊游戏结束时,停止传娃娃。此时手里拿着娃娃的同事即是败者。玩了几轮之后,蒜头君想到一个问题:有多少种不同的方法,使得从同事 A 开始传娃娃,传了mm次之后又回到...原创 2019-03-02 21:21:48 · 253 阅读 · 0 评论 -
族谱
输入一个数n,表示家谱中的总人数。接下来n-1行,每行有2个整数x,y(1=<x<=n,1=<y<=n),表示x是y的父母。输出n行,每行有一个整数表示第i个人有多少个直系后代。输入:4 1 21 32 4输出:3 100dfs代码如下:import java.util.LinkedList;import ja...原创 2019-02-26 19:26:46 · 1048 阅读 · 0 评论 -
01背包
01背包是在M件物品取出若干件放在空间为W的背包里,每件物品的体积为W1,W2至Wn,与之相对应的价值为P1,P2至Pn。01背包是背包问题中最简单的问题。01背包的约束条件是给定几种物品,每种物品有且只有一个,并且有权值和体积两个属性。在01背包问题中,因为每种物品只有一个,对于每个物品只需要考虑选与不选两种情况。如果不选择将其放入背包中,则不需要处理。如果选择将其放入背包中,由于不清楚之前放入...原创 2019-03-05 20:48:23 · 103 阅读 · 0 评论 -
最大子矩阵
dp的方法与之前代码对比:https://mp.csdn.net/postedit/87894179代码如下:package jisuanke;import java.util.Scanner;public class L1 { public static void main(String[] args) { // TODO Auto-generated method...原创 2019-03-05 19:25:32 · 444 阅读 · 0 评论 -
动态规划入门
一维dp:首先我们来了解一下递推:后面问题的解可以通过前面问题的解求得。递推题目1:有一楼梯一共n级,每次可走1级或2级,刚开始在0级,求n级有多少种走法。对于第n级,可以由第n-1级的走法,和第n-2级的走法,求和得来,即递推公式.代码如下:import java.util.Scanner;public class L3 { public static void...原创 2019-03-02 15:16:47 · 205 阅读 · 0 评论 -
错排问题
错排问题是组合数学发展史上的一个重要问题,错排数也是一项重要的数。令是的一个错排,如果每个元素都不在其对应下标的位置上,即,那么这种排列称为错位排列,或错排、重排(Derangement)。我们从分析1 2 3 4的错排开始:1 2 3 4的错排有:4 3 2 1,4 1 2 3,4 3 1 2,3 4 1 2,3 4 2 1,2 4 1 3,...原创 2019-03-02 09:46:01 · 421 阅读 · 0 评论 -
乳草的侵占
armerJohn一直努力让他的草地充满鲜美多汁的而又健康的牧草。可惜天不从人愿,他在植物大战人类中败下阵来。邪恶的乳草已经在他的农场的西北部份佔领了一片立足之地。草地像往常一样,被分割成一个高度為Y(1<=y<=100),宽度為X(1<=x<=100)的直角网格。(1,1)是左下角的格(也就是说坐标排布跟一般的X,Y坐标相同)。乳草一开始佔领了格(...原创 2019-03-02 08:58:41 · 449 阅读 · 0 评论 -
前缀和
前缀和是一种预处理的方法,可以降低复杂度。一、前缀和(Prefix Sum)定义:给定一个数组A[1..n],前缀和数组PrefixSum[1..n]定义为:PrefixSum[i] = A[0]+A[1]+...+A[i-1];例如:A[5,6,7,8] --> PrefixSum[5,11,18,26]PrefixSum[0] =A[0] ;PrefixSum[1] ...原创 2019-03-03 10:29:36 · 396 阅读 · 0 评论 -
再探最大子段和
之前做过最大子段和的问题,以前用的是分治的方法来求解(链接)(当然也可以暴力枚举,或者可以用前缀和进行优化),这次学习了dp,来用dp来求解。代码如下:package Texun_12;import java.util.Scanner;public class L15 { public static void main(String[] args) { // TODO A...原创 2019-03-03 10:46:17 · 91 阅读 · 0 评论 -
状态压缩
1. 二进制给定一个集合,枚举所有可能的子集。枚举子集的方法有很多,二进制是一种代码编写非常方便的枚举子集方法。我们可以用二进制的一位表示集合对应某一元素的选取状态,1表示选取,0表示未选取。比如集合{ 1,2,3,4,5,6 },我们可以用010111表示集合{1,2,3,5}.二进制数位 6 5 4 3 2 1 是否选取(0,1) 1 ...原创 2019-05-11 11:36:22 · 482 阅读 · 0 评论 -
Dijkstra算法
package _最短路径;import java.awt.Point;import java.util.Arrays;import java.util.LinkedList;public class _Dijkstra { static int INF=Integer.MAX_VALUE; static int n,m,s;//图的点,边,源点 static int[]...原创 2019-03-08 21:13:44 · 124 阅读 · 0 评论 -
不带权图
一、拓扑排序 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为...原创 2019-04-19 11:03:48 · 419 阅读 · 0 评论 -
最短路习题(二)
6.成仙之路有个蘑菇精想要成仙,但是他必须要收集10000个精灵宝石,不过他要是有花精灵的泪水,就只要8000个精灵宝石就可以了,或者如果他有花精灵的血滴,就只要5000个精灵宝石便可以成仙了。蘑菇精可以和森林里的其他精灵交换东西,但是修为等级差距过大的交换会影响修炼蘑菇精就跑到花精灵那里,向他索要泪水或血滴,花精灵要他用精灵宝石来换,或者替他弄来其他的东西,他可以降低价格。蘑菇精于是又跑到...原创 2019-04-17 20:40:39 · 318 阅读 · 0 评论 -
最短路习题(一)
1.骑车比赛测试输入:5 61 2 22 3 32 5 53 4 23 5 14 5 1测试输出:6裸题,dijkstra代码如下:package _最短路习题;import java.util.Arrays;import java.util.Scanner;public class _汽车比赛 { static int n, m...原创 2019-04-13 14:48:51 · 955 阅读 · 1 评论 -
Floyd算法
Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名。[1]这段代码的基本思想就是:最开始只允许经过1号顶点进行中转,接下来只允许经过1和2号顶点进行中转……允许经过1~n号所有顶点进行中转,求任意两点之间的最短路程。用一...原创 2019-04-12 19:36:56 · 238 阅读 · 0 评论 -
SPFA算法
PFA 算法是Bellman-Ford算法的队列优化算法的别称,通常用于求含负权边的单源最短路径,以及判负权环。算法的思路:我们用数组dis记录每个结点的最短路径估计值,用邻接表来存储图G。设立一个先进先出的队列用来保存待优化的结点,优化时每次取出队首结点u,并且用u点对与u点连接的顶点进行更新操作,如果v点的最短路径估计值有所调整,且v点不在当前的队列中,就将v点放入队尾。这样不断从...原创 2019-04-12 18:55:39 · 180 阅读 · 0 评论 -
Betsy的旅行
题目:当N=3使,一种可能的路径如下:普通的dfs回溯当然是会被卡的。思路:对于一条合法的路径,除出发点和目标格子外,每一个中间格子都必然有“一进一出”的过程。所以在搜索过程中,必须保证每个尚未经过的格子都与至少两个尚未经过的格子相邻(除非当时Betsy就在它旁边)。用一个数组last记录每个格子周围没访问过的格子数量,每次进入和退出一个格子的时候,都会更新他周围未访问格...原创 2019-04-05 21:33:20 · 1817 阅读 · 0 评论 -
全排列(计蒜客)
代码如下:package _计蒜客._深搜习题;import java.util.Scanner;public class _全排列 { static int n; static boolean[] vis=new boolean[20]; static void dfs(int cnt,int num){ if(cnt==n){ ...原创 2019-04-05 10:18:21 · 321 阅读 · 0 评论 -
找数字
dfs搜索:代码如下:import java.util.Scanner;public class _找数字 { static int n; static boolean ok; static void dfs(long x,int cnt){ if(cnt>=19) return; if(...原创 2019-04-04 16:55:13 · 286 阅读 · 0 评论 -
最长公共子序列 LCS
最长公共子序列:给定两个字符串,求二者公共子序列的最长长度。按照序列的长度来划分状态(dp),也就是 s1的前 i 个字符和 s2 的前 j 个字符 的最长公共子序列长度,记为lcs[i][j].如果 s1 的第 i 项和 s2 的第 j 项相同,那么 s1[i] 与 s2[j] 作为公共子序列的末尾,则 ...原创 2019-03-03 21:00:17 · 193 阅读 · 0 评论 -
最长上升子序列 LIS
【题目描述】给定N个数,求这N个数的最长上升子序列的长度。【样例输入】72 5 3 4 1 7 6【样例输出】4什么是最长上升子序列? 就是给你一个序列,请你在其中求出一段不断严格上升的部分,它不一定要连续。就像这样:2,3,4,7和2,3,4,6就是序列2 5 3 4 1 7 6的两种选取方案。最长的长度是4.O(N^2): 用 dp[i] 表示以 i ...原创 2019-03-03 11:22:02 · 242 阅读 · 0 评论 -
踏青
习题:踏青蒜头君和他的朋友周末相约去召唤师峡谷踏青。他们发现召唤师峡谷的地图是由一块一块格子组成的,有的格子上是草丛,有的是空地。草丛通过上下左右4个方向扩展其他草丛形成一片草地,任何一片草地中的格子都是草丛,并且所有格子之间都能通过上下左右连通。如果用'#'代表草丛,'.'代表空地,下面的峡谷中有2片草地。##....##处在同一个草地的2个人可以相互看到,空地看不到草地里面的人。...原创 2019-02-26 11:35:51 · 187 阅读 · 0 评论 -
括号匹配问题
问题不再赘述代码如下:import java.util.Scanner;import java.util.Stack;public class L9 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in...原创 2019-02-25 18:47:41 · 210 阅读 · 0 评论 -
R进制数
输入一个数N,一个进制R,输出转换后的数。(10是A,11是B,12是C,13是D,14是E,15是F)输入: 23 12输出:1B代码如下:import java.util.Scanner;public class L2 { public static void main(String[] args) { // TODO Auto-generated method...原创 2019-02-23 17:11:54 · 3352 阅读 · 0 评论 -
最大子矩阵和
最简单的枚举:import java.util.Scanner;//朴素public class L1 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); int n=sc.nextInt(); ...原创 2019-02-23 16:49:40 · 595 阅读 · 0 评论 -
十字图
问题描述小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:..$$$$$$$$$$$$$....$...........$..$$$.$$$$$$$$$.$$$$...$.......$...$$.$$$.$$$$$.$$$.$$.$...$...$...$.$$.$.$$$.$.$$$.$.$$.$.$...$...$.$.$$.$.$.$$$$$.$.$....原创 2019-02-23 11:32:12 · 526 阅读 · 0 评论 -
求解n元方程
求解形如 k1*x1^p1+k2*x2^p2.........=0 的方程。输出有多少解。,,n表示n元方程,,未知数第一行输入一个整数n,第二行输入一个整数M,第三行到n+2行,每行2个整数,分别为.输入样例:31001 2-1 21 2输出:104dfs深搜代码如下:import java.util.Scanner;public ...原创 2019-02-27 20:27:20 · 833 阅读 · 0 评论 -
字符A的数量
输入一段字符串,统计字符串中A的数量。import java.util.Scanner;public class T1 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); String s=sc.n...原创 2019-02-23 10:18:44 · 525 阅读 · 0 评论 -
节假日
给定一个年份,计算这一年的假期。双休:2天阳历:元旦: 1.1 一天 劳动节 5.1 一天 国庆节 10.1 三天 圣诞节 12.5 三天阴历:春节 1.1 三天 清明节 4.4-4.6某一天 一天 端午节 5.5 一天 ...原创 2019-02-23 10:11:41 · 201 阅读 · 0 评论 -
恋爱纪念日
输入一个年月日表示恋爱,一个数字天数,表示多少天恋爱纪念日输出日期。输入:2016 10 1 100输出:2017-01-09输入:2017 1 1 10输出:2017-01-11代码如下:import java.util.Scanner;public class L7 { public static void main(String[] args) { ...原创 2019-02-23 09:51:57 · 1355 阅读 · 0 评论 -
日期星期闰年问题
闰年定义:1.年份能被400整除的是闰年2.年份非整百且能被4整除的是闰年几月几号是星期几的问题:如何在不查日历情况下算出来呢?一种简单的方法是知道某一天是星期几,然后算出目标日期距离那个某一天的天数,推算目标日期的星期。第二种方法是基姆拉尔森计算公式, 计算公式: W= (d+2*m+3*(m+1)/5+y+y/4-y/1...原创 2019-02-22 18:22:47 · 280 阅读 · 0 评论 -
寻找字符串
输入:ossosso osso 输出: 2输入:i miss you! miss输出:1代码如下:import java.util.Scanner;public class L5 { public static void main(String[] args) { // TODO Auto-generated me...原创 2019-02-22 16:56:28 · 529 阅读 · 0 评论 -
对称字符串
输入:2AABA输入:4AABAABACABAABACABADABACABA代码如下:import java.util.Scanner;public class L4 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Sc...原创 2019-02-22 16:44:31 · 882 阅读 · 0 评论 -
造房子
输入: 2 2输出:+-+-+|*|*|+-+-+|*|*|+-+-+输入:3 4输出:+-+-+-+-+|*|*|*|*|+-+-+-+-+|*|*|*|*|+-+-+-+-+|*|*|*|*|+-+-+-+-+代码如下:import java.util.Scanner;public class L3 { public static v...原创 2019-02-22 16:26:53 · 167 阅读 · 0 评论