目录

1.车的放置(搜索)

2.24点(搜索)

3.最大分解(贪心)

4.RP大冒险(RP)

5.士兵杀敌(二)

6.Sticks(搜索)

7.测试

8.逗志芃的危机(贪心)

9.强力党逗志芃

10.藏匿的刺客(贪心)


1.车的放置(搜索)

问题描述

  在一个n*n的棋盘中,每个格子中至多放置一个车,且要保证任何两个车都不能相互攻击,有多少中放法(车与车之间是没有差别的)

输入格式

  包含一个正整数n

输出格式

  一个整数,表示放置车的方法数

样例输入

2

样例输出

7

数据规模和约定

n<=8

  【样例解释】一个车都不放为1种,放置一个车有4种,放置2个车有2种。

import java.io.*;
public class Main {public static void main(String[] args) throws NumberFormatException, IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));int n = Integer.parseInt(br.readLine());Temp996b temp = new Temp996b(n);temp.dfs(1);//从第一行开始摆放System.out.println(temp.ans);}
}
class Temp996b{int n;int ans = 1;boolean visited[] = new boolean[9];//表示第几列是否摆放public Temp996b(int n) {this.n = n;}public void dfs(int step) {//表示棋子应放到第temp行if(step > n) {//递归出口:当前摆放行数超出棋盘总行数return;}for(int i = 1; i <= n; i++) {if(!visited[i]) {//step行的第i列为空visited[i] = true;//已放置ans++;dfs(step + 1);//递归至下一行摆放visited[i] = false;//回溯:将step行重置}}dfs(step + 1);//有空行情况,将step行跳过(不摆放)}
}

2.24点(搜索)

问题描述

24点游戏是一个非常有意思的游戏,很流行,玩法很简单:给你4张牌,每张牌上有数字(其中A代表1,J代表11,Q代表12,K代表13),你可以利用数学中的加、减、乘、除以及括号想办法得到24,例如:

((A*K)-J)*Q等价于((1*13)-11)*12=24

  加减乘不用多说了,但除法必须满足能整除才能除!这样有一些是得不到24点的,所以这里只要求求出不超过24的最大值。

输入格式

  输入第一行N(1<=N<=5)表示有N组测试数据。每组测试数据输入4行,每行一个整数(1到13)表示牌值。

输出格式

  每组测试数据输出一个整数,表示所能得到的最大的不超过24的值。

样例输入

3

3

3

3

3

1

1

1

1

12

5

13

1

样例输出

24

4

21

3.最大分解(贪心)

问题描述

  给出一个正整数n,求一个和最大的序列a0,a1,a2,……,ap,满足n=a0>a1>a2>……>ap且ai+1是ai的约数,输出a1+a2+……+ap的最大值

输入格式

  输入仅一行,包含一个正整数n

输出格式

  一个正整数,表示最大的序列和,即a1+a2+……+ap的最大值

样例输入

10

样例输出

6

数据规模和约定

1<n<=10^6

样例说明

p=2

a0=10,a1=5,a2=1,6=5+1

import java.util.HashSet;
import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner input=new Scanner(System.in);int n=input.nextInt();HashSet<Integer> hashSet=new HashSet<>();int result=0;//结果hashSet =dfs(n,hashSet);//遍历相加for (Integer arrayList:hashSet){result+=arrayList;}System.out.println(result);}public static HashSet<Integer> dfs(int n, HashSet<Integer> hashSet) {for (int i=n-1;i>0;i--){//找最大值,先从大的往小的找if (n%i==0){//最大的约数a(i+1)是ai的约数 {a(i+1)就是i,ai就是n,递归一次a(i+1)就是n,a(i+2)就是i},期间就是n=in=i;//更新n的值hashSet.add(n);//我不行,只能这样去除重复值dfs(n,hashSet);}}return hashSet;}
}

4.RP大冒险(RP)

问题描述

  请尽情使用各种各样的函数来测试你的RP吧~~~

输入格式

  一个数N表示测点编号。

输出格式

  一个0~9的数。

样例输入

0

样例输出

X
{当且仅当输出仅有一个数X且X为0~9的数时你的得分不为零,此时你的得分为系统根据你的输出而计算出的你本次的RP。}

