首页 > 编程语言 >【蓝桥杯】1024 第 2 场算法双周赛(1~5)

【蓝桥杯】1024 第 2 场算法双周赛(1~5)

时间:2023-11-02 13:45:03浏览次数:33  
标签:1024 cout int cin 双周 蓝桥 ans i64

【蓝桥杯】1024 第 2 场算法双周赛

新生【算法赛】 - 蓝桥云课 (lanqiao.cn)

#include <iostream>
using namespace std;
int main()
{
  printf("15");
  return 0;
}

铺地板【算法赛】 - 蓝桥云课 (lanqiao.cn)

只要面积乘积是\(6\)的倍数即可,特判一下宽和高

#include <bits/stdc++.h>
#pragma GCC optimize(2)
#define debug(a) cout<<#a<<"="<<a<<'\n';

using namespace std;
using i64 = long long;

void solve() {
    
    i64 n,m;
    cin >> n >> m;
    
    if((n * m) % 6 == 0){
        if(n >= 2 && m >= 3 || n >= 3 && m >= 2){
            cout << "Yes\n";
            return ;
        }
    }

    cout << "No\n";
    
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int T;
    cin >> T;
    while (T--) {
        solve();
    }

    return 0;
}

摆玩具【算法赛】 - 蓝桥云课 (lanqiao.cn)

把高度差处理出来排个序,从前面取\((n-1)-(m-1)\)个值即可,高度差大的我们直接在那里分开就能把大的丢掉了

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n';

using namespace std;
using i64 = long long;

typedef pair<i64, i64> PII;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    i64 n, m;
    cin >> n >> m;
    vector<int> a(n), ans;
    for (auto &i : a) cin >> i;

    for (int i = 1; i < n; i ++) {
        ans.push_back(a[i] - a[i - 1]);
    }

    i64 sum = 0;
    sort(ans.begin(), ans.end());
    for (int i = 0; i < ans.size() - m + 1; i ++)
        sum += ans[i];

    cout << sum << '\n';


    return 0;
}

通关【算法赛】 - 蓝桥云课 (lanqiao.cn)

本来当时都想到用队列做了,但是脑子抽了没想起优先队列

建好树后把第一个点放进优先队列里,在闯过关卡后就把这个关卡连着的关卡放进优先队列里,这样就能保证每次闯关从最小的关卡要求开始闯关

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n';

using namespace std;
using i64 = long long;

typedef pair<i64, i64> PII;

struct Node{
	int s,k;
};

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n,p;
    cin >> n >> p;
    vector<int> g[n + 1];
    vector<Node> info(n + 1);

    for(int i = 1;i <= n;i ++){
    	int f;
    	cin >> f >> info[i].s >> info[i].k;
    	g[f].push_back(i);
    }

    i64 ans = 0;
    priority_queue<PII, vector<PII>,greater<PII>> Q;
    Q.push({info[1].k,1});
    while(Q.size() && p >= Q.top().first){
    	auto [k,id] = Q.top();
    	Q.pop();

    	ans ++;
    	p += info[id].s;
    	for(auto i : g[id]){
    		Q.push({info[i].k,i});
    	}
    }

    cout << ans << '\n';
    return 0;
}

串门【算法赛】 - 蓝桥云课 (lanqiao.cn)(树的直径)

考察树的直径,之前一直没遇到过这种题,这次算是积累经验了

要保证每个点都要访问,就应该选择一条路作为正路,这样正路上的点就只要走一次即可,而正路上其他的分支都需要走进去又退出来一共走两次,所以我们开始可以将所有的路径乘\(2\)存下来,然后去找一条最长的路径也就是树的直径作为正路,然后前者减去后者即可

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n';

using namespace std;
using i64 = long long;

typedef pair<i64, i64> PII;

vector<vector<PII>> g;
vector<i64> d;

int n, c;

i64 D = 0;
i64 dfs(int u, int fa)
{
	i64 max1 = 0, max2 = 0;
	for (auto [v, w] : g[u]) {
		if (v == fa) continue;
		i64 dis = dfs(v, u) + w;
		if (dis > max1) max2 = max1, max1 = dis;
		else if (dis > max2) max2 = dis;
	}
	
	D = max(D, max1 + max2);

	d[u] = max1;
	return d[u];
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);

	cin >> n;
	g.resize(n + 1);
	d.resize(n + 1);

	i64 ans = 0;
	for (int i = 1; i < n; i ++) {
		int x, y, w;
		cin >> x >> y >> w;
		ans += 2 * w;
		g[x].emplace_back(y, w);
		g[y].emplace_back(x, w);
	}

	dfs(1, 0);

	cout << ans - D << '\n';

	return 0;
}

