2024黑龙江CCPC

2024黑龙江省赛

B. String

  • 思路:栈模拟
  • 代码:
/*
* @Author: 	Hfuubigstrength
* @email:	2854614012@qq.com
* @Date:   2024-05-28 23:32:45
*/
#include <bits/stdc++.h>
//#define int long long
#define PII pair<int,int>
#define LL long long
#define fi first
#define se second
#define debug(a) cout<<#a<<"="<<a<<endl;
#define all(x) (x).begin(),(x).end()
#define pb push_back
#define sz(x) (int)x.size()
using namespace std;string s;
signed main(){ios::sync_with_stdio(false);cin.tie(0);cin >> s;stack<char>stk;for(auto it : s){stk.push(it);if(stk.size() >= 3){char a = stk.top(); stk.pop();char b = stk.top(); stk.pop();char c = stk.top(); stk.pop();if(!(a == b && b == c)){stk.push(c);stk.push(b);stk.push(a);}}}string ans;while(stk.size()){ans += stk.top();stk.pop();}reverse(all(ans));if(!ans.size()) cout << "NAN";else cout << ans;return 0;
}

D. Card Game

  • 思路:贪心,把A从大到小排序,把B不为-1的从小到大排序,按顺序出牌,这种方法最优
  • 代码:
/*
* @Author: 	Hfuubigstrength
* @email:	2854614012@qq.com
* @Date:   2024-05-28 23:42:10
*/
#include <bits/stdc++.h>
// #define int long long
#define PII pair<int,int>
#define LL long long
#define fi first
#define se second
#define debug(a) cout<<#a<<"="<<a<<endl;
#define all(x) (x).begin(),(x).end()
#define pb push_back
#define sz(x) (int)x.size()
using namespace std;const int N = 100010;
int a[N], b[N], ah, bh, n;void solve(){cin >> n >> ah >> bh;for(int i = 1; i <= n; i ++ ) cin >> a[i];vector<int>bb;int cntb = 0;for(int i = 1; i <= n; i ++ ){cin >> b[i];if(b[i] != -1) bb.pb(b[i]);else cntb ++;} sort(all(bb));while(cntb -- ){bb.pb(-1);}sort(a + 1, a + 1 + n, greater<int>());for(int i = 1; i <= n; i ++ ){if(bb[i - 1] >= 0 && a[i] != -1) ah -= bb[i - 1];if(a[i] >= 0 && bb[i - 1] != -1) bh -= a[i];if(ah > 0 && bh <= 0){cout << "yes\n";return;}if(ah <= 0){cout << "no\n";return;}}cout << "no\n";
}signed main(){ios::sync_with_stdio(false);cin.tie(0);int tt = 1;cin >> tt;while(tt -- ){solve();}return 0;
}

F. Photography

  • 思路 :先预处理每一个点最大的三个邻接点,存下标。然后暴力枚举每两条边,如果能形成一条链,就从链的两端进行拓展出最大的那个点,这是处理长度大于3的情况。还要注意考虑长度为1, 2的情况。这题有孤点。
