- 博客(25)
- 收藏
- 关注
原创 力扣刷题 16.电话号码的数字组合
题目传送门思路本题为搜索题,所以考虑DFS和BFS解法与思路。DFSDFS考虑为先找到a,然后ad,回溯,ae,回溯,af,然后回溯到b,循环往复。class Solution { Map<Integer, String> map = new HashMap<>(); List<String> ans = new ArrayList<>(); public List<String> letterComb
2022-04-25 17:38:05 146
原创 力扣刷题 16.最接近三数之和
题目传送门思路整道题与15题相似,所以直接从比较优化的思路讲起(基础的思路可见15题)第一个思路15题的代码int n = nums.length - 1for i: int k = n - 1 for j: while(j < k && a + b + c > target) k --那么需要对k的左右都进行一次判断,因为答案要求是最接近的,k此时只是使a + b + c <= target双指针依旧是
2022-04-22 18:41:22 153
原创 力扣刷题 15.三数之和
题目传送门思路三重循环判断需要进行特判对于长度不够3的可以直接返回空首先最简单的思路就是三重循环(i,j,k)for i: for j: for k: if(nums[i]+nums[j]+nums[k]==0)但答案要求去重,可以通过contains()函数来完成if (!res.contains(ans)) { res.add(ans);}优化对于去重,我们考虑其本质:比如对i层进行搜索时,对于nums[i],已经将后面的所有可能性搜索完毕,
2022-04-22 18:40:36 232
原创 idea项目初步学习
问题一、终端无法使用git命令二、打印user信息的时候,显示null三、mvn命令不是内部或外部指令一、终端无法使用git命令点开IDEA左上角文件设置中,点击工具栏的终端将shell路径调整至git文件夹下bin文件夹中的bash.exe例:重新打开终端即可二、打印user信息的时候,显示nullgithub用户信息中没有填写name。三、mvn命令不是内部或外部指令解决方法根据这个网址上操作进行,其中在变量值处填写的是自己IDEA文件夹下\plugins\maven\lib\
2021-06-18 17:03:43 217
原创 牛客练习赛73
牛客练习赛73A.招生B.遥远的记忆A.招生传送门思路:本题有两种方法,一是模拟,将所有人的总分算出来后进行排序,只要小A考到第m个人的分数那么就可以,但数据有坑,减去校测分后得到的可能是负数,即意味着小A只需要考0分即可。二是正解,题目要求找一个数就可以联想到二分,对于小数操作就可以放大为整数,就是mid85+p15,然后将数据类型扩展到long long就可以了。代码如下:#include <iostream>#include <algorithm>using
2020-11-24 20:34:05 162
原创 [动态规划学习][CQOI2007]涂色&&Zuma
传送门思路:状态定义f[i][j],从i涂到j的最小方案数。1.若区间长度为1,则只需要刷一次,即f[i][i]=1;2.若区间长度大于1,则考虑两个区间。此时有两种方案考虑,一个是当左端点的颜色与右端点的颜色相同时,即a[i]==a[j],它可以从f[i+1][j]或f[i][j-1]转移过来,所以取二者min即可。若两端颜色不相同时,就正常区间dp即可。代码如下:#include <iostream>#include <cstring>using namesp
2020-11-12 16:41:25 98
原创 [日常水题]Micro-World
传送门题意:当a[i]>a[j]并且a[i]<=a[j]+k时,可以将a[j]删除。求最终数列可能的最小长度。思路:(贪心)将序列进行排序,从前往后遍历,满足这个条件即可删除。证:因为对于ai-1,ai,ai+1三个排序好的数,如果ai能够把ai-1删除,则ai+1也能够把ai-1删除,换句话来说就是如果ai无法将ai-1删除的话,ai+1也无法将ai-1删除,只能留着。所以只要从前往后遍历两个数即可求得答案。tips:有一个细节就是存在相同的数,我用map记录下所有数的出现次数,同时进
2020-11-10 20:45:41 283
原创 [动态规划学习]区间dp
这里两道题基本一模一样。能量项链传送门思路:(同矩阵链乘)状态定义,区间dp定义一般都是dp[i][j],将[L,R]的区间合并的方式。分界线即为l+1~r-1,因为是矩阵链乘,所以转移分dp[i][k]+dp[k][j]tips:给的数据为n,但由于是矩阵,最后会回到a[1]处,所以长度枚举需要到n+1。#include <iostream>#include <algorithm>using namespace std;const int N=300,INF
2020-11-07 20:39:14 111
原创 [补题场]codeforces 第二周周赛
A.Decrease the Sum of Digits传送门思路:从前往后将数位和相加,找到第一次大于k的时候,然后用10^k减去后面的。#include <iostream>#include <cstring>using namespace std;const int N=20;int t;int n,s;string str;char n1[N]; char n2[N];int a[N],b[N],c[N];int main(){ cin&
2020-11-07 17:39:03 818
原创 [补题场] 第 45 届国际大学生程序设计竞赛(ICPC)亚洲网上区域赛模拟赛
A.Easy Equation传送门思路:用差分优化,枚举x+y的所有情况,在枚举(x+y)+z的所有情况。#include <iostream>#include <algorithm>using namespace std;const int N=1e8+10;long long f[N],D[N];int main(){ long long a,b,c,d; cin>>a>>b>>c>>d; for(i
2020-11-07 15:49:56 462
原创 PTA 7-1 2种不同方式创建线程
import java.util.Scanner;public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int choice=sc.nextInt(); Thread th1=new math_thread(n);
2020-11-06 20:36:31 940
原创 6-4 jmu-Java-07多线程-Callable与斐波那契数列
题意:输入n,求1-n的斐波那契数列和。 for(int i=1;i<=n;i++) { taskList.add(new CalculateTask(i)); results.add(exec.submit(new CalculateTask(i))); } exec.shutdown(); for(Future<Integer> fi : results)
2020-11-06 20:10:29 899 1
原创 [动态规划学习]最短编辑距离
传送门(有需要可以支持一下yxc大佬的课程)题意:对A串进行增删改操作变成B串思路(闫式dp nb!):状态定义类似于LCSdp[i][j]表示a[1-i]匹配b[1-j]的操作数(属性:最小值)对于增操作,对于ai后需要增加一个字母匹配bj,那么即需要增加的值肯定为bj,此时上一个状态就是dp[i][j-1],转移dp[i][j-1]+1。对于删操作,需要删除ai才可匹配bj,所以上一个状态为dp[i-1][j]。转移dp[i-1][j]+1。对于改操作,对于ai需要改变才能匹配bj,所以
2020-11-04 20:35:27 106
原创 [动态规划学习]低买
传送门思路:题目很明显是lis的拓展,重要的是重复方案的处理。核心代码即: for(int i=1;i<=n;i++) { if(dp[i]==1) t[i]=1; //对处于lis序列标记 for(int j=1;j<i;j++) if(a[i]>a[j]&&dp[i]==dp[j]+1) t[i]+=t[j]; //对于同一Lis序列,t数组递增。 else if(a[i]==a[j]&&dp[i]==dp[j])
2020-11-03 21:19:02 96
原创 [动态规划学习]花店橱窗
传送门思路:状态定义f[i][j] 对前i种花选择j花瓶的最大美学值。对于题目要求的花种顺序,只需要对i种花顺序遍历即可。得到转移方程int pos=0;for(int k=0;k<j;k++) if(dp[i-1][k]>dp[i-1][pos]) pos=k; //从i-1种花的状态找到最大值,对当前状态进行更新。dp[i][j]=dp[i-1][pos]+w[i][j];同时,用p[i][j]进行方案数的记录,即p[i][j]=pos;因为当前状态由pos位置状态
2020-11-03 21:12:17 140
原创 [补题场]codeforece第一周周赛
A.Pokémon Army (easy version)题意:状态定义f[i]:f[0]表示不选,f[1]表示选择。状态转移f[1]=f[0]+a,f[0]=f[1]-a。最终答案为f[1],因为最后一位为加的答案肯定大于为减的。#include <iostream>using namespace std;const int N=3e5+10;long long f[2];int main(){ int t; cin>>t; while(t--) {
2020-11-01 10:59:53 211
原创 [动态规划学习]乌龟棋
传送门思路:对每一步进行状态定义f[a][b][c][d],(a为1步,b为2步,c为3步,d为4步),则当前格子数为a+2b+3c+4*d。#include <iostream>using namespace std;const int N=400;int n,m;int x[N],cnt[5];int f[50][50][50][50];int main(){ cin>>n>>m; for(int i=0;i<n;i++) cin&g
2020-10-29 19:42:28 120
原创 【补题场】小米邀请赛第一场
牛客小米邀请赛第一场A.Intelligent WarehouseF.Design ProblemsetI.Walking Machinej.Matrix SubtractionA.Intelligent Warehouse传送门题意:在给定长度为n的序列中,找到一个答案序列,使得答案序列中任意两个数相互为倍数,输出最大长度。用dp[i]表示i所能构成的最大序列长度,所以只要对i的整数倍进行更新,取最大值即为答案。(对整数倍进行更新,可以简化为对i的素数倍进行更新,因为合数可以由若干个素数相乘所得,从
2020-10-29 16:53:51 139
原创 【数论初步学习】扩展欧几里得定理
本章节不以理解算法为目的,更注重于使用。首先需要了解扩展欧几里得的算法———找出一对(x,y),使得其能满足ax+by=gcd(a,b)这一式子。下面给出实现此算法的代码void gcd(int a, int b, int& d, int& x, int& y) { if(!b) { d = a; x = 1; y = 0; } else { gcd(b, a%b, d, y, x); y -= x*(a/b); } }通过代码我
2020-10-27 21:31:43 210 1
原创 PTA 天梯赛选拔赛补题场
PTA 天梯赛选拔 补题场L1-1 素数对猜想L1-2 子序列L1-3 构造回文数L1-4 递增数组L1-5 出栈序列的合法性L2-3 黑白树L1-1 素数对猜想让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<10^5),请计算不超过N的满足猜想的素数对的个数。输入格式:输入在一行给出正整数N。输出格式:在一行中输出不超过N的满足猜想的素
2020-10-27 21:31:21 791
原创 Acwing打卡 任务安排1
****有 N 个任务排成一个序列在一台机器上等待执行,它们的顺序不得改变。机器会把这 N 个任务分成若干批,每一批包含连续的若干个任务。从时刻0开始,任务被分批加工,执行第 i 个任务所需的时间是 Ti。另外,在每批任务开始前,机器需要 S 的启动时间,故执行一批任务所需的时间是启动时间 S 加上每个任务所需时间之和。一个任务执行后,将在机器中稍作等待,直至该批任务全部执行完毕。也就是说,同一批任务将在同一时刻完成。每个任务的费用是它的完成时刻乘以一个费用系数 Ci。请为机器规划一个分组方案
2020-07-21 10:27:35 238
原创 关于二维数组的一点小技巧
关于遍历二维数组会超时的问题:例 十字阵列问题题目描述小 Q 新学会了一种魔法,可以对一个 N行M列 的网格上的敌人造成伤害 第 i 次使用魔法可以对网格上的一个十字形区域(即第 xi 行和第yi 列的并)中的每个格子上的敌人造成 zi 点伤害 现在小 Q 一共使用了 H次魔法,你需要在所有的施法完成之后统计造成伤害的情况,详见输出描述 提醒:本题输入规模较大,请使用高效的输入方式 1...
2020-02-17 17:48:54 328
原创 洛谷 P1141 01迷宫BFS题解
题目描述有一个仅由数字0与1组成的n×n格迷宫。若你位于一格0上,那么你可以移动到相邻4格中的某一格1上,同样若你位于一格1上,那么你可以移动到相邻4格中的某一格0上。你的任务是:对于给定的迷宫,询问从某一格开始能移动到多少个格子(包含自身)。输入格式第1行为两个正整数n,m。下面n行,每行n个字符,字符只可能是0或者1,字符之间没有空格。接下来m行,每行2个用空格分隔的正整数i,j,...
2019-12-27 20:43:23 415
原创 HDOJ2074 叠筐
规律题Problem Description需要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。Input输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;Output输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠...
2019-12-06 22:26:03 122
原创 斐波那契大数和规律题解
大数取余算法+找规律链接:https://ac.nowcoder.com/acm/contest/2900/C来源:牛客网题目描述ACM的冰冰酱是一位普通(并不)的女大学生,她最喜欢的就是斐波拉契数了,斐波那契数列是一个从第3项开始,每一项都等于前两项之和的神奇数列。冰冰酱每天都会想到许多与斐波那契数列有关的问题,有一天冰冰酱忽然想知道斐波那契数列中的任意两个位置aa到bb的全部斐波那...
2019-12-06 21:53:11 278
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人