标签:1024,cout,int,cin,双周,蓝桥,ans,i64
From: https://www.cnblogs.com/Kescholar/p/17805193.html

相关文章

  • 又是1024诶,这是20231024,总结事业编考试记得写名字
    最近也是感慨颇多。总之我想说或者建议:1、考试一般要写名字都会在明显的地方2、对于不常见考试,是否监考可以提醒考生在哪里写名字?(至少提醒哪些答题卡要写名字?)3、对于考后是否可以写名字,监考帮考生写名字也可以不。在老家参与了一次事业单位考试,考的公基和写作,然后最近一直在备考国......
  • 第 116 场双周赛(双指针,背包问题,线段树+lz标记)
     本题为双指针和贪心。当我们遇到奇数个0或1时,直接将下一位改变即可。classSolution{public:intminChanges(strings){intn=s.size();intres=0;intl=0,r=-1;while(r++<n-1){if(s[l]==s[r])......
  • 第 116 场双周赛
    不知道为什么今天晚上脑子里想的全是递归  说实话四道题看了都不是很有思路也不是没有思路吧而是知道怎么做但是感觉写不出来而且莫名其妙想的全是递归的解法可能是因为浏览量最高的那篇文章也是递归22:43-23:10差不多30min写了两道题 第一题(22:58AC)100094. 子数......
  • 【每日例题】蓝桥杯 C语言 凯撒加密
    凯撒加密题目题目描述给定一个单词,请使用凯撒密码将这个单词加密。凯撒密码是—种替换加密的技术,单词中的所有字母都在字母表上向后偏移3位后被替换成密文。即α变为d,b变为e,·,w变为z,Z变为a,g变为b,z变为c。输入描述输入格式:输入一行,包含一个单词,单词中只包含小写英文字母,单词中......
  • 第14届蓝桥杯--保险箱
    第14届蓝桥杯--保险箱DP从后往前循环统计状态表示f[i][j]:第i位密码数j状态,(j=0产生退位,1不进不退,2产生进位)集合:所有的方案属性:min状态计算:importjava.util.Arrays;importjava.util.Scanner;/***ClassName:Main04*Package:baidu*Desc......
  • 【洛谷 8649】 [蓝桥杯 2017 省 B] k 倍区间
    题目描述给定一个长度为 �N 的数列,�1,�2,⋯��A1​,A2​,⋯AN​,如果其中一段连续的子序列 ��,��+1,⋯��(�≤�)Ai​,Ai+1​,⋯Aj​(i≤j) 之和是 �K 的倍数,我们就称这个区间 [�,�][i,j] 是 �K 倍区间。你能求出数列中总共有多少个 �K 倍区间吗?输入格式第一行包含两个整数 �N 和 �K......
  • 【每日例题】 蓝桥杯 c++ 考勤刷卡
    考勤刷卡题目小蓝负责一个公司的考勤系统,他每天都需要根据员工刷卡的情况来确定每个员工是否到岗。当员工刷卡时,会在后台留下一条记录,包括刷卡的时间和员工编号,只要在—天中员工刷过—次卡,就认为他到岗了。现在小蓝导出了—天中所有员工的刷卡记录,请将所有到岗员工的员工......
  • 【洛谷 8742】[蓝桥杯 2021 省 AB] 砝码称重
    题目描述你有一架天平和 �N 个砝码,这 �N 个砝码重量依次是 �1,�2,⋯ ,��W1​,W2​,⋯,WN​ 。请你计算一共可以称出多少种不同的重量?注意砝码可以放在天平两边。输入格式输入的第一行包含一个整数 �N 。第二行包含 �N 个整数: �1,�2,�3,⋯ ,��W1​,W2​,W3​,⋯,WN​......
  • B1024 题解
    本着10月杂题题解只记重量级的原则,再加上这个系列好久没更新了,搞一发。原题链接发挥还可以的一场,至少比csp-s发挥的好。T1智慧概率题,考场差点出来,30pts。T2简单计数题,之前几场都卡T2,终于出来一次,100pts。T3简单数据结构题,打的30pts暴力,但是有50pts。T4智慧......
  • 【洛谷 8601】 [蓝桥杯 2013 省 A] 剪格子
    #[蓝桥杯2013省A]剪格子##题目描述如图$1$所示,$3\times3$的格子中填写了一些整数。![](https://cdn.luogu.com.cn/upload/image_hosting/hsfjsi38.png)我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是$60$。本题的要求就是请你编程判定:对给定的$m\tim......