SuntoryProgrammingContest2024(AtCoder Beginner Contest 357)(A~F)(最爱线段树的一集)

A - Sanitize Hands

        题意:

        模拟

// Problem: A - Sanitize Hands
// Contest: AtCoder - SuntoryProgrammingContest2024(AtCoder Beginner Contest 357)
// URL: https://atcoder.jp/contests/abc357/tasks/abc357_a
// Memory Limit: 1024 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define x first
#define y second 
#define endl '\n'
const LL maxn = 4e05+7;
const LL N = 5e05+10;
const LL mod = 1e09+7;
const int inf = 0x3f3f3f3f;
const LL llinf = 5e18;
typedef pair<int,int>pl;
priority_queue<LL , vector<LL>, greater<LL> >mi;//小根堆
priority_queue<LL> ma;//大根堆
LL gcd(LL a, LL b){return b > 0 ? gcd(b , a % b) : a;
}LL lcm(LL a , LL b){return a / gcd(a , b) * b;
}
int n , m;
vector<int>a(N , 0);
void init(int n){for(int i = 0 ; i <= n ; i ++){a[i] = 0;}
}
void solve() 
{int n , m;cin >> n >> m;for(int i = 0 ; i < n ; i++){cin >> a[i];}	int cnt = 0;for(int i = 0 ; i < n ; i ++){if(m >= a[i]){cnt ++;m -= a[i];}else{m = 0;}}cout << cnt << endl;
}            
int main() 
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cout.precision(10);int t=1;//cin>>t;while(t--){solve();}return 0;
}

 B - Uppercase and Lowercase

        题意:

        还是模拟

// Problem: B - Uppercase and Lowercase
// Contest: AtCoder - SuntoryProgrammingContest2024(AtCoder Beginner Contest 357)
// URL: https://atcoder.jp/contests/abc357/tasks/abc357_b
// Memory Limit: 1024 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define x first
#define y second 
#define endl '\n'
const LL maxn = 4e05+7;
const LL N = 5e05+10;
const LL mod = 1e09+7;
const int inf = 0x3f3f3f3f;
const LL llinf = 5e18;
typedef pair<int,int>pl;
priority_queue<LL , vector<LL>, greater<LL> >mi;//小根堆
priority_queue<LL> ma;//大根堆
LL gcd(LL a, LL b){return b > 0 ? gcd(b , a % b) : a;
}LL lcm(LL a , LL b){return a / gcd(a , b) * b;
}
int n , m;
vector<int>a(N , 0);
void init(int n){for(int i = 0 ; i <= n ; i ++){a[i] = 0;}
}
void solve() 
{int cnt1 = 0;string s;cin >> s;	for(auto c : s){if(c >= 'a' && c <= 'z'){cnt1++;}}if(cnt1 * 2 > s.size()){for(auto c : s){if(c >= 'a' && c <= 'z'){cout << c;}else{cout << (char)(c + 32);}}}else{for(auto c : s){if(c >= 'a' && c <= 'z'){cout << (char)(c - 32);}else{cout << (char)c;}}		}
}            
int main() 
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cout.precision(10);int t=1;//cin>>t;while(t--){solve();}return 0;
}

C - Sierpinski carpet 

题意:

依旧是模拟..不知道前排大佬怎么能写这么快的

