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

每日两题day33

如果你花时间了解我的话,你就会发现,你浪费了一点时间。

每日两题


一、基础题

题目:P1678 烦恼的高考志愿

思路:

对于每个学生,要求选择一个学校,使得分数差的绝对值最小,并将所有学生的最小分数差累加。可以先将学校分数线排序,然后对每个学生用二分查找找到最接近的学校分数线,计算最小差值并累加。

可能需要的知识:

  • 二分:学习网站:OI Wiki,b站: 蛋从几层楼往下丢才会碎?一个视频讲明白【NotOnlySuccess】

代码(c++):

时间复杂度 O(n \log m),其中 nnn 为学生人数,mmm 为学校数量。

#include <bits/stdc++.h>
using namespace std;int m, n;
vector<int> school, student;void solve() {cin >> m >> n;school.resize(m);student.resize(n);for (int i = 0; i < m; ++i) {cin >> school[i];}for (int i = 0; i < n; ++i) {cin >> student[i];}sort(school.begin(), school.end());long long ans = 0;for (int i = 0; i < n; ++i) {int idx = lower_bound(school.begin(), school.end(), student[i]) - school.begin();int diff = 0;if (idx >= m) {diff = abs(school[m - 1] - student[i]);} else if (idx == 0) {diff = abs(school[0] - student[i]);} else {diff = min(abs(school[idx] - student[i]), abs(school[idx - 1] - student[i]));}ans += diff;}cout << ans << endl;
}int main() {ios::sync_with_stdio(false);cin.tie(nullptr);solve();return 0;
}

二、提高题

题目:P1205 [USACO1.2] 方块转换 Transformations

思路:

纯纯史山大模拟,注意细节即可

代码(c++):

时间复杂度 O(n^2)

#include <bits/stdc++.h>
using namespace std;int n;
char a[15][15], b[15][15], c[15][15], d[15][15];// 90度顺时针旋转
bool rotate90() {for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)b[j][n - i + 1] = a[i][j];for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)if (b[i][j] != c[i][j]) return false;return true;
}// 180度旋转
bool rotate180() {for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)b[n - i + 1][n - j + 1] = a[i][j];for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)if (b[i][j] != c[i][j]) return false;return true;
}// 270度旋转
bool rotate270() {for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)b[n - j + 1][i] = a[i][j];for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)if (b[i][j] != c[i][j]) return false;return true;
}// 水平翻转
bool reflect() {for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)b[i][n - j + 1] = a[i][j];for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)if (b[i][j] != c[i][j]) return false;return true;
}// 水平翻转后再旋转
bool reflectAndRotate() {reflect();// 复制翻转后的b到afor (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)a[i][j] = b[i][j];if (rotate90()) return true;for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)a[i][j] = b[i][j];if (rotate180()) return true;for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)a[i][j] = b[i][j];if (rotate270()) return true;return false;
}// 不变
bool noChange() {for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)if (a[i][j] != c[i][j]) return false;return true;
}void solve() {if (rotate90()) { cout << 1; return; }if (rotate180()) { cout << 2; return; }if (rotate270()) { cout << 3; return; }if (reflect()) { cout << 4; return; }if (reflectAndRotate()) { cout << 5; return; }if (noChange()) { cout << 6; return; }cout << 7;
}int main() {cin >> n;for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++) {cin >> a[i][j];d[i][j] = a[i][j];}for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)cin >> c[i][j];solve();return 0;
}
http://www.dtcms.com/a/569126.html

相关文章:

  • 【解决】Failed to remove partition 1 from system: 设备或资源忙
  • Android通过SQL查询trace分析进程启动线程总数量
  • 超轻量级 AI 网安工具
  • 【C++】封装红黑树实现map和set容器(详解)
  • sscanf解析
  • 中专生实习找什么工作?
  • 车辆车身颜色特征识别
  • 【JUnit实战3_28】第十七章:用 JUnit 5 实测 SpringBoot 项目
  • 摆脱局域网束缚!用 DS File+cpolar 让 NAS 文件随用随取
  • 网站制作费电力行业做的好的招投标网站
  • 百度网址大全网站大全石家庄网页设计培训班
  • 设计模式学习(十二)状态模式
  • shell-基于k8s/docker管理容器、监控模型训练所消耗的最大CPU与最大内存脚本
  • Maven打包时指定输出路径、以时间戳命名包名和路径名,结合IDEA以指令脚本方式动态配置输出目录
  • PortSwigger
  • Doxygen入门指南:从注释到自动文档
  • Docker 部署 Elasticsearch 8.12 + Kibana + Nginx 负载均衡
  • yolo 训练 动态改变类别
  • SQL大表关联优化全攻略
  • 第五章:构建用户界面(UMG) - 游戏内HUD
  • CSS 雪碧图和 SVG 雪碧图的原理和区别
  • 网站底部代码特效邢台网红隧道
  • 网站降权表现营销型公司网站有哪些
  • 评估指标+数据不匹配+贝叶斯最优误差(分析方差和偏差)+迁移学习+多任务学习+端到端深度学习
  • 外国食品优秀设计网站做网站电话销售
  • 构建下一代法律智能助手:需求分析、资源整合与系统设计
  • Oracle AWR案例分析:精准定位SQL执行计划切换的时间点
  • 2025年7月一区SCI优化算法-Logistic-Gauss Circle optimizer-附Matlab免费代码
  • abpVnext 获取token报错,配置文件从sqlerver切换到oracle,再切换回来sqlerver无法获取token
  • 成都哪里有做网站的公司wordpress在本地搭建