首页 > 其他分享 >2024.12.9 周一

2024.12.9 周一

时间:2024-12-10 11:20:46浏览次数:3  
标签:2024.12 cout vis int nx ny 周一 define

2024.12.9 周一


Q1. 1000

问是否可以用给定的n^2个数构造出已定n*n的矩阵。

Q2. 1200

给定2行n列数组,从(1,1)走到(2,n),只能向右/下走。你可以任意交换2列,问经过元素的和的最大值。

Q3. 1200

你有任意张面值为1,3,6,10,15的纸币。给定n,问凑出n元需要最小的纸币张数。

Q4. 1400

给定字符迷宫,问作为起点无法出迷宫的位置数。

------------------------独自思考分割线------------------------

  • 被Q3卡了。一个半小时结束,Q1+Q2半小时,Q3半小时,速度还可以。深搜比广搜确实好写...

A1. 2点

1.数据结构map维护个数,一一判断。

2.另解:生成矩阵判等。

A2. 2点

1.2行注定有一个拐点。任意交换列代表可以任意排列。

2.分析本质:任意选择n-1个max(a[i][0],a[i][1]),加上拐点的另一半,显然未被选择的最大值最优。

A3.

1. 好题:思维+暴力 / dp+贪心

A4. 2点

1.反向搜索必出迷宫的块。

2.搜索剩下块:对每个块数量>1就可以做到无法出迷宫。

------------------------代码分割线------------------------

A1.

#include <bits/stdc++.h>
#define int long long //
#define endl '\n'     // 交互/调试 关
using namespace std;
#define bug(BUG) cout << "bug:# " << (BUG) << endl
#define bug2(BUG1, BUG2) cout << "bug:# " << (BUG1) << " " << (BUG2) << endl
#define bug3(BUG1, BUG2, BUG3) cout << "bug:# " << (BUG1) << ' ' << (BUG2) << ' ' << (BUG3) << endl
void _();
signed main()
{
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    cout << fixed << setprecision(6);
    int T = 1;
    cin >> T;
    while (T--)
        _();
    return 0;
}

void _()
{
    int n, c, d;
    cin >> n >> c >> d;
    map<int, int> has;
    for (int i = 0; i < n * n; i++)
    {
        int x;
        cin >> x;
        has[x]++;
    }
    int minw = (*has.begin()).first;
    int ans = 1;
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
        {
            if (!has[minw + i * c + j * d])
                ans = 0;
            else
                has[minw + i * c + j * d]--;
        }
    cout << (ans ? "YES" : "NO") << endl;
}

A2.

#include <bits/stdc++.h>
#define int long long //
#define endl '\n'     // 交互/调试 关
using namespace std;
#define bug(BUG) cout << "bug:# " << (BUG) << endl
#define bug2(BUG1, BUG2) cout << "bug:# " << (BUG1) << " " << (BUG2) << endl
#define bug3(BUG1, BUG2, BUG3) cout << "bug:# " << (BUG1) << ' ' << (BUG2) << ' ' << (BUG3) << endl
void _();
signed main()
{
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    cout << fixed << setprecision(6);
    int T = 1;
    cin >> T;
    while (T--)
        _();
    return 0;
}

void _()
{
    int m;
    cin >> m;
    vector<pair<int, int>> vec(m);
    for (auto &[x, y] : vec)
        cin >> x;
    for (auto &[x, y] : vec)
        cin >> y;
    int sum = 0, maxw = -1e12;
    for (auto [x, y] : vec)
    {
        maxw = max(maxw, min(x, y));
        sum += max(x, y);
    }
    cout << sum + maxw << endl;
}

A3.

#include <bits/stdc++.h>
#define int long long //
#define endl '\n'     // 交互/调试 关
using namespace std;
#define bug(BUG) cout << "bug:# " << (BUG) << endl
#define bug2(BUG1, BUG2) cout << "bug:# " << (BUG1) << " " << (BUG2) << endl
#define bug3(BUG1, BUG2, BUG3) cout << "bug:# " << (BUG1) << ' ' << (BUG2) << ' ' << (BUG3) << endl
void _();
signed main()
{
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    cout << fixed << setprecision(6);
    int T = 1;
    cin >> T;
    while (T--)
        _();
    return 0;
}