// Problem: C - Sierpinski carpet
// Contest: AtCoder - SuntoryProgrammingContest2024(AtCoder Beginner Contest 357)
// URL: https://atcoder.jp/contests/abc357/tasks/abc357_c
// Memory Limit: 1024 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define x first
#define y second 
#define endl '\n'
const LL maxn = 4e05+7;
const LL N = 5e05+10;
const LL mod = 1e09+7;
const int inf = 0x3f3f3f3f;
const LL llinf = 5e18;
typedef pair<int,int>pl;
priority_queue<LL , vector<LL>, greater<LL> >mi;//小根堆
priority_queue<LL> ma;//大根堆
LL gcd(LL a, LL b){return b > 0 ? gcd(b , a % b) : a;
}LL lcm(LL a , LL b){return a / gcd(a , b) * b;
}
int n , m;
vector<int>a(N , 0);
void init(int n){for(int i = 0 ; i <= n ; i ++){a[i] = 0;}
}
vector<vector<string>>v(7 , vector<string>(10101));
void solve() 
{int n;cin >> n;for(int i = 1 ; i <= (int)pow(3 , n) ; i ++){cout << v[n][i] <<endl;}
}            
int main() 
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cout.precision(10);int t = 1;v[0][1] = '#';for(int i = 1 ; i < 7 ; i ++){int pre = (int)pow(3 , i - 1);for(int j = 1 ; j <= 3 * pre ; j ++){if((j - 1) / pre != 1){for(int t = 0 ; t < 3 ; t ++){v[i][j] += v[i - 1][(j - 1) % pre + 1];				}}else{v[i][j] += v[i - 1][(j - 1) % pre + 1];for(int t = 0 ; t < pre ; t ++){v[i][j] += '.';}v[i][j] += v[i - 1][(j - 1) % pre + 1];}}}while(t--){solve();}return 0;
}

 

D - 88888888

        

思路:将答案拆成加和的形式:假设N的位数为x,那么最终答案为n +n * pow(10 , x)+n*pow(10,2 * x)...n * pow(10 ,( n - 1) * x),然后可以将 N提出来之后,其余的是一个等比数列,因此有等比数列求和公式将答案化简为:n * (pow(10 , n * x) - 1 )/( pow(10 ,x ) -1)

注意n*x可能爆longlong

// Problem: D - 88888888
// Contest: AtCoder - SuntoryProgrammingContest2024(AtCoder Beginner Contest 357)
// URL: https://atcoder.jp/contests/abc357/tasks/abc357_d
// Memory Limit: 1024 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define x first
#define y second 
#define endl '\n'
const LL maxn = 4e05+7;
const LL N = 5e05+10;
const LL mod = 998244353;
const int inf = 0x3f3f3f3f;
const LL llinf = 5e18;
#define int unsigned long long
typedef pair<int,int>pl;
priority_queue<LL , vector<LL>, greater<LL> >mi;//小根堆
priority_queue<LL> ma;//大根堆
LL gcd(LL a, LL b){return b > 0 ? gcd(b , a % b) : a;
}LL lcm(LL a , LL b){return a / gcd(a , b) * b;
}
int n , m;
vector<int>a(N , 0);
void init(int n){for(int i = 0 ; i <= n ; i ++){a[i] = 0;}
}
LL qpow(LL a , LL b)//快速幂
{LL sum=1;while(b){if(b&1){sum=sum*a%mod;}a=a*a%mod;b>>=1;}return sum;
}
void solve() 
{cin >> n;int tmp = n;int len = 0;while(tmp){len ++;tmp /= 10;}int t = n % mod;int fenzi = qpow(qpow(10 , n) , len) - 1 + mod;fenzi %= mod;int bei = qpow(10 , len) - 1 + mod;int tbei = qpow(bei , mod - 2);int ans = t;t *= fenzi;t %= mod;t *= tbei;t %= mod;cout << t;
}            
signed main() 
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cout.precision(10);int t=1;//cin>>t;while(t--){solve();}return 0;
}

 

E - Reachability in Functional Graph

        题意:

        思路:将有向图通过SCC缩点形成一个有向无环图(DAG), 然后思考答案:同一个强连通分量的点两两互相连通,然后与该连通分量相连的所有点与该连通分量上的所有点相连通,因此本题变成了DAG图上DP,直接逆拓扑序走一遍。考虑单独存储每一个强连通分量上的点,与能够连接到该连通分量上的点即可。 (SCC知识快忘记的差不多了..只记得bel从大到小就是逆拓扑序)

