笔试——Day46

文章目录

第一题

题目

AOE还是单体?

思路

贪心

剩余怪物数量 >x时,使用AOE;否则使用单体

代码

cpp 复制代码
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 2e5 + 10;
int n, x;
int arr[N];
int main()
{
    cin >> n >> x;
    for (int i = 1; i <= n; i++)
        cin >> arr[i];
    sort(arr + 1, arr + 1 + n);
    long long ret = 0;
    int index = max(0, n - x); // 处理 x 过⼤的情况
    ret += arr[index] * x;
    for (int i = index + 1; i <= n; i++)
        ret += arr[i] - arr[index];
    cout << ret << endl;
    return 0;
}

第二题

题目

kotori和n皇后


思路

统计每一个皇后能攻击的位置,若已经有两个皇后可以相互攻击,则后续结果都为True

代码

cpp 复制代码
#include <iostream>
#include <unordered_set>

using namespace std;

unordered_set<long long> row; // 标记⾏ y
unordered_set<long long> col; // 标记列 x
unordered_set<long long> dig1; // 标记主对⻆线 y - x
unordered_set<long long> dig2; // 标记副对⻆线 y + x

int main()
{
    int n; cin >> n;
    int res = 1e5;
    for(int i = 1; i <= n; i++)
    {
        int x, y; cin >> x >> y;
        if(res != 1e5) continue;
        if(row.count(y) || col.count(x) || dig1.count(y - x) || dig2.count(y + x))
        {
            res = i;
        }
        row.insert(y); col.insert(x); 
        dig1.insert(y - x); dig2.insert(y + x);
    }
    int t; cin >> t;
    while(t--)
    {
        int i;
        cin >> i;
        if(i >= res) cout << "Yes" << endl;
        else cout << "No" << endl;
    }
    
    return 0;
}

第三题

题目

NC393 取金币

思路

动态规划

  • dp[i][j] 表示[i, j] 区间⼀共能获得多少⾦币

代码

cpp 复制代码
class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param coins int整型vector
     * @return int整型
     */
    int arr[110] = { 0 };
    int dp[110][110] = { 0 };
    int getCoins(vector<int>& coins) 
    {
        // write code here
        int n = coins.size();
        arr[0] = arr[n + 1] = 1;
        for (int i = 1; i <= n; i++) arr[i] = coins[i - 1];
        for (int i = n; i >= 1; i--) 
        {
            for (int j = i; j <= n; j++) 
            {
                for (int k = i; k <= j; k++) 
                {
                    dp[i][j] = max(dp[i][j], dp[i][k - 1] + dp[k + 1][j] + arr[i - 1] * arr[k] * arr[j + 1]);
                }
            }
        }
        return dp[1][n];
    }
};
相关推荐
康实训8 分钟前
老年人能力评估实训室核心实训环节解析
人工智能·算法·实训室·实训室建设
蹊黎3 小时前
C++中vector类的部分简单实现
开发语言·c++·visual studio
强哥聊算力6 小时前
《算力江湖·英伟达传奇》第七集:ChatGPT出现前夜,英伟达发生了什么?
服务器·人工智能·算法·ai·chatgpt·gpu算力
Navigator_Z9 小时前
LeetCode //C - 1289. Minimum Falling Path Sum II
c语言·算法·leetcode
CCblandy9 小时前
令牌桶在 0.9 倍负载超发 19%、固定窗口边界放行 20 个:四种限流算法同构实测
后端·python·算法·性能优化·架构
xier_ran10 小时前
【infra之路】AI 编译器学习笔记(六):重拾 C++——lambda 与 MLIR 中的回调
c++·笔记·学习
YangYang9YangYan11 小时前
2027供应链计划校招:数学与应用数学专业如何把预测模型讲成业务决策?
人工智能·sql·算法
jsjzsl211 小时前
递归自改进系统(RSI)的本质是自发对称破缺:智能爆炸有界—— AI研发切记盲目投入
人工智能·python·算法
程序员清风11 小时前
最短路径算法:BFS、Dijkstra 与 Floyd
java·算法·宽度优先
梦帮科技11 小时前
Kali Linux Scapy 畸形报文构造学——深度解剖非法 TCP Flags 与反常序列号
linux·爬虫·神经网络·算法·数学建模·系统架构·模拟退火算法