数据规模和约定

  测点编号为1~10,且stdans随机。
  究竟使用怎样的函数才能获得较高的RP呢?指数函数?幂函数?斐波那契数?圆周曲线的导数函数?好想尝试一下哦~

import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();if(n > 10)n %= 10;System.out.println((int)(Math.pow(n,Math.random())));}
}

5.士兵杀敌(二)

问题描述

  南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的。

  小工是南将军手下的军师,南将军经常想知道第m号到第n号士兵的总杀敌数,请你帮助小工来回答南将军吧。

  南将军的某次询问之后士兵i可能又杀敌q人,之后南将军再询问的时候,需要考虑到新增的杀敌数。

输入格式

  多组测试数据,以EOF结尾;

  每组第一行是两个整数N,M,其中N表示士兵的个数(1<N<1000000),M表示指令的条数。(1<M<100000)

  随后的一行是N个整数,ai表示第i号士兵杀敌数目。(0<=ai<=100)

  随后的M行每行是一条指令,这条指令包含了一个字符串和两个整数,首先是一个字符串,如果是字符串QUERY则表示南将军进行了查询操

  作,后面的两个整数m,n,表示查询的起始与终止士兵编号;如果是字符串ADD则后面跟的两个整数I,A(1<=I<=N,1<=A<=100),表示第I个士兵新增杀敌数为A.

输出格式

  对于每次查询,输出一个整数R表示第m号士兵到第n号士兵的总杀敌数,每组输出占一行

样例输入

5 6

1 2 3 4 5

QUERY 1 3

ADD 1 2

QUERY 1 3

ADD 2 3

QUERY 1 2

QUERY 1 5

样例输出

6

8

8

20

6.Sticks(搜索)

问题描述

George took sticks of the same length and cut them randomly until all parts became at most 50 units long. Now he wants to return sticks to the original state, but he forgot how many sticks he had originally and how long they were originally. Please help him and design a program which computes the smallest possible original length of those sticks. All lengths expressed in units are integers greater than zero.

乔治拿了相同长度的木棍,随机切开,直到所有零件的长度最大为50个单位。现在,他想将木棍恢复到原始状态,但是他忘记了原来拥有多少木棍以及它们原本有多长时间。请帮助他,设计一个程序,计算出那些棍子的最小可能的原始长度。所有以单位表示的长度都是大于零的整数。

输入格式

The input contains blocks of 2 lines. The first line contains the number of sticks parts after cutting, there are at most 64 sticks. The second line contains the lengths of those parts separated by the space. The last line of the file contains zero.

输入包含2行的块。第一行包含切割后的木棍零件数,最多为64根木棍。第二行包含被空格隔开的那些部分的长度。文件的最后一行包含零。

输出格式

The output should contains the smallest possible length of original sticks, one per line.

输出应包含最小长度的原始摇杆,每行一根。

样例输入

9

5 2 1 5 2 1 5 2 1

4

1 2 3 4

0

样例输出

5

6

7.测试

Description

Two positive integers are said to be relatively prime to each other if the Great Common Divisor (GCD) is 1. For instance, 1, 3, 5, 7, 9...are all relatively prime to 2006.

Now your job is easy: for the given integer m, find the K-th element which is relatively prime to m when these elements are sorted in ascending order.

Input

The input contains multiple test cases. For each test case, it contains two integers m (1 <= m <= 1000000), K (1 <= K <= 100000000).

Output

Output the K-th element in a single line.

Sample Input

2006 1

2006 2

2006 3

Sample Output

1

3

5

8.逗志芃的危机(贪心)

问题描述

  逗志芃又一次面临了危机。逗志芃的妹子是个聪明绝顶的人,相比之下逗志芃就很菜了。现在她妹子要和他玩一个游戏,这个游戏是这样的:一共有n个数(n是偶数)写成一行,然后两个人轮流取数,每次只能从最前面或者最后面取走一个数,全部取完则游戏结束,之后每个人取走的数的和就是每个人的得分。由于逗志芃妹子很厉害,但他又不想输,所以只能找到你了,你要告诉他最多可以得到多少分。(注意,妹子智商是maxlongint所以是不会犯错的,每次的策略必然最优,而且逗志芃是先手)