// Problem: E - Reachability in Functional Graph
// Contest: AtCoder - SuntoryProgrammingContest2024(AtCoder Beginner Contest 357)
// URL: https://atcoder.jp/contests/abc357/tasks/abc357_e
// Memory Limit: 1024 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define x first
#define y second 
#define endl '\n'
const LL maxn = 4e05+7;
const LL N = 5e05+10;
const LL mod = 1e09+7;
const int inf = 0x3f3f3f3f;
#define int long long
const LL llinf = 5e18;
typedef pair<int,int>pl;
priority_queue<LL , vector<LL>, greater<LL> >mi;//小根堆
priority_queue<LL> ma;//大根堆
LL gcd(LL a, LL b){return b > 0 ? gcd(b , a % b) : a;
}LL lcm(LL a , LL b){return a / gcd(a , b) * b;
}
int n , m;
vector<int>a(N , 0);
void init(int n){for(int i = 0 ; i <= n ; i ++){a[i] = 0;}
}
struct SCC {int n;std::vector<std::vector<int>> adj;//邻边std::vector<int> stk;//存储同一个SCCstd::vector<int> dfn, low, bel;//dfn : dfs的时间戳 low : 子树能跳到的最上方的点 bel : 结点位于哪块强连通分量上 int cur, cnt;SCC() {}SCC(int n) {init(n);}void init(int n) {this->n = n;adj.assign(n, {});dfn.assign(n, -1);low.resize(n);bel.assign(n, -1);stk.clear();cur = cnt = 0;}void addEdge(int u, int v) {adj[u].push_back(v);}void dfs(int x) {dfn[x] = low[x] = cur++;stk.push_back(x);for (auto y : adj[x]) {if (dfn[y] == -1) {dfs(y);low[x] = std::min(low[x], low[y]);} else if (bel[y] == -1) {low[x] = std::min(low[x], dfn[y]);}}if (dfn[x] == low[x]) {int y;do {y = stk.back();bel[y] = cnt;stk.pop_back();} while (y != x);cnt++;}}std::vector<int> work() {for (int i = 0; i < n; i++) {if (dfn[i] == -1) {dfs(i);}}return bel;}
};void solve() 
{int n;cin >> n;SCC scc(n + 5);for(int i = 1 ; i <= n ; i ++){int x;cin >> x;if(x != i){scc.addEdge(i , x);}}vector<int>t = scc.work();vector<int>dp(n + 5 , 0);vector<int>cnt(n + 5 , 0);vector<int>chan[n + 5];int ma = -1;for(int i = 1; i <= n ; i ++){//cout << t[i] << endl;cnt[t[i]]++;chan[t[i]].pb(i);ma = max(ma , t[i]);}int ans = 0;vector<int>vis(n + 5, 0);for(int i = ma ; i >= 1 ; i --){int tmp = cnt[i];ans += cnt[i] * cnt[i];ans += dp[i] * cnt[i];cnt[i] += dp[i];vector<int>path;for(auto it : chan[i]){int next;if(scc.adj[it].size() != 0){next = scc.adj[it][0];}else{continue;}int belo = scc.bel[next];if(!vis[belo]){path.pb(belo);vis[belo] = 1;dp[belo] += cnt[i];}}for(auto it : path){vis[it] = 0;}}//cout << cnt[3] << endl;cout << ans;
}            
signed main() 
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cout.precision(10);int t=1;while(t--){solve();}return 0;
}

F - Two Sequence Queries 

        题意:

        思路:很明显的线段树题目(在这几天做的题里面算简单的了)。一个区间需要维护的信息有:区间点的个数(act)、区间中A数组的和(asum)、区间中B数组的和(bsum)、以及区间A*B的和(tot)。区间合并非常简单,全部相加即可。主要考虑tag怎么设置,可以发现,若区间A都加上X,那么其asum += act * X , tot += bsum * X。反之B区间也是一样。然后本题就完成了

        

