牛客周赛 Round 51 (C++)
创始人
2025-01-10 06:34:10
0

目录

A-小红的同余_牛客周赛 Round 51 (nowcoder.com)

思路:

代码: 

B-小红的三倍数_牛客周赛 Round 51 (nowcoder.com)

思路:

代码: 

C-小红充电_牛客周赛 Round 51 (nowcoder.com)

思路:

代码:

D-小红的 gcd_牛客周赛 Round 51 (nowcoder.com)

思路:

代码:

 E-小红走矩阵_牛客周赛 Round 51 (nowcoder.com)​

思路:

代码:

F-小红的数组_牛客周赛 Round 51 (nowcoder.com)

思路:

代码:

A-小红的同余_牛客周赛 Round 51 (nowcoder.com)

思路:

通过二分查找答案即可 

代码: 

#include using namespace std; int m, ans; int judge(int x) { 	if ((2 * x) % m == 1) 		return 1; 	else 		return 0; } int main() { 	cin >> m; 	int l = 0, r = m; 	while (l < r) 	{ 		int mid = (1 + l + r) >> 1; 		if (judge(mid)) 		{ 			l = mid+1; 			ans = mid; 		} 		else 			r = mid-1; 	} 	cout << ans; }

B-小红的三倍数_牛客周赛 Round 51 (nowcoder.com)

思路:

为3的倍数的数有一个特点:各个位数相加的和为3的倍数,所以将所有数的各个位数加起来看和是否为3的倍数

代码: 

#include using namespace std; int n; string s[110]; long long ans = 0; int main() { 	int n; 	cin >> n; 	for (int i = 1; i <= n; i++) 	{ 		cin >> s[i]; 		long long sum = 0; 		for (int j = 0; j < s[i].length(); j++) 		{ 			sum += s[i][j] - '0'; 		} 		ans += sum % 3; 	} 	if (ans % 3 == 0) 		cout << "YES"; 	else 		cout << "NO"; }

C-小红充电_牛客周赛 Round 51 (nowcoder.com)

思路:

分两种情况讨论:第一种低于超级充电的触发条件,直接用C求即可;第二种高于超级充电触发条件,看是直接用B求所耗时间短 还是 先将电路用到低于超级充电触发条件然后用C求时间短。

代码:

#include using namespace std; int main() { 	double x, y, t, a, b, c; 	cin >> x >> y >> t >> a >> b >> c; 	double time; 	if (x <= t) 	{ 		time = (100 - x) * 1.0 / c; 	} 	else 	{ 		double ans1= (100 - x) * 1.0 / b; 		double ans2=(x-t)/y+ (100 - t) * 1.0 / c; 		time = min(ans1, ans2); 	} 	printf("%.9lf", time); }

D-小红的 gcd_牛客周赛 Round 51 (nowcoder.com)

思路:

借用字符串来求,注意需要对每次求出来的值进行对b求余,不然会爆。

代码:

#include #define int long long using namespace std; int gcd(int a, int b) {     return  b > 0 ? gcd(b, a % b) : a; } signed main() {     string a;     int b;     cin >> a >> b;     int x=0;     int n = a.length();     for (int i = 0; i < n; i++)     {         x *= 10;         x += a[i] - '0';         x %= b;     }     int ans = gcd(x, b);     cout << ans;     return 0; }

 E-小红走矩阵_牛客周赛 Round 51 (nowcoder.com)

思路:

用二分法求答案,答案判断是否存在用深度搜索是否能走到终点

代码:

#include #include #define int long long using namespace std; int n, m, k; int s[510][510]; int dx[4] = { 1,0,0,-1 }; int dy[4] = { 0,1,-1,0 }; int flag = 0;//标志是否能走通迷宫 typedef struct node {     int x, y; }node; node start, end1; int bfs(int ans) {     queue q;     if(s[1][1]>ans)         return 0;     q.push({1,1});     int book[510][510] = { 0 };     book[1][1]=1;     while (!q.empty())     {         int x = q.front().x;//取x坐标         int y = q.front().y;//取y坐标         q.pop();         for (int i = 0; i < 4; i++)//遍历四个方向         {             int tx = x + dx[i];             int ty = y + dy[i];             if (tx<1 || ty<1 || tx>n || ty>n || book[tx][ty] == 1 || s[tx][ty] > ans)//是否越界,是否走过,是否可走                 continue;             else             {                 book[tx][ty] = 1;                 q.push({ tx,ty});                 if(tx==n&&ty==n)                     return 1;             }         }     }     return 0; } signed main() {     cin >> n ;     for (int i = 1; i <= n; i++)         for (int j = 1; j <= n; j++)         {             cin >> s[i][j];         }     int l = 1, r = 1e9;     while (l < r)     {         int mid = (l + r) >> 1;         if (bfs(mid)) r = mid;         else l = mid + 1;     }     cout << l;     return 0; }