void _()
{
    int n;
    cin >> n;
    int res = 1e12;
    vector<int> vec{15, 10, 6, 3, 1};
    int cnt[] = {0, 2, 4, 1, 2};
    for (int i = 0; i <= 2; i++)
        for (int j = 0; j <= 4; j++)
            for (int k = 0; k <= 1; k++)
                for (int h = 0; h <= 2; h++)
                {
                    int x = n - (i * 10 + j * 6 + k * 3 + h);
                    if (x >= 0 && x % 15 == 0)
                        res = min(res, i + j + k + h + x / 15);
                }
    cout << res << endl;
}
// void _()
// {
//     int n;
//     cin >> n;
//     int res = 1e12;
//     int a[] = {1, 3, 6, 10, 15}, vis[5] = {};
//     vector<int> vec{15, 10, 6, 3, 1};
//     int vnt = 0;
//     auto get = [&]()
//     {
//         vnt++;
//         int t = 0, tn = n;
//         for (auto v : vec)
//         {
//             t += tn / v;
//             tn %= v;
//         }
//         res = min(res, t);
//         for (auto v : vec)
//             cout << v << ' ';
//         cout << endl;
//         bug(t);
//     };
//     function<void(int)> dfs = [&](int k)
//     {
//         if (k == 5)
//         {
//             get();
//             return;
//         }
//         for (int i = 0; i < 5; i++)
//             if (!vis[i])
//             {
//                 vis[i] = 1;
//                 vec[k] = a[i];
//                 dfs(k + 1);
//                 vis[i] = 0;
//             }
//     };
//     dfs(0);
//     cout << res << endl;
//     // bug(vnt);
// }

A4.

#include <bits/stdc++.h>
#define int long long //
#define endl '\n'     // 交互/调试 关
using namespace std;
#define bug(BUG) cout << "bug:# " << (BUG) << endl
#define bug2(BUG1, BUG2) cout << "bug:# " << (BUG1) << " " << (BUG2) << endl
#define bug3(BUG1, BUG2, BUG3) cout << "bug:# " << (BUG1) << ' ' << (BUG2) << ' ' << (BUG3) << endl
void _();
signed main()
{
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    cout << fixed << setprecision(6);
    int T = 1;
    cin >> T;
    while (T--)
        _();
    return 0;
}

void _()
{
    int n, m;
    cin >> n >> m;
    vector<string> s(n + 2);
    for (int i = 1; i <= n; i++)
    {
        cin >> s[i];
        s[i] = " " + s[i] + " ";
    }
    vector<vector<int>> vis(n + 2, vector<int>(m + 2));
    queue<pair<int, int>> q;
    vis[0][0] = 1;
    int dx[] = {1, -1, 0, 0}, dy[] = {0, 0, 1, -1};
    q.push({0, 0});
    while (q.size())
    {
        auto [x, y] = q.front();
        // bug2(x, y);
        q.pop();
        for (int i = 0; i < 4; i++)
        {
            int nx = x + dx[i], ny = y + dy[i];
            if (nx < 0 || nx > n + 1 || ny < 0 || ny > m + 1 || vis[nx][ny])
                continue;
            if (nx == 0 || nx == n + 1 || ny == 0 || ny == m + 1)
            {
                q.push({nx, ny});
                // bug2(nx, ny);
                vis[nx][ny] = 1;
            }
            else
            {
                if (i == 0)
                {
                    if (s[x + 1][y] - 'U')
                        continue;
                }
                else if (i == 1)
                {
                    if (s[x - 1][y] - 'D')
                        continue;
                }
                else if (i == 2)
                {
                    if (s[x][y + 1] - 'L')
                        continue;
                }
                else if (s[x][y - 1] - 'R')
                    continue;
                // bug(s[nx][ny]);
                q.push({nx, ny});
                vis[nx][ny] = 1;
            }
        }
    }

    int res = 0, cnt = 0;
    function<void(int, int)> dfs = [&](int i, int j)
    {
        if (vis[i][j])
            return;
        vis[i][j] = 1;
        cnt++;
        for (int k = 0; k < 4; k++)
            dfs(i + dx[k], j + dy[k]);
    };
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= m; j++)
            if (!vis[i][j])
            {
                cnt = 0;
                // bug2(i, j);
                dfs(i, j);
                res += cnt == 1 ? 0 : cnt;
            }
    cout << res << endl;
}