// Problem: F - Two Sequence Queries
// Contest: AtCoder - SuntoryProgrammingContest2024(AtCoder Beginner Contest 357)
// URL: https://atcoder.jp/contests/abc357/tasks/abc357_f
// Memory Limit: 1024 MB
// Time Limit: 5000 ms
// 
// Powered by CP Editor (https://cpeditor.org)#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define x first
#define y second 
#define int long long
#define endl '\n'
const LL maxn = 4e05+7;
const LL N = 5e05+10;
#define i64 long long
const LL mod =  998244353;
const LL llinf = 5e18;
typedef pair<int,int>pl;
priority_queue<LL , vector<LL>, greater<LL> >mi;//小根堆
priority_queue<LL> ma;//大根堆
LL gcd(LL a, LL b){return b > 0 ? gcd(b , a % b) : a;
}LL lcm(LL a , LL b){return a / gcd(a , b) * b;
}
template<class Info, class Tag>
struct LazySegmentTree {const int n;std::vector<Info> info;std::vector<Tag> tag;LazySegmentTree(int n) : n(n), info(4 << std::__lg(n)), tag(4 << std::__lg(n)) {}LazySegmentTree(std::vector<Info> init) : LazySegmentTree(init.size()) {std::function<void(int, int, int)> build = [&](int p, int l, int r) {if (r - l == 1) {info[p] = init[l];return;}int m = (l + r) / 2;build(2 * p, l, m);build(2 * p + 1, m, r);pull(p);};build(1, 0, n);}void pull(int p) {info[p] = info[2 * p] + info[2 * p + 1];}void apply(int p, const Tag &v) {info[p].apply(v);tag[p].apply(v);}void push(int p) {apply(2 * p, tag[p]);apply(2 * p + 1, tag[p]);tag[p] = Tag();}void modify(int p, int l, int r, int x, const Info &v) {if (r - l == 1) {info[p] = v;return;}int m = (l + r) / 2;push(p);if (x < m) {modify(2 * p, l, m, x, v);} else {modify(2 * p + 1, m, r, x, v);}pull(p);}void modify(int p, const Info &v) {modify(1, 0, n, p, v);}Info rangeQuery(int p, int l, int r, int x, int y) {if (l >= y || r <= x) {return Info();}if (l >= x && r <= y) {return info[p];}int m = (l + r) / 2;push(p);return rangeQuery(2 * p, l, m, x, y) + rangeQuery(2 * p + 1, m, r, x, y);}Info rangeQuery(int l, int r) {return rangeQuery(1, 0, n, l, r);}void rangeApply(int p, int l, int r, int x, int y, const Tag &v) {if (l >= y || r <= x) {return;}if (l >= x && r <= y) {apply(p, v);return;}int m = (l + r) / 2;push(p);rangeApply(2 * p, l, m, x, y, v);rangeApply(2 * p + 1, m, r, x, y, v);pull(p);}void rangeApply(int l, int r, const Tag &v) {return rangeApply(1, 0, n, l, r, v);}void half(int p, int l, int r) {if (info[p].act == 0) {return;}if ((info[p].min + 1) / 2 == (info[p].max + 1) / 2) {apply(p, {-(info[p].min + 1) / 2});return;}int m = (l + r) / 2;push(p);half(2 * p, l, m);half(2 * p + 1, m, r);pull(p);}void half() {half(1, 0, n);}
};
struct Tag {i64 adda = 0;i64 addb = 0;void apply(Tag t) {adda += t.adda;adda %= mod;addb += t.addb;addb %= mod;}
};
struct Info {int asum = 0;int bsum = 0;int tot = 0;int act = 0;void apply(Tag t) {asum += (t.adda * act) % mod;asum %= mod;tot += (bsum * t.adda) % mod;tot %= mod;bsum += (t.addb * act) % mod;bsum %= mod;tot += ((asum % mod) *( t.addb % mod)) % mod;tot %= mod;}
};
Info operator + (Info a, Info b) {Info c;c.asum = a.asum + b.asum;c.asum %= mod;c.bsum = a.bsum + b.bsum;c.bsum %= mod;c.act = a.act + b.act;c.act %= mod;c.tot = a.tot + b.tot;c.tot %= mod;return c;
}
void solve() 
{int n , m;cin >> n >> m;vector<Info>v(n);for(int i = 0 ; i < n ; i ++){cin >> v[i].asum;}for(int i = 0 ; i < n ; i ++){cin >> v[i].bsum;}for(int i = 0 ; i < n ; i ++){v[i].act = 1;v[i].tot = v[i].asum * v[i].bsum;v[i].tot %= mod;}LazySegmentTree <Info , Tag> seg(v);for(int i = 0 ; i < m; i ++){int op;cin >> op;if(op == 1){int l , r , x;cin >> l >> r >> x;Tag tmp;tmp.adda = x;seg.rangeApply(l - 1 , r , tmp);}else if(op == 2){int l , r , x;cin >> l >> r >>x;Tag tmp;tmp.addb = x;seg.rangeApply(l - 1 , r , tmp);}else{int l , r;cin >> l >> r;cout << seg.rangeQuery(l - 1 , r).tot << endl;}}
}            
signed main() 
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cout.precision(10);int t=1;//cin>>t;while(t--){solve();}return 0;
}

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

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

