经典题题解
NGUP_LEE
毕业之后找到了一份还可以的工作,就是少了一些上学时学习的激情,上班就已经搞得自己精疲力尽,偶尔点开自己的博客,看到自己的学习笔记还可以帮助到不少的同学感到很开心。
加油,陌生人,如果你是为了挣钱,请努力,互联网不会辜负你,最重要的是你要考虑清楚自己的方向~
展开
-
九宫格数独——计蒜客 - A1599(dfs)
题目连接这个题目初始一看好复杂啊,好多判断的条件,但是只要我们把判断是否符合数独的条件写好,再配合DFS其实这个难度不是很大,就是有一些细节的地方需要注意。我是先选好一个数填进去,然后进行判断是否符合条件,判断的时候在这一行找到刚填进去的这个数,确定这个位置是不是刚填的位置,如果不是则说明这一行已经有重复的了,则返回,同理 判断每一列和每个九宫格#include <iostream>#include <string.h>using namespace std;int原创 2020-10-14 21:14:54 · 587 阅读 · 0 评论 -
HDU - 1711——Number Sequence(基础KMP)
题目连接这个很明显的KMP,套板子就行啦有一个问题就是我代码中下标是从0开始的,在输出的时候下标需要加’1’#include <stdio.h>#include <string.h>#define N 1000005int a[N];int b[N];int next[N];int m,n;void get_next()//构建数组{ int j=0,k=-1; next[0]=-1; while (j<n) {原创 2020-10-14 12:28:13 · 282 阅读 · 0 评论 -
POJ——2456(二分搜索)
题目链接题目大意,给牛的数量和牛棚的坐标位置,求把牛全部放进牛棚后最小牛间距的最大值思路:二分枚举相邻两牛的间距,判断大于等于此间距下能否放进所有的牛#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>using namespace std;const int N = 1e6 + 10;int a[N], n, m;bool judge(int原创 2020-10-11 19:40:05 · 378 阅读 · 0 评论 -
CodeForces - 1325B 水题,考STL中set的运用
题目链接题目大意:给一组数,这一组数可以无限循环延申下去,问可以组成最长的递增子序列,看例子一看就知道了。用数组存值去重可以但是数据太大了,STL中的set容器可以直接去重,size方法还可以直接求长度,非常方便,但是有一点,每次都需要清空容器,不然会WA#include <iostream>#include <cstdio>#include <stdlib.h>#include <string.h>#include <queue>原创 2020-09-19 18:20:51 · 299 阅读 · 0 评论 -
KMP例题 HDU-3336
题目链接分析:一个标记刚开始指向第一个位置,,然后从第二个开始遍历,遍历到的每个字符和标记指向的字符进行比较,如果一样,则这个标记就向后移动一个,因为从这两个位置开始就有了相同的字符串,前面的已经相同,只需要比后面是不是一样,往后比就行,如果还是相同,前面的标记继续向后移动,遍历的指针也指向下一个。如果不一样,则那个标记重新回到第一个位置然后题目说的可分解字符串的个数,我们只需要新开一个数组b[],这个太抽象了 我解释不出来,看代码吧#include <iostream>#incl原创 2020-09-19 18:09:31 · 174 阅读 · 0 评论 -
牛客每日一题——小A买彩票
题目连接这道题没啥规律,看了别人的题解发现可以组合枚举或者DP,或者记忆化搜索先说一下组合枚举总数据 4^n 最大 4 ^ 30 long double可以存下。组合枚举总中奖 元,2元,3元,4元的个数,也就是三重for循环,复杂度O(n^3),设1,2,3,4的个数分别是 a,b,c,d,那么对于不亏的情况,应该满足 2a+b<=d ,并且 a+b+c+d=n,满足上述条件下不亏方案的总个数应该是 a个1,b个2,c个3,d个4的全排列个数,应该等于n!/(a!*b!*c!*d!),原创 2020-09-18 15:24:46 · 388 阅读 · 0 评论 -
牛客每日一题——保护花
题目连接这个很明显是贪心,推导一下公式假设这一群牛中有A、B这两头,他们的值分别是ati adi,bti bdi,并且已经知道了总的 di值 Sdi假设先运A牛就是比先运B牛好,说明先运A牛总的损坏低则有(Sdi-adi)*2*ati<=(Sdi-bdi)*2*bti可以发现当 adi 越高 ati越低时,总的损坏就越低,所以我们直接处理一下数据ti/di排个序,在按上面的公式处理就好了#include <iostream>#include <cstdio>原创 2020-09-16 09:11:01 · 233 阅读 · 0 评论 -
At coder——C - Skill Up (简单搜索)
添加链接描述本题数据量不大,可以直接dfs,但是我一时没有想起来全部遍历的搜索是怎样的(懵逼了!走四个方向能想出来,走n个方向就想不出来了我好菜)用一个数组存每次的学习进度,每次学习了一本书之后就把这本书的价值加到存价值的遍历上,然后遍历存学习进度的数组看是否都符合题目的要求,不符合的话就出来后继续下一步深搜,符合的话就让当前的费用与当前存的最小费用比取最小存下然后退出,进入下一次的搜索#include<iostream>#include<string.h>#include原创 2020-09-14 21:01:57 · 616 阅读 · 0 评论 -
牛客每日一题——华华给月月准备礼物(二分基础)
华华给月月准备礼物先考虑暴力,直接从大到小(截取木棍的长度)枚举,因为长度越长截取出来的数量就会越少,所以我们可以知道,在截取的数量符合要求的情况下,是有一个截取长度的区间,即如果我们把答案设为ans,那么当最终的木棍长度小于等于ans就都是可行的,而当其大于ans的时候,就不可行了。有了这样的性质就可以考虑二分了确定枚举的左界L(初值取1),右界R(初值取最长的那根木棍长度),取区间中点mid,如果mid这个值作为最终的木棍长度可行,就说明小于mid的都可行,答案肯定是mid或者在右边,于是就可以缩原创 2020-09-13 20:25:26 · 216 阅读 · 0 评论 -
Leetcode221——最大正方形
题目连接题意很好理解,这里我根据官方的题解,总结出两种方法暴力法(搜索或者全部遍历)DP动态规划1.暴力~由于正方形的面积等于边长的平方,因此要找到最大正方形的面积,首先需要找到最大正方形的边长,然后计算最大边长的平方即可。遍历矩阵的每个元素,每次遇到1,把此当作正方形的左上角,然后看此点的右下角是否为1,如果不是,则退出看下一个点,如果是则看右下角的左边的点和右下角右边的点每次能满足正方形的条件,则向右下延展,每次再下方新增一行以及在右方新增一列,判断新的点是否为1class S原创 2020-09-09 20:13:32 · 220 阅读 · 0 评论 -
PDSUACM第六次比赛B题(令人头痛的题)
最近,瓦西亚决定提高他的手枪射击技能。今天,他的教练为他提供了以下锻炼。他在桌子上连续放置了n个罐头。罐从1到n从左到右编号。 Vasya必须将每个罐子击倒一次才能完成练习。允许他选择将罐子打倒的顺序。 Vasya知道ii罐的耐久性是aaii。这意味着,如果Vasya已经将xx罐击倒,并且现在准备开始射击第i罐,那么他将需要(ai⋅x+ 1)枪才能将其击倒。您可以假设,如果Vasya开始射击ii...原创 2020-02-19 12:38:34 · 218 阅读 · 0 评论 -
A - union checking set 并查集入门
In some social network, there are nn users communicating with each other in mm groups of friends. Let’s analyze the process of distributing some news between users.Initially, some user xx receives t...原创 2020-04-07 12:02:04 · 190 阅读 · 0 评论