目录

1.车的位置(搜索)

2.24点(搜索)

3.最大分解(贪心)

4.RP大冒险

5.士兵杀敌(二)


1.车的位置(搜索)

问题描述

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

输入格式

包含一个正整数n

输出格式

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

样例输入

2

样例输出

7

数据规模和约定

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

示例代码

#include<iostream>
#include<algorithm>
using namespace std;
int n, sum = 0, f[9] = { 0 };
int ans = 0;
void dfs(int sum) {if (sum == n) {//如果所有行都已经遍历完ans++;}else {for (int i = 0; i <= n; i++) {if (i == 0) {//如果sum+1行不放置车sum++;dfs(sum);sum--;}else {//如果当前行放置车if (f[i] == 0) {//如果当前列没有放置过车f[i] = 1;sum++;dfs(sum);sum--;f[i] = 0;}}}}
}
int main() {cin >> n;dfs(sum);cout << ans;return 0;
}

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

示例代码

#include<iostream>
#include<algorithm>
using namespace std;
int n, a[5][5], ans = 0, b[4], temp1, temp2, temp3;
int sum = 0;
int xuanze(int i, int c, int d) {//判断是哪种运算符int hhh = 1;switch (i) {case 0:hhh = c + d; break;//加法case 1:hhh = c - d; break;//减法case 2:hhh = c * d; break;//乘法case 3:hhh = c % d; break;//求余}return hhh;
}
void dfs(int index, int sum) {//针对先a后b再c最后d的运算顺序if (sum == 3) {//如果运算符已经分配完毕if (b[sum] <= 24) {//如果结果小于24则符合题目ans = max(ans, b[sum]);}}else {for (int i = 0; i <= 3; i++) {//选一种运算符运算b[sum + 1] = xuanze(i, b[sum], a[index][sum + 1]);if (b[sum + 1] != 0 && i == 3) {//如果选择的是除法而且不能够整除,即运算不规范return;//返回上一步,还有一个原因是因为这个for循环已经结束了}else {if (i == 3) {b[sum + 1] = b[sum] / a[index][sum + 1];//可以整除,求商}sum++;dfs(index, sum);sum--;}}}
}
void twoo(int index) {//针对两堆数据,(a+b)*(c+d)这种for (int i = 0; i <= 3; i++) {//a和b之间的运算符选择if (i == 3) {if (a[index][1] == 0) {//a和b之间能否除法break;}}temp1 = xuanze(i, a[index][0], a[index][1]);if (i == 3) {if (temp1 == 0) {//如果能整除temp1 = a[index][0] / a[index][1];}else {//如果不能整除break;}}for (int j = 0; j <= 3; j++) {//c和d之间的运算符选择if (j == 3) {if (a[index][3] == 0) {//c和d之间能否除法break;}}temp2 = xuanze(j, a[index][2], a[index][3]);if (j == 3) {if (temp2 == 0) {//如果可以整除temp2 = a[index][2] / a[index][3];}else {//如果不能整除break;}}for (int k = 0; k <= 3; k++) {//(ab)与(cd)之间的运算符选择if (k == 3 && temp2 == 0) {//如果不能使用除法break;}temp3 = xuanze(k, temp1, temp2);if (k == 3) {if (temp3 == 0) {//可以整除temp3 = temp1 / temp2;}else {//不可以整除break;}}if (temp3 <= 24) {//符合条件的找最大值ans = max(temp3, ans);}}}}
}
int main() {cin >> n;for (int i = 0; i < n; i++) {for (int j = 0; j < 4; j++) {cin >> a[i][j];}sort(a[i], a[i] + 4);//从小到大排序,为next_permutation函数铺垫}for (int i = 0; i < n; i++) {ans = 0;do {sum = 0;b[0] = a[i][0];dfs(i, sum);sum = 0;twoo(i);} while (next_permutation(a[i], a[i] + 4) != 0);//只要数组a中的元素还能排序就继续运行cout << ans << endl;}return 0;
}

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

示例代码

#include<iostream>
#include<algorithm>
using namespace std;
int ans = 0, n, temp;
int qiuyue(int a) {//找到除了本身的最大约数for (int i = a / 2; i >= 1; i--) {if (a % i == 0) {return i;}}
}
int main() {cin >> n;if (n == 1) {//如果输入的是1,只能为1cout << 1;return 0;}temp = n;do {temp = qiuyue(temp);//最大约数进入下一次循环ans += temp;} while (temp != 1);//temp=1代表循环结束,没法继续分解cout << ans;
}

4.RP大冒险

问题描述

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

输入格式

一个数N表示测点编号。

输出格式

一个0~9的数。

样例输入

0

样例输出

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

数据规模和约定

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

示例代码

#include<iostream>
#include<algorithm>
using namespace std;
int n;int main() {cin >> n;n = n % 9;n = 9 - n;cout << n;
}

只要保证输出在0-9,想怎么写怎么写

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

示例代码

#include<iostream>
#include<algorithm>
using namespace std;
int M, N, a[1000000], aa[1000000];
struct Zhiling {int m;int n;string q;
};
struct Zhiling b[100000];
int main() {while (scanf("%d%d", &N, &M) != EOF) {//只要不是EOFaa[0] = 0;for (int i = 1; i <= N; i++) {cin >> a[i];aa[i] = aa[i - 1] + a[i];//前缀和}for (int i = 1; i <= M; i++) {cin >> b[i].q >> b[i].m >> b[i].n;}for (int i = 1; i <= M; i++) {if (b[i].q[0] == 'Q') {//如果是查询杀敌数cout << aa[b[i].n] - aa[b[i].m - 1] << endl;}else {//如果是修改杀敌数for (int j = b[i].m; j <= N; j++) {aa[j] += b[i].n;}}}}return 0;
}

蓝桥杯算法训练合集三 1.车的位置2.24点3.最大分解4.RP大冒险5.士兵杀敌(二)相关推荐

  1. 蓝桥杯算法训练合集十三 1.P06022.P07033.逗志芃的危机4.唯一的小可爱5.JOE的矩阵

    目录 1.P0602 2.P0703 3.逗志芃的危机 4.唯一的傻子 5.JOE的矩阵 1.P0602 问题描述 编写一个程序,输入一个4位的自然数,将组成该数的各位数字重新排列,形成一个最大数和一 ...

  2. 蓝桥杯算法训练合集八 1.数的划分2.求先序排列3.平方计算4.三角形高5.单词复数

    目录 1.数的划分 2.求先序排列 3.平方计算 4.三角形高 5.单词复数 1.数的划分 问题描述 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序). 例如:n=7,k=3,下面三种 ...

  3. 蓝桥杯算法训练合集一 1.印章2.拿金币3.数字游戏4.无聊的逗5.礼物

    目录 1.印章(动态规划) 2.拿金币(动态规划) 3.数字游戏(搜索) 4.无聊的逗(状态搜索) 5.礼物(二分法和前缀和) 1.印章(动态规划) 问题描述 共有n种图案的印章,每种图案的出现概率相 ...

  4. 蓝桥杯算法训练合集四 1.p0802 2.A的B的C次方次方 3.出现次数最多的整数 4.成绩分级 5.台阶问题

    目录 1.p0802 2.A的B的C次方次方 3.出现次数最多的整数 4.成绩分级 5.台阶问题 1.p0802 问题描述 编写一个字符串表达式求解函数int expression(char* s); ...

  5. 蓝桥杯算法训练合集十二 1.比较2.计算最小公倍数3.比赛安排4.潜伏者5.P0702

    目录 1.比较 2.计算最小公倍数 3.比赛安排 4.潜伏者 5.P0702 1.比较 问题描述 给出一个n长的数列,再进行m次询问,每次询问询问两个区间[L1,R1],[L2,R2], 询问数列第L ...

  6. 蓝桥杯算法训练合集十七 1.数字反转2.试题39713.矮人采金子4.筛法5.机器指令

    目录 1.数字反转 2.试题3971 3.矮人采金子 4.筛法 5.机器指令 1.数字反转 问题描述 给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形式,即除非给定的原数为 ...

  7. 蓝桥杯算法训练合集十五 1.打翻的闹钟2.智斗锅鸡3.文件列表

    目录 1.打翻的闹钟 2.智斗锅鸡 3.文件列表 1.打翻的闹钟 问题描述 冯迭伊曼晚上刷吉米多维奇刷的太勤奋了,几乎天天迟到.崔神为了让VonDieEman改掉迟到的坏毛病,给他买了个闹钟. 一天早 ...

  8. 蓝桥杯基础练习合集一(C语言) 1.A+B问题2.数列排序3.十六进制转八进制4.十六进制转十进制5.十进制转十六进制

    目录 1.A+B问题 2.数列排序 3.十六进制转八进制 4.十六进制转十进制 5.十进制转十六进制 1.A+B问题 问题描述 输入A.B,输出A+B. 输入格式 输入的第一行包括两个整数,由空格分隔 ...

  9. 蓝桥杯 算法训练 印章

    蓝桥杯 算法训练 印章 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入输出: 一行两个正整数n和m 一个实数P表示答案,保留4位小数. 样例: 2 3 ...

最新文章

  1. MediaWiki安装
  2. 程序、进程、线程的关系
  3. ThinkServer TD340服务器安装操作系统[转]
  4. 破解32位NT6内核系统(vista/win7 8G以上)的内存限制,完美支持4GB至128GB内存,全新教程!
  5. 没写client,想先测试server端怎么办?
  6. 正则表达式与相关工具
  7. 禁用浏览器cache,是浏览器上的回退按钮失效。
  8. 复旦 | DialogVED:用于对话响应生成的预训练隐变量编码-解码模型
  9. 大数据工作由哪几部分组成
  10. 1.1 linux介绍
  11. spring学习笔记整理--03(Spring的三种实例化Bean的方式)
  12. 你家的猫也能来段东北话了:快手快影一键「智能配音」,三种方言随意换,还能配出《舌尖》风...
  13. wincc7.4安装记录
  14. mdt 计算机名_MDT Administrator
  15. linux内网劫持教程,利用kali进行dns劫持入侵局域网
  16. Java中模拟评分系统_评分系统.java
  17. android 自定义viewpager指示器,Android自定义View Flyme6的Viewpager指示器
  18. QT笔记——临时的悬浮窗口
  19. python里面的pip是什么意思_python中的pip是什么意思
  20. Beyond compare添加插件

热门文章

  1. no applicable items eclipse
  2. c语言中的return 0有什么用?
  3. 小程序导航栏透明,精准设置小程序自定义标题的高度和定位
  4. 网址URL转义,特殊字符编码HTTP URL编码表
  5. JDBC MySQL
  6. 统计学(3)——数据抽样方法的细节
  7. Simditor 富文本编辑器多选图片上传、视频连接插入
  8. c语言 10 9-8 7-6… 1循环语句,C语言学习与总结---第五章:循环结构程序设计
  9. 一个tesseract ocr box 文件查看toy,python
  10. java 外文翻译_计算机 java 外文翻译 外文文献 英文文献