相关文章

HPC: perf入门

如果你想查看你的程序在cpu上运行时&#xff0c;耗时时如何分布的&#xff0c;那么perf是一个合理的选择。 准备工作 为了支持使用perf&#xff0c;首先你要安装相关的库 sudo apt install linux-tools-5.15.0-67-generic此外&#xff0c;因为使用perf进行benchmark&#xf…

记录一次springboot、ruoyi若依前后端不分离项目和vue项目的合并整合问题,搞了一天总结

项目场景&#xff1a; 因为此功能只做为客户方一个小模块&#xff0c;客户方使用的是springboot前后端不分离的架构。而我们的项目是使用前后端分离springbootvue的架构。在接项目前&#xff0c;项目已经存在&#xff0c;所以不存在设计架构的前提。实际是在原有基础上修改的。…

【JavaScript】内置对象 - 字符串对象 ⑤ ( 判断对象中是否有某个属性 | 统计字符串中每个字符出现的次数 )

文章目录 一、判断对象中是否有某个属性1、获取对象属性2、判定对象是否有某个属性 二、统计字符串中每个字符出现的次数1、算法分析2、代码示例 String 字符串对象参考文档 : https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String 一、判…

中间代码生成

一&#xff0e;实验题目 DO-WHILE循环语句的中间代码生成 二&#xff0e;实验目的 通过设计、编制、调试一个 do-while 循环语句的语法及语义分析程序&#xff0c;加深对 法及语义分析原理的理解&#xff0c;并实现词法分析程序对单词序列的词法检查和分析。 三&#xff0e; 实…

学习串口屏需要了解哪些方面的知识

学习串口屏需要掌握的知识主要包括以下几个方面&#xff1a; 串口通信原理&#xff1a;串口屏是基于串口通信的显示控制模组&#xff0c;因此了解串口通信的基本原理和通信协议是必要的。你需要了解串口通信的基本概念、数据格式、波特率、校验位等参数&#xff0c;以及串口通…

基于SpringBoot+Vue旅游民宿信息管理系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还…

轻松搞定阿里云域名DNS解析

本文将会讲解如何设置阿里云域名DNS解析。在进行解析设置之前&#xff0c;你需要提前准备好需要设置的云服务器IP地址、域名以及CNAME记录。 如果你还没有云服务器和域名&#xff0c;可以参考下面的方法注册一个。 申请域名&#xff1a;《Namesilo域名注册》注册云服务器&…

算法导论实战(三)(算法导论习题第二十五、二十六章)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;算法启示录 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 前言 第二十五章 25.1-10 25.2-5 25…

vue2中如何使用函数式组件

vue2 中如何使用函数式组件 用 render 定义函数式组件如何处理 props如何在函数式组件中触发自定义事件&#xff1f;injection如何使用 computed 和 methods定义一个函数式组件的 MyButton函数式组件有何优势哪种场景适合使用函数式组件函数式组件的问题参考 函数式组件&#x…

FineReport使用小记(不断更新中…………)

FineReport使用小记 1. 单元格相关设置1.1. 单元格值样式 2. 报表块设置2.1. 给报表块加单位 1. 单元格相关设置 1.1. 单元格值样式 1. 百分比样式 选中单元格&#xff0c;单元格属性——>文本——>格式——>百分比 下面可以选择保留几位小数&#xff0c;图中为保留…