/*
* @Author: 	Hfuubigstrength
* @email:	2854614012@qq.com
* @Date:   2024-05-29 03:30:40
*/
#include <bits/stdc++.h>
//#define int long long
#define PII pair<int,int>
#define LL long long
#define fi first
#define se second
#define debug(a) cout<<#a<<"="<<a<<endl;
#define all(x) (x).begin(),(x).end()
#define pb push_back
#define sz(x) (int)x.size()
using namespace std;const int N = 10010;
int a[N], big[N][3];
int n, m, ans, now;
vector<PII>q[N];
vector<PII>edges;	int work(int same1, int same2, int diff1, int diff2){int four = -1;int now = a[same1] + a[diff1] + a[diff2];bool f = 1;if(big[diff1][0] == same1 || big[diff1][0] == diff2 || big[diff1][0] == -1){if(big[diff1][1] == same1 || big[diff1][1] == diff2 || big[diff1][1] == -1){if(big[diff1][2] == -1 || big[diff1][2] == diff2 || big[diff1][2] == same1){f = 0;}else now += a[big[diff1][2]], four = big[diff1][2];}else now += a[big[diff1][1]], four = big[diff1][1];}else now += a[big[diff1][0]], four = big[diff1][0];if(big[diff2][0] == same1 || big[diff2][0] == diff1 || big[diff2][0] == four || big[diff2][0] == -1){if(big[diff2][1] == same1 || big[diff2][1] == diff1 || big[diff2][1] == four || big[diff2][1] == -1){if(big[diff2][2] == same1 || big[diff2][2] == diff1 || big[diff2][2] == four || big[diff2][2] == -1){f = 0;}else now += a[big[diff2][2]];}else now += a[big[diff2][1]];}else now += a[big[diff2][0]];return now;
}signed main(){ios::sync_with_stdio(false);cin.tie(0);cin >> n >> m;for(int i = 1; i <= n; i ++ ){cin >> a[i];for(int j = 0; j <= 2; j ++ ) big[i][j] = -1;}for(int i = 1; i <= m; i ++ ){int x, y; cin >> x >> y;q[x].pb({a[y], y});q[y].pb({a[x], x});edges.pb({x, y});if(x != y) ans = max(ans, a[x] + a[y]);}for(int i = 1; i <= n; i ++ ) ans = max(ans, a[i]);for(int i = 1; i <= n; i ++ ){sort(all(q[i]));int len = q[i].size();if(len >= 1) big[i][0] = q[i][len - 1].se;if(len >= 2) big[i][1] = q[i][len - 2].se;if(len >= 3) big[i][2] = q[i][len - 3].se;}for(int i = 0; i < m; i ++ ){for(int j = 0; j < m; j ++ ){if(i == j) continue;int x = edges[i].fi, y = edges[i].se, xx = edges[j].fi, yy = edges[j].se;if(x == xx) ans = max(ans, work(x, xx, y, yy));if(x == y) ans = max(ans, work(x, y, xx, yy));if(y == xx) ans = max(ans, work(y, xx, x, yy));if(y == yy) ans = max(ans, work(y, yy, x, xx));}}cout << ans << endl;return 0;
}

I. This is an easy problem

  • 思路:模拟
  • 代码
/*
* @Author: 	Hfuubigstrength
* @email:	2854614012@qq.com
* @Date:   2024-05-28 23:26:33
*/
#include <bits/stdc++.h>
//#define int long long
#define PII pair<int,int>
#define LL long long
#define fi first
#define se second
#define debug(a) cout<<#a<<"="<<a<<endl;
#define all(x) (x).begin(),(x).end()
#define pb push_back
#define sz(x) (int)x.size()
using namespace std;int n;signed main(){ios::sync_with_stdio(false);cin.tie(0);cin >> n;int cnt = 0;while(n){cnt += n % 2;n /= 2;}cout << cnt;return 0;
}

J. Trade

  • 思路:dp, d p [ i ] [ j ] dp[i][j] dp[i][j]表示,走到第 i , j i, j i,j的路径上的 ∑ b [ i ] [ j ] \sum{b[i][j]} b[i][j],转移方式类似摘花生那题并要结合条件判断当前点是否是利润非负。最后看最后一行或者最后一列有没有小于无穷大的数即可。
  • 代码
/*
* @Author: 	Hfuubigstrength
* @email:	2854614012@qq.com
* @Date:   2024-05-29 00:46:32
*/
#include <bits/stdc++.h>
//#define int long long
#define PII pair<int,int>
#define LL long long
#define fi first
#define se second
#define debug(a) cout<<#a<<"="<<a<<endl;
#define all(x) (x).begin(),(x).end()
#define pb push_back
#define sz(x) (int)x.size()
using namespace std;const int N = 1010;
LL a[N][N], b[N][N], dp[N][N];
int n, m;signed main(){ios::sync_with_stdio(false);cin.tie(0);cin >> n >> m;for(int i = 1; i <= n; i ++ ){for(int j = 1; j <= m; j ++ ){cin >> a[i][j];dp[i][j] = 9e18;}}for(int i = 1; i <= n; i ++ ){for(int j = 1; j <= m; j ++ ){cin >> b[i][j];}}dp[1][1] = b[1][1];for(int i = 1; i <= n; i ++ ){for(int j = 1; j <= n; j ++ ){if(i == 1 && j == 1) continue;if(i >= 2) dp[i][j] = min(dp[i - 1][j], dp[i][j]);if(j >= 2) dp[i][j] = min(dp[i][j - 1], dp[i][j]);dp[i][j] += b[i][j];if(a[i][j] - a[1][1] - dp[i][j] < 0) dp[i][j] = 9e18;}}bool f = 0;for(int i = 1; i <= n; i ++ ){if(dp[i][m] < 9e18) f = 1;}for(int i = 1; i <= m; i ++ ){if(dp[n][i] < 9e18) f = 1;}if(f) cout << "YES";else cout << "NO";return 0;
}