F-小红的数组_牛客周赛 Round 51 (nowcoder.com)

思路:

用线段树存正数时的绝对值最大和负数时的绝对值最大,相当于建了两棵树。

需要加一句 ios::sync_with_stdio(0),cin.tie(0),cout.tie(0) 不然会超时。

代码:

#include #define lc u<<1 #define rc u<<1|1 using namespace std; const int N = 5e5 + 10; typedef long long ll; struct node {     int l, r;     ll sum, lm, rm, m;     ll fsum, flm, frm, fm; }tr[N << 2]; int n, q; ll a[N], b[N]; void pushup(node& u, node& l, node& r) {     u.sum = l.sum + r.sum;     u.lm = max(l.lm, l.sum + r.lm);     u.rm = max(r.rm, r.sum + l.rm);     u.m = max(l.m, max(r.m, l.rm + r.lm));      u.fsum = l.fsum + r.fsum;     u.flm = max(l.flm, l.fsum + r.flm);     u.frm = max(r.frm, r.fsum + l.frm);     u.fm = max(l.fm, max(r.fm, l.frm + r.flm)); } void pushup(int u) {     pushup(tr[u], tr[lc], tr[rc]); } void build(int u, int l, int r) {     if (l == r)tr[u] = { l,l,a[l],a[l],a[l],a[l],b[l],b[l],b[l],b[l] };     else {         tr[u] = { l,r };         int mid = (l + r) >> 1;         build(lc, l, mid), build(rc, mid + 1, r);         pushup(u);     } } node query(int u, int l, int r) {     if (tr[u].l >= l && tr[u].r <= r)return tr[u];     int mid = tr[u].l + tr[u].r >> 1;     if (l > mid)return query(rc, l, r);     else if (r <= mid)return query(lc, l, r);     else {         node res;         node L = query(lc, l, r);         node R = query(rc, l, r);         pushup(res, L, R);         return res;     } } signed main() {     ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);     cin >> n;     for (int i = 1; i <= n; i++)     {         cin >> a[i];         b[i] = -a[i];     }     cin >> q;     build(1, 1, n);     while (q--)     {         int a, b;         cin >> a >> b;         node t = query(1, a, b);         cout << max(t.m, t.fm) << '\n';     }     return 0; }

相关内容

热门资讯

2024版方法《Wepoke渠... 2024版方法《Wepoke渠道》软件透明挂!(透明挂)软件系统(2022已更新)(哔哩哔哩)是一款...
避坑细节《WPk透视辅助》太坑... 避坑细节《WPk透视辅助》太坑了其实真的是有挂(有挂头条)避坑细节《WPk透视辅助》太坑了其实真的是...
每日必备!微扑克wpk辅助器安... 每日必备!微扑克wpk辅助器安卓版本(辅助挂)原来是有挂(有挂规律)详细教程(哔哩哔哩)每日必备!微...
教程攻略!(WPK线上)辅助透... 教程攻略!(WPK线上)辅助透视,太坑了其实有挂猫腻(有挂规律)-哔哩哔哩;超受欢迎的WPK稳赢小游...
9分钟了解(AApoker)软... 9分钟了解(AApoker)软件透明挂(AApoker)透明挂辅助神器(2025已更新)(哔哩哔哩)...
玩家必备科普!微扑克透明挂外挂... 玩家必备科普!微扑克透明挂外挂辅助真的假的(辅助挂)原来是真的有挂(有挂技术)详细教程(哔哩哔哩);...
一分钟揭秘《微扑克辅助器软件》... 一分钟揭秘《微扑克辅助器软件》微扑克透明挂外挂辅助AI代打(哔哩哔哩)一分钟揭秘《微扑克辅助器软件》...
玩家必备教程《Wepoke存在... 玩家必备教程《Wepoke存在》软件透明挂!(透明挂)软件脚本(2025已更新)(哔哩哔哩);亲,有...
交流学习经验(Wepoke)软... 交流学习经验(Wepoke)软件透明挂,(Wepoke长期)外挂辅助器软件,详细教程(有挂秘笈)是一...
一分钟了解《wpK透视辅助》太... 一分钟了解《wpK透视辅助》太坑了其实真的确实是有挂(有挂方略),是用手机号来登录游戏的系统规律,如...