【MySQL】常见可执行程序

本文使用的版本是MySQL8&#xff0c;5.7可能会有所不同。 MySQL提供了一些重要的程序用来管理和操作数据库。这里会介绍一些常用的程序及其使用。对于MySQL程序的使用&#xff0c;可以查看官方帮助手册来学习。 MySQL :: MySQL 8.0 Reference Manual :: 6 MySQL Programs 程序…

找了半天,还不如自己写一个图片转ico格式的程序

关于jpg、png等图片转ICO格式 最近突然急需一张ico格式的文件&#xff0c;就拿着处理好的png图片出网上找在线转换器&#xff0c;找了一个小时&#xff0c;绝了&#xff0c;不是需要注册充钱就是下载不下来&#xff0c;好不容易下载下来还是个文件错误。想着找个PS插件直接导出…

烧写uboot、linux镜像、根文件系统到开发板

烧写uboot、linux镜像、根文件系统到开发板 环境介绍 本博客使用x6818开发板。 公司&#xff1a;三星 ARM架构 Cortex-A53核 型号&#xff1a;S5P6818 特性&#xff1a;8核&#xff0c;最高主频2GHz 烧写uboot 使用网络烧写 网络烧写上位机是Ubuntu虚拟机。 先利用上…

基于STM32智能小车

一、前置准备 前置知识&#xff1a;需要学习stm32&#xff0c;建议去b站看江科大的视频&#xff0c;讲的很详细&#xff0c;学完串口那一块就可以制作了&#xff0c;软件用的是Keil5&#xff0c;开发语言C语言&#xff0c;手机连接蓝牙模块软件是蓝牙调试器。 需要准备的器件…

数学+思维,CF1056B - Divide Candies

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 1056B - Codeforces 二、解题报告 1、思路分析 考虑i^2 j^2 | m 而m的余数有限&#xff0c;且m很小 我们枚举两重循环&#xff0c;都枚举m的余数&#xff0c;分别记为x&#xff0c;y 如果x ^ …

Linux☞进程控制

在终端执行命令时&#xff0c;Linux会建立进程&#xff0c;程序执行完&#xff0c;进程会被终止&#xff1b;Linux是一个多任务的OS,允许多个进程并发运行&#xff1b; Linxu中启动进程的两种途径&#xff1a; ①手动启动(前台进程(命令gedit)...后台进程(命令‘&’)) ②…

数据库安全加固与API防护策略

在数字化时代&#xff0c;数据库作为企业核心资产的安全性至关重要。然而&#xff0c;随着网络攻击手段的不断演进&#xff0c;数据库和API接口成为了黑客的主要攻击目标。本文将探讨数据库被攻击、API接口被滥用的情况&#xff0c;并提供一系列实用的防护措施&#xff0c;旨在…

【玩转C语言】第三讲---> scanf 和 printf 函数详解(非常重要)!

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 引言&#xff1a; 大家好&#xff0c;我是坊钰&#xff0c;为了让大家深入了解C语言&#xff0c;我开创了【玩转C语言系列】&#xff0c;将为大家介绍C语言相关知识…

C++ ─── STL 以及string

前言&#xff1a;什么是STL STL(standard template libaray-标准模板库)&#xff1a;是C标准库的重要组成部分&#xff0c;不仅是一个可复用的组件库&#xff0c;而且 是一个包罗数据结构与算法的软件框架 STL的六大组件 1. 为什么学习string类&#xff1f; 1.1 C语言中的字符…

Ambari集成Apache Kyuubi实践

目前还有很多公司基于HDP来构建自己的大数据平台&#xff0c;随着Apache Kyuubi的持续热度&#xff0c;如何基于原有的HDP产品来集成Apache Kyuubi&#xff0c;很多人都迫切的需求。集成Apache Kyuubi到HDP中&#xff0c;主要涉及Ambari的二次开发。本文详细叙述了集成Apache K…