K. Puzzle

  • 思路:纯模拟
  • 代码:
#include <bits/stdc++.h>
//#define int long long
#define PII pair<int,int>
#define LL long long
#define fi first
#define se second
#define debug(a) cout<<#a<<"="<<a<<endl;
#define all(x) (x).begin(),(x).end()
#define pb push_back
#define sz(x) (int)x.size()
using namespace std;int a[10];
set<int>s;
signed main(){ios::sync_with_stdio(false);cin.tie(0);cin >> a[1] >> a[2] >> a[3] >> a[4];sort(a + 1, a + 5);set<int>s;do{for(int i = 1; i <= 3; i ++ ){for(int j = 1; j <= 3; j ++ ){for(int k = 1; k <= 3; k ++ ){if(i == 1 && j == 1 && k == 1) s.insert(a[1] + a[2] +a[3] + a[4]);if(i == 1 && j == 1 && k == 2) s.insert(a[1] + a[2] +a[3] - a[4]);if(i == 1 && j == 1 && k == 3) s.insert(a[1] + a[2] +a[3] * a[4]);if(i == 1 && j == 2 && k == 1) s.insert(a[1] + a[2] -a[3] + a[4]);if(i == 1 && j == 2 && k == 2) s.insert(a[1] + a[2] -a[3] - a[4]);if(i == 1 && j == 2 && k == 3) s.insert(a[1] + a[2] -a[3] * a[4]);if(i == 1 && j == 3 && k == 1) s.insert(a[1] + a[2] *a[3] + a[4]);if(i == 1 && j == 3 && k == 2) s.insert(a[1] + a[2] *a[3] - a[4]);if(i == 1 && j == 3 && k == 3) s.insert(a[1] + a[2] *a[3] * a[4]);if(i == 2 && j == 1 && k == 1) s.insert(a[1] - a[2] +a[3] + a[4]);if(i == 2 && j == 1 && k == 2) s.insert(a[1] - a[2] +a[3] - a[4]);if(i == 2 && j == 1 && k == 3) s.insert(a[1] - a[2] +a[3] * a[4]);if(i == 2 && j == 2 && k == 1) s.insert(a[1] - a[2] -a[3] + a[4]);if(i == 2 && j == 2 && k == 2) s.insert(a[1] - a[2] -a[3] - a[4]);if(i == 2 && j == 2 && k == 3) s.insert(a[1] - a[2] -a[3] * a[4]);if(i == 2 && j == 3 && k == 1) s.insert(a[1] - a[2] *a[3] + a[4]);if(i == 2 && j == 3 && k == 2) s.insert(a[1] - a[2] *a[3] - a[4]);if(i == 2 && j == 3 && k == 3) s.insert(a[1] - a[2] *a[3] * a[4]);if(i == 3 && j == 1 && k == 1) s.insert(a[1] * a[2] +a[3] + a[4]);if(i == 3 && j == 1 && k == 2) s.insert(a[1] * a[2] +a[3] - a[4]);if(i == 3 && j == 1 && k == 3) s.insert(a[1] * a[2] +a[3] * a[4]);if(i == 3 && j == 2 && k == 1) s.insert(a[1] * a[2] -a[3] + a[4]);if(i == 3 && j == 2 && k == 2) s.insert(a[1] * a[2] -a[3] - a[4]);if(i == 3 && j == 2 && k == 3) s.insert(a[1] * a[2] -a[3] * a[4]);if(i == 3 && j == 3 && k == 1) s.insert(a[1] * a[2] *a[3] + a[4]);if(i == 3 && j == 3 && k == 2) s.insert(a[1] * a[2] *a[3] - a[4]);if(i == 3 && j == 3 && k == 3) s.insert(a[1] * a[2] *a[3] * a[4]);}}}}while(next_permutation(a + 1,a + 1 + 4));cout << sz(s);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/19193.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习:手撕 RNN(2)-RNN 的常见模型架构

本文首次发表于知乎&#xff0c;欢迎关注作者。 上一篇文章我们介绍了一个基本的 RNN 模块。有了 这个 RNN 模块后&#xff0c;就像搭积木一样&#xff0c;以 RNN 为基本单元&#xff0c;根据不同的任务或者需求&#xff0c;可以构建不同的模型架构。本节介绍的所有结构&#…

JS移动端设置mouseover,mouseleave有效么

在移动设备的浏览器环境中&#xff0c;mouseover 和 mouseleave 事件的行为与桌面浏览器有所不同&#xff0c;主要是因为移动设备的交互方式主要是基于触摸的&#xff0c;而不是基于鼠标的。 在移动设备上&#xff0c;当用户触摸屏幕时&#xff0c;通常会触发 touchstart 事件…

mysql查询的时间复杂度

SELECT * FROM customers WHERE age > 25; 首先是普通的select&#xff0c;如果没有建立任何的索引的话&#xff0c;假设数据量为N&#xff0c;那么时间复杂度为O(N) 如果对age添加了索引&#xff0c;那么复杂度为O(log n) 假设使用了in操作&#xff0c;总共查找M种&…

Codeforces Round 947 (Div. 1 + Div. 2) D. Paint the Tree 题解 DFS

Paint the Tree 题目描述 378QAQ has a tree with n n n vertices. Initially, all vertices are white. There are two chess pieces called P A P_A PA​ and P B P_B PB​ on the tree. P A P_A PA​ and P B P_B PB​ are initially located on vertices a a a an…

Spring Boot与MongoDB集成指南

1. 引言 在当今快速发展的软件开发领域&#xff0c;选择合适的技术栈对于构建高效、可扩展的应用程序至关重要。随着微服务架构和云原生应用的兴起&#xff0c;开发人员需要更灵活、更快速的解决方案来满足不断变化的业务需求。Spring Boot和MongoDB的结合正是这一需求的完美答…

运维开发.MySQL.范式与反范式化

运维开发 MySQL.三大范式 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/artic…

jest测试

文章目录 测试testexpecttoThrow asyncPromiseAsync/Await 作用域一次性设置 beforeAll and afterAll重复设置 beforeEach 和 afterEachdescribe 块 mockcli配置覆盖率测试报告 测试 test test(name, () > {function} }expect () > {expect(期望value).toBe(匹配value…

python海龟绘图(你的作业说不定就在这里)

三角形 from turtle import * for i in range(3):forward(100)left(120)基本绘图​​​​​ 让海龟前进 100 步: forward(100)你应该会看到&#xff08;最可能的情况&#xff0c;是在你的显示器的一个新窗口中&#xff09;海龟画出一条线段&#xff0c;方向朝东。 改变海龟的…

spdlog日志库源码:线程池thread_pool

线程池 线程池本质上一组事先创建的子线程&#xff0c;用于并发完成特定任务的机制&#xff0c;避免运行过程中频繁创建、销毁线程&#xff0c;从而降低程序运行效率。通常&#xff0c;线程池主要涉及到以下几个方面问题&#xff1a; 如何创建线程池&#xff1f;线程池如何执…

Ubuntu22.04之解决:登录计算机的密码与登录密钥环里的密码不再匹配(二百三十四)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

微信网页版登录插件v1.1.1

说到如今的微信客户端&#xff0c;大家肯定会有很多提不完的意见或者建议。比如这几年体积越来越大&#xff0c;如果使用频率比较高&#xff0c;那占用空间就更离谱了。系统迷见过很多人电脑C盘空间爆满&#xff0c;都是由于微信PC版造成的。 而且&#xff0c;它还加了很多乱七…

15、Spring系统-AOP

ProxyFactory选择cglib或jdk动态代理原理 ProxyFactory在生成代理对象之前需要决定到底是使用JDK动态代理还是CGLIB技术&#xff1a; 代理对象创建过程 JdkDynamicAopProxy 在构造JdkDynamicAopProxy对象时&#xff0c;会先拿到被代理对象自己所实现的接口&#xff0c;并且…

VSCODE终端输出中文乱码 菱形问号?

问题现象 VSCODE终端输出中文乱码 菱形问号&#xff1f; 解决方法 方法一 设置系统环境变量 变量名&#xff1a;PYTHONIOENCODING 值&#xff1a;utf8 方法二 安装插件Code Runner插件在设置中搜索 code-runner.executorMap&#xff0c;再点击在setting.json中编辑&#x…

达梦数据库

达梦数据库 达梦Docker部署 达梦Docker部署 1、下载链接 https://pan.baidu.com/s/1RI3Lg0ppRhCgUsThjWV6zQ?pwdjc62 2、docker启动命令 docker run -d -p 5236:5236 \ --restartalways \ --name dm8 \ -e LD_LIBRARY_PATH/app/dm8/bin \ -e LENGTH_IN_CHAR1 \ -e CASE_SENS…

powershell 配合aria2实现简单的图片爬取

powershell 配合aria2实现简单的图片爬取 01 前言 现如今&#xff0c;提到爬虫&#xff0c;令人不得不提到Python&#xff0c;确实简单&#xff0c;也强大&#xff0c;到处都可以找到教程。故而今天换换口味&#xff0c;用powershell来实现&#xff0c;配合aria2的强大下载功…

目标检测 | R-CNN、Fast R-CNN与Faster R-CNN理论讲解

☀️教程&#xff1a;霹雳吧啦Wz ☀️链接&#xff1a;https://www.bilibili.com/video/BV1af4y1m7iL?p1&vd_sourcec7e390079ff3e10b79e23fb333bea49d 一、R-CNN R-CNN&#xff08;Region with CNN feature&#xff09;是由Ross Girshick在2014年提出的&#xff0c;在PAS…

leetcode 684.冗余连接

思路&#xff1a;并查集 这里的图比较像一种特殊的数据结构&#xff0c;其实也是图论的一种东西&#xff0c;就是基环树&#xff0c;但是这里并不是有向图&#xff0c;而是无向图&#xff0c;所以并不能用那种剪枝操作然后找基环。 看到连通量&#xff0c;我们应该能想到两种…

Qt 配置Eigen矩阵库 - 并简单测试

Qt 配置Eigen矩阵库 - 并简单测试 引言一、在Qt中配置Eigen二、低通Demo源码三、参考链接以及其他 引言 Eigen是一个开源的C模板库&#xff0c;提供了线性代数和矩阵运算的功能。它被设计为一个高性能、可扩展和易用的库&#xff0c;可以用于科学计算、机器学习和计算机图形学等…

HCIA-HarmonyOS Device Developer 课程大纲

一&#xff1a;OpenHarmony 介绍 - &#xff08; 3 课时&#xff09; - OpenHarmony 简介&#xff1b;OpenHarmony 设计理念&#xff1b;OpenHarmony 设计理念概述&#xff1b; - OpenHarmony 试图解决的问题&#xff1b;应用生态割裂问题&#xff1b;用户数据割裂问题&#…

服务器感染了. rmallox勒索病毒,如何确保数据文件完整恢复?

导言&#xff1a; 近年来&#xff0c;随着信息技术的飞速发展&#xff0c;网络安全问题日益凸显。其中&#xff0c;勒索病毒作为一种严重的网络威胁&#xff0c;对个人和企业数据造成了巨大的威胁。本文将重点介绍.rmallox勒索病毒的特点、传播途径以及应对策略&#xff0c;旨…