标签:2024.12,cout,vis,int,nx,ny,周一,define
From: https://www.cnblogs.com/jkkk/p/18596957

相关文章

  • Diary - 2024.12.09
    周五根本不敢查分,都是看云斗榜的时候顺带看到的分数。顺带看到了自己的排名,感觉释怀了也没救了。我的2log跑不过,我破防了我破防了我破防了我破防了我破防了。问题不大,不是最后一年,我还有得救(确信)。更重要的应该是放平心态继续前进。但是我现在被whk拿下了搞不了oi,罢了罢......
  • 2024.12.10讲座
    总体概览主题:嵌入式领域#非阻塞式编程属性:经验分享、进阶教程##之前单片机赛道的同学,学的大部分知识都是对于外设怎么操作、通信协议如何使用。这一讲的内容将让我们的主程序逻辑更加清晰、代码运行更加流畅功能:让程序更高效、清晰、严谨内容阻塞?阻塞,执行某段程序时,CPU......
  • 2024.12.9~2024.12.14
    2024.12.9早上有点小困,多睡了半个小时,上午把矩阵快速幂写完了,感觉效率有点小低然后中午去外面屯了一点食物下午开始写CDQ分治,迅速的切掉了一道题,然后下一道题就开始了漫长的调题,然后一直调调不过,情绪有点崩溃了晚上准备出去打乒乓球放松一下,结果一直赢,把一直霸台的老师都给打......
  • 2024.12.8 周日
    2024.12.8周日Q1.1100给定n,k。构造长度为n的数组,元素之和为k,且按位或和的值在二进制下1最多。Q2.1300给定两行01串,从(1,1)走到(2,n),每次只能向右或向下走。问路径经过的最小字符串以及方案数。Q3.1200将一个数组分为连续的k>1段,使每段的MEX(未出现的最小自然数)相等。......
  • 2024.12.9 小bug
    2024.12.9小bugvue的script后面如果不加setup会导致vue组件绑定不上加上就好了<template><divstyle="height:100px"></div><formaction="/ai"method="post"id="aiForm">aaaa<inputv-model=&qu......
  • 2024.12.7 周六
    2024.12.7周六Q1.1000给定01字符串,n,m,k。任意操作将区间长度为k的子串字符全变为1。问保证字符串任意区间没有长度大于等于m的子串字符全为0的最少操作次数。Q2.1300有一个正n边形,给定x个关键点,在关键点两两之间任意连互相不交叉的对角线,使得整个图形被划分出的区域中......
  • CMake学习2024.12.7问AI的问题记录
    iwtbf:target_include_directories(&{PROJECT_BINARY_DIR})是什么GitHubCopilot:target_include_directories是CMake中的一个命令,用于为目标添加包含目录。&{PROJECT_BINARY_DIR}是一个变量,表示项目的二进制目录。语法如下:target_include_directories(<target>[SYSTEM......
  • 详细介绍 NVIDIA GeForce RTX 系列,各显卡配置参数(长期更新 - 2024.12)
    NVIDIAGeForceRTX系列是NVIDIA面向消费级市场的高性能GPU产品线,注重提供高性能的图形处理能力和游戏特性。主要面向游戏玩家和普通用户,同时也被广泛用于深度学习推理和训练等计算密集型任务。主要GPU产品有:50Series、40Series、30Series、20Series、10Seri......
  • Diray - 2024.12.06
    Lamanya-DRE4M1N9好听。那我缺的くるぶっこちゃん-其は万花の夢を見る谁来给我补阿。虽然我是个啥比社恐所以没打过街机音游,中二这些根本没了解过。但是还是喜欢callionet一些,我觉得这个歌,情感很饱满阿!感觉他的歌我一直都挺喜欢的。从最先arcaea的PrimevalTextu......
  • 2024.12.5 周四
    2024.12.5周四Q1.1000给定x2~xn(<=500),构造a1~an,满足i:2~n,x[i]==a[i]%a[i-1]。Q2.1200n户人家在一条线上,现在在某两户i,i+1之间/两端修建一条公路,给定一01串:0代表希望在公路左边,1则相反。要求两侧都要有至少一半人家满意。多解则:i尽量距离中间人家最近,如仍多解则选取......