当前位置: 首页 > news >正文

每日两道算法题:DAY3

题目五:棋盘问题

题目五:棋盘问题

1.题目来源:

NOIP1997 普及组第一题,红色入门,签到题。

2.题目描述:

3.题目解析:

求出一个棋盘中有多少长方形(不包括正方形)和正方形。

4.算法原理:

暴力枚举

观察数据范围,本题可以暴力枚举出所有的矩形,再去判断是正方形还是长方形。

固定左上角,枚举右下角。

时间复杂度:O(n ^ 4);100 * 100 * 100 * 100 = 1e8,勉强能过。

加上常数级别的优化(右下角一定在左下角的右下方),就没问题了。

数据范围再大一些的话,就要通过数学推公式的方式解决。

有兴趣的话可以自己下去推一推(计数原理、排列组合)

5.代码实现:

#include <iostream>using namespace std;int n, m;
int ret1, ret2;int main()
{cin >> n >> m; n++; m++;for(int x1 = 1; x1 <= n; x1++)for(int y1 = 1; y1 <= m; y1++)for(int x2 = x1 + 1; x2 <= n; x2++)for(int y2 = y1 + 1; y2 <= m; y2++){if(y2 - y1 == x2 - x1) ret1++;else ret2++;}cout << ret1 << " " << ret2 << endl;return 0;
} 

6.总结反思:

数据范围允许暴力的话就暴力解决,能通过题目的代码都是好代码,考场上不要费时间推公式,赛后再推公式。

通过这道题重点掌握枚举所有矩形的方式。

题目六:混合牛奶 Mixing Milk

题目六:混合牛奶 Mixing Milk

1.题目来源:

USACO1.3,难度橙色,简单题。

2.题目描述:

3.题目解析:

本体容易混淆为背包问题。但实际上并不是背包问题。

背包问题在每一位奶农那里一定是全买的。

本题是一道简单的模拟题。没什么多说的。

4.算法原理:

贪心、模拟

结构体按价格排序,价格低的排前面。

优先选择单价较小的牛奶去购买。

从最便宜的开始买,买够了就 OK 了。

这个贪心策略不用证明,一看就是对的。

5.代码实现:

#include <iostream>
#include <algorithm>using namespace std;const int N = 2e6 + 10, M = 5050;int n, m;
struct node
{int p, a;
}e[M];bool cmp(node& e1, node& e2)
{return e1.p < e2.p;
}int main()
{cin >> n >> m;for(int i = 1; i <= m; i++) cin >> e[i].p >> e[i].a;sort(e + 1, e + 1 + m, cmp);int ret = 0;int sum = 0;for(int i = 1; i <= m; i++){if(sum + e[i].a <= n){sum += e[i].a;ret += e[i].p * e[i].a;}else {ret += (n - sum) * e[i].p;break;}}cout << ret << endl;return 0;} 

6.总结反思:

区别背包问题。

不要看到总量和每个物品的单价就想背包,有可能会更简单。

http://www.lryc.cn/news/623814.html

相关文章:

  • uniappx 安卓端本地打包的一些总结
  • 【位运算】查询子数组最大异或值|2693
  • CNV检测--单细胞空间vs基因组WGS/WES
  • AutoSar BSW介绍
  • 《Nursing Research》(护理 SCI)LaTeX 模板详细教程:从入门到投稿(二)
  • http工作流程
  • 数据电台询价的询价要求
  • 数据链路层(1)
  • FX10/20 (CYUSB401X)开发笔记5 固件架构
  • 基于Netty的高并发WebSocket连接管理与性能优化实践指南
  • prototype 和 _ _ proto _ _的关联
  • multiboot 规范实践分析
  • 交叉编译 手动安装 SQLite 库 移植ARM
  • Python数据分析案例82——基于机器学习的航空公司满意度分析
  • 攻防世界—unseping(反序列化)
  • pytorch线性回归
  • (一)React企业级后台(Axios/localstorage封装/动态侧边栏)
  • iSCSI服务配置全指南(含服务器与客户端)
  • JMeter(进阶篇)
  • LeetCode算法日记 - Day 13: 前缀和、二维前缀和
  • es下载、安装、部署以及集成和mysql数据同步
  • **守护进程(Daemon)** 是一种在后台运行的特殊进程
  • 为什么神经网络在长时间训练过程中会存在稠密特征图退化的问题
  • Linux中聚合链路与软件网桥配置指南
  • 深入了解linux系统—— 线程控制
  • AI 编程在老项目中的困境与改进方向
  • 【Linux | 网络】高级IO
  • 63.不同路径
  • 分治-归并-315.计算右侧小于当前元素的个数-力扣(LeetCode)
  • C++ vector的使用