输入格式

  第一行一个数n,表示有n个数。
  第二行就是进行游戏的n个数。

输出格式

  一个数,最高得分

样例输入

2
10 20

样例输出

20

数据规模和约定

  例:0<n,m<=1000,每个数不超过10000 。

9.强力党逗志芃

问题描述

  逗志芃励志要成为强力党,所以他将身上所以的技能点都洗掉了重新学技能。现在我们可以了解到,每个技能都有一个前提技能,只有学完了前提技能才能学习当前的技能(有一个最根本的技能不需要前提技能)。学习每个技能要消耗一个技能点,然后可以获得这个技能的威力值。由于逗志芃要陪妹子,所以他希望你教他如何点技能使得威力值最大从而成为强力党。

输入格式

  第一行两个数n,m表示有n个技能和m个技能点。第二行有n个数,第i个数表示第i个技能的威力值。
  之后的n-1行,每行两个数x,y,表示y技能的前提技能是x,也就是说先学第x个技能才能学弟y个技能。

输出格式

  一个数,最大的威力值。

样例输入

3 2
1 10 20
1 2
1 3

样例输出

21

数据规模和约定

  0<n,m<=200, 技能的威力值不超过200。

10.藏匿的刺客(贪心)

问题描述

  强大的kAc建立了强大的帝国,但人民深受其学霸及23文化的压迫,于是勇敢的鹏决心反抗。
  kAc帝国防守森严,鹏带领着小伙伴们躲在城外的草堆叶子中,称为叶子鹏。
  kAc帝国的派出的n个看守员都发现了这一问题,第i个人会告诉你在第li个草堆到第ri个草堆里面有人,要求你计算所有草堆中最少的人数,以商议应对。
  “你为什么这么厉害”,得到过kAc衷心赞美的你必将全力以赴。

输入格式

  第一行一个数字n,接下来2到n+1行,每行两个数li和ri,如题。

输出格式

  输出一个数,表示最少人数。

样例输入

5
2 4
1 3
5 7
1 8
8 8

样例输出

3

数据规模和约定

  30%的数据n<=10
  70%的数据n<=100
  100%的数据n<=1000
  所有数字均在int表示范围内

import java.util.*;
public class Main {/*** 内部类 ——> 草堆* l ——> 左边界* r ——> 右边界*/public static class Haystack {public int l;public int r;public Haystack(int l, int r) {this.l = l;this.r = r;}public int getR() {return r;}}public static void main(String[] args) {Scanner sc = new Scanner(System.in);//n个看守员int n = sc.nextInt();//草堆集合List<Haystack> haystacks = new ArrayList<>();int l, r;for (int i = 0; i < n; i++) {l = sc.nextInt();r = sc.nextInt();haystacks.add(new Haystack(l, r));}//按 ri 排序(升序)haystacks.sort(Comparator.comparing(Haystack::getR));//记录 n 个区间的交集List<Object> length = new ArrayList<>();int minr, k;while (haystacks.size() != 0) {Haystack haystack = haystacks.get(0);minr = haystack.r;length.add(minr);k = 0;l = haystack.l;while (minr >= l) {k += 1;if (k < haystacks.size()) {l = haystacks.get(k).l;} else {minr = -1;}}//因为要删除haystacks里面的多个值,所以会涉及到一个问题,就是当你删除掉下标为1的元素,//原来下标为2的元素会自动改变自己的下标为1,后面的元素依次把自己的下标值减一//鉴于这种情况,我们想循环删除haystacks中的多个元素的话,就必须从后往前删,这样保障了你删除了一个元素之后,//haystacks中元素的下标移动不会影响到那些需要删除但是还未删除到的元素// if (k > 0) {//     haystacks.subList(0, k).clear();//subList() 方法用于截取并返回动态数组中的一部分。// }代码等同for循环代码for (int i = k - 1; i >= 0; i--) {haystacks.remove(i);}}System.out.println(length.size());}
}

蓝桥杯Java——算法训练(ALGO986-996)相关推荐

  1. 蓝桥杯 Java算法训练 黑色星期五

    谢谢大家的支持,您的一键三连是 罡罡同学前进的最大动力! 一键三连 一键三连 一键三连 一键三连 一键三连 一键三连 Java算法训练 黑色星期五 有些西方人比较迷信,如果某个月的13号正好是星期五, ...

