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

笔试——Day38

文章目录

  • 第一题
    • 题目
    • 思路
    • 代码
  • 第二题
    • 题目:
    • 思路
    • 代码
  • 第三题
    • 题目:
    • 思路
    • 代码

第一题

题目

天使果冻

在这里插入图片描述

思路

模拟: 利用两个数组统计前i个位置的最大值和次大值,遍历数组并更新结果

代码

#include <iostream>
#include <vector>using namespace std;int main()
{int n; cin >> n;vector<int> a(n + 1);for(int i = 1; i <= n; i++) cin >> a[i];vector<int> f(n + 1); // 前 i 个的最大值;vector<int> g(n + 1); // 前 i 个的最小值;f[1] = a[1];for(int i = 2; i <= n ;i++){f[i] = max(f[i - 1], a[i]);if(a[i] > f[i - 1]) // 大于前一个位置的最大值{g[i] = f[i - 1];           }else if(a[i] > g[i - 1]) // 大于前一个位置的次大值{g[i] = a[i];}else{g[i] = g[i - 1];}}int q; cin >> q;while(q--){int x; cin >> x;cout << g[x] << endl;}return 0;
}

第二题

题目:

dd爱旋转

在这里插入图片描述

思路

模拟

  • 顺指针180°等价于对矩阵进行行对称以及列对称
  • 行镜像就是行对称;
  • 统计x的个数,判断行对称以及列对称的次数,每两次会变回原状;所以可以优化减少变化次数;

代码

#include <iostream>
#include <vector>using namespace std;void Row(vector<vector<int>>& a) // 行
{int n = a.size();for(int i = 0; i < n / 2; i++){for(int j = 0; j < n; j++){swap(a[i][j], a[n - 1 - i][j]);}}
}void Col(vector<vector<int>>& a) // 列
{int n = a.size();for(int j = 0; j < n / 2; j++){for(int i = 0; i < n; i++){swap(a[i][j], a[i][n - 1 - j]);}}
}int main()
{int n; cin >> n;vector<vector<int>> a(n, vector<int>(n));for(int i = 0; i < n; i++){for(int j = 0; j < n; j++){cin >> a[i][j];}}int q, x;cin >> q;int row = 0, col = 0;while(q--){int x = 0;cin >> x;if(x == 1) row++, col++;else row++;}row %= 2, col %= 2;if(row) Row(a);if(col) Col(a);for(int i = 0; i < n; i++){for(int j = 0; j < n; j++){cout << a[i][j] << " ";}cout << endl;}return 0;
}

第三题

题目:

小红取数

在这里插入图片描述

思路

01背包

  • 状态表示:dp[i][j]表示:从前i个数中选总和%k = j时最大的和;
  • 状态转移方程:
    • 不选i位置,dp[i - 1][j]
    • i位置,dp[i - 1][(j - a[i] % k + k) % k] + a[i]

代码

#include <iostream>
#include <cstring>
using namespace std;
typedef long long LL;
const int N = 1010;
int n, k;
LL a[N];
LL dp[N][N];
int main()
{cin >> n >> k;for (int i = 1; i <= n; i++)cin >> a[i];memset(dp, -0x3f, sizeof dp);dp[0][0] = 0;for (int i = 1; i <= n; i++){for (int j = 0; j < k; j++){dp[i][j] = max(dp[i - 1][j], dp[i - 1][(j - a[i] % k + k) % k] + a[i]);}}if (dp[n][0] <= 0)cout << -1 << endl;elsecout << dp[n][0] << endl;return 0;
}
http://www.dtcms.com/a/330795.html

相关文章:

  • 根据图片远程地址复制图片内容,可以在富文本、word等文本里粘贴
  • word——删除最后一页空白页
  • Exif.js获取手机拍摄照片的经纬度
  • 【网络】TCP/UDP总结复盘
  • Unity人形角色IK优化指南
  • AI搜索优化专家孟庆涛:以技术温度重构“人机信息对话”新范式
  • 手机实时提取SIM卡打电话的信令声音-当前现状与思考
  • CICD-DevOps进阶-2
  • 提升工作效率的利器:GitHub Actions Checkout V5
  • 多种适用于 MCU 固件的 OTA 升级方案
  • Qt基本控件
  • 飞算JavaAI金融风控场景实践:从实时监测到智能决策的全链路安全防护
  • 西门子TIA-FOR循环多路PID控制器(PID_Compact)
  • VirtualBox虚拟机Ubuntu18.04安装hdl_localization保姆级教程
  • 【自动化运维神器Ansible】template模块深度解析:动态配置文件生成的艺术
  • RxJava Android 创建操作符实战:从数据源到Observable
  • 十一,算法-快速排序
  • 大带宽服务器具体是指什么?
  • 十分钟学会一个算法 —— 快速排序
  • 【03】VMware安装麒麟操作系统kylin10sp3
  • Docker运行python项目:使用Docker成功启动FastAPI应用
  • vue3+leaflet案例:告警系统GIS一张图(附源码下载)
  • Mybatis实现页面增删改查
  • 服务器的定义-哈尔滨云前沿
  • [机器学习]07-基于多层感知机的鸢尾花数据集分类
  • Effective Java笔记:要在公有类而非公有域中使用访问方法
  • 解决Maven编译时JAVA_HOME配置错误问题:从报错到根治的完整方案
  • 自动驾驶与人形机器人的技术分水岭
  • springboot博客实战笔记02
  • React.memo、useMemo 和 React.PureComponent的区别