  2. 蓝桥杯java 算法训练 区间K大数查询

    问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. 第二行包含n个正整数,表示给定的序列. 第三个包含一个正整数m,表示询问个数 ...

  3. 蓝桥杯java 算法训练 Torry的困惑(基本型)

    问题描述 Torry从小喜爱数学.一天,老师告诉他,像2.3.5.7--这样的数叫做质数.Torry突然想到一个问题,前10.100.1000.10000--个质数的乘积是多少呢?他把这个问题告诉老师 ...

  4. 蓝桥杯Java——算法训练(ALGO997-1007)

    目录 1.印章(DP) 2.拿金币(DP) 3.数字游戏(搜索) 4.无聊的逗(状态搜索) 5.礼物(贪心) 6.跳马(状态搜索) 7.kAc给糖果你吃(贪心) 8.数的潜能 9.娜神平衡 10.粘木 ...

  5. 蓝桥杯 试题 算法训练 筛选号码 Java

    蓝桥杯 试题 算法训练 筛选号码Java 算法训练 筛选号码 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 有n个人围成一圈,顺序排号(编号为1到n).从第1个人开始报数(从1到3 ...

  6. 蓝桥杯 试题 算法训练 无聊的逗

    蓝桥杯 试题 算法训练 无聊的逗 问题描述 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘 ...

  7. 蓝桥杯 试题 算法训练 无聊的逗 C++ 详解

    题目: 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘成另一个长的,他想知道在两根一样长的 ...

  8. 蓝桥杯 试题 算法训练 无聊的逗 C++ 详解 - 未完善

    题目: 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘成另一个长的,他想知道在两根一样长的 ...

  9. 算法刷题系列(四)蓝桥杯python算法训练3(下)

    上一次的节点选择算法由于春节过年耽搁了,现在重新补上 上篇链接:算法刷题系列(四)蓝桥杯python算法训练3 - 经验教训 在纷繁复杂的使用了列表来暂存数据之后,发现其实可以利用笔者自己不太常用的字 ...

最新文章

  1. Linux中源码包的管理
  2. p1口输入输出实验c语言程序,51单片机P1口输入输出实验实验报告.doc
  3. mybatis一对多关联 创建_MyBatis多对多关联查询(级联查询)
  4. Robotium中定位Android客户端疑难元素
  5. java如何添加子类,java – 防止子类添加方法
  6. truncate与delete的区别
  7. 计算机网络课程设计之简单 Web Server 程序的设计与实现
  8. 学生信息管理---C#文件写入及读取
  9. Linux/Mac修改conda源,方便安装pytorch等
  10. 免费电子书:Azure Web Apps开发者入门
  11. 深度学习自学(三十六):有效提升图像分类噪声鲁棒性的小波卷积网络
  12. RE文件管理器如何获取小程序APKG文件
  13. python有趣小程序春节祝福-Python自动回复微信好新年祝福
  14. mysql索引,索引结构,索引类型,索引失效
  15. 户外直播、移动直播遇到弱网信号差,如何保证流畅又高清画面传输
  16. AI编译器XLA调研
  17. Shiro中principal和credential的区别
  18. 避免创业的大忌,我为何给 TDengine 只选择了集群、高性能与 SQL 支持三大特点?...
  19. iis8不支持 aspnet_regiis.exe -iru 命令的解决办法
  20. Cris 的 Scala 笔记整理(七):面向对象

热门文章

  1. 华为云学院-人人学loT学习笔记及扩展- 第二章 物联网平台OceanConnect
  2. 浅谈monorepo
  3. 好用的国内代理http国内代理ip
  4. 2月编程语言排行榜出炉,第一名势头强劲
  5. 7-3 JAVA-水仙花数 (20 分)
  6. 上海云计算课程——上海市信息技术培训中心云计算工程师课程 云安全 云平台 云计算技术 云计算概念
  7. 2022年如何成为一名优秀的大前端Leader
  8. 无意间发现一个好用的视频转换gif图片的开源框架
  9. 雨林木风 Windows server 2003
  10. 苹果手机用计算机魔术密码,计算器魔术#展示特定文字#魔术软件#魔术教程#iPhone#iOS...