首页 > 其他分享 >ABC312 复盘

ABC312 复盘

时间:2023-12-10 16:37:34浏览次数:34  
标签:std int namespace ll ABC312 using include 复盘

ABC312 复盘

At 链接

LG 链接

A Chord

思路解析:水题,一个 if 即可

#include<bits/stdc++.h>
using namespace std;
string s;
int main() {
	cin >> s;
	if(s == "ACE" || s == "BDF" || s == "CEG" || s == "DFA" || s == "EGB" || s == "FAC" || s == "GBD") {
		cout << "Yes";
	}
	else {
		cout << "No";
	}
	return 0;
}

B TaK Code

思路解析:遍历每一个左上角,然后判断即可

错因: m 写成 n 。。。

#include<bits/stdc++.h>
using namespace std;
const int N = 110;
int n, m;
char ch[N][N];
int main() {
	cin >> n >> m;
	for(int i = 1; i <= n; i++) {
		for(int j = 1; j <= m; j++) {
			cin >> ch[i][j];
		}
	}
	for(int i = 1; i <= n - 9 + 1; i++) {
		for(int j = 1; j <= m - 9 + 1; j++) {
			bool flag = true;
			for(int k = i; k <= i + 2; k++) {
				for(int l = j; l <= j + 2; l++) {
					if(ch[k][l] != '#') {
						flag = false;
					}
				}
			}
			for(int k = i + 8; k >= i + 6; k--) {
				for(int l = j + 8; l >= j + 6; l--) {
					if(ch[k][l] != '#') {
						flag = false;
					}
				}
			}
			for(int k = 1; k <= 4; k++) {
				if(ch[i + 3][j + k - 1] != '.') {
					flag = false;
				}
				if(ch[i + k - 1][j + 3] != '.') {
					flag = false;
				}
				if(ch[i + 5][j + 4 + k] != '.') {
					flag = false;
				}
				if(ch[i + 4 + k][j + 5] != '.') {
					flag = false;
				}
			}
			if(flag) {
				cout << i << " " << j << "\n";
			}
		}
	}
	return 0;
}

C Invisible Hand

思路解析:二分答案,再用二分确定有多少卖家愿意出售和多少买家愿意购买

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int n, m;
int a[N], b[N];
int main() {
	cin >> n >> m;
	for(int i = 1; i <= n; i++) {
		cin >> a[i];
	}
	for(int j = 1; j <= m; j++) {
		cin >> b[j];
	}
	sort(a + 1, a + n + 1);
	sort(b + 1, b + m + 1);
	int l = 0, r = 1e9 + 10, mid = (l + r) / 2;
	int ans = 1e9 + 10;
	while(l <= r) {
		mid = (l + r) / 2;
		int tmp1 = upper_bound(a + 1, a + n + 1, mid) - a - 1;
		int tmp2 = lower_bound(b + 1, b + m + 1, mid) - b - 1;
		if(tmp1 >= m - tmp2) {
			ans = mid;
			r = mid - 1;
		}
		else {
			l = mid + 1;
		}
	}
	cout << ans;
	return 0;
}

D Count Bracket Sequences

思路解析:dp,\(f[i][j]\) 表示已经计算了前 \(i\) 个字符,还差 \(j\) 个右括号就可成为“可替换字符串”的字符串数。遇到 ( 就把 \(f[i][j]\) 全部替换成 \(f[i - 1][j - 1]\) ,遇到 ) 就把 \(f[i][j]\) 全部替换成 \(f[i - 1][j + 1]\) ,遇到 ? 就要把两种情况都考虑一遍。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll mod = 998244353;
const ll N = 3010;
string s;
ll f[N][N];
int main() {
	cin >> s;
	int n = s.size();
	for(int i = n; i > 0; i--) {
		s[i] = s[i - 1];
	}
	f[0][0] = 1;
	for(int i = 1; i <= n; i++) {
		if(s[i] == '?') {
			for(int j = 0; j <= n; j++) {
				f[i][j] = f[i - 1][j + 1];
			}
			for(int j = 1; j <= n; j++) {
				f[i][j] = (f[i][j] + f[i - 1][j - 1]) % mod;
			}
		}
		else if(s[i] == '(') {
			f[i][0] = 0;
			for(int j = 1; j <= n; j++) {
				f[i][j] = f[i - 1][j - 1];
			}
		}
		else if(s[i] == ')') {
			for(int j = 0; j <= n; j++) {
				f[i][j] = f[i - 1][j + 1];
			}
		}
	}
	cout << f[n][0];
	return 0;
}

E Tangency of Cuboids

思路解析:本场比赛 LG 评级最难的一题,但思路其实非常简单。我们要求共面数,又由于数据范围小\((x <= 100, y <= 100, z <= 100)\),那我们就干脆遍历每一个面,判断是哪两个面相交,用一个 set 存起来(去重)。

#include<bits/stdc++.h>
using namespace std;
int n, xa, ya, za, xb, yb, zb;
int a[110][110][110];
int dx[6] = {-1, 1, 0, 0, 0, 0};
int dy[6] = {0, 0, -1, 1, 0, 0};
int dz[6] = {0, 0, 0, 0, -1, 1};
set<int> st[100010];
bool check(int x, int y, int z) {
	return x >= 0 && x <= 100 && y >= 0 && y <= 100 && z >= 0 && z <= 100;
}
int main() {
	cin >> n;
	for(int i = 1; i <= n; i++) {
		cin >> xa >> ya >> za >> xb >> yb >> zb;
		for(int x = xa; x < xb; x++) {
			for(int y = ya; y < yb; y++) {
				for(int z = za; z < zb; z++) {
					a[x][y][z] = i;
				}
			}
		}
	}
	for(int x = 0; x <= 100; x++) {
		for(int y = 0; y <= 100; y++){
			for(int z = 0; z <= 100; z++) {
				for(int i = 0; i < 6; i++) {
					int nx = x + dx[i];
					int ny = y + dy[i];
					int nz = z + dz[i];
					if(check(nx, ny, nz)) {
						if(a[x][y][z] != 0 && a[nx][ny][nz] != 0 && a[x][y][z] != a[nx][ny][nz]) {
							st[a[x][y][z]].insert(a[nx][ny][nz]);
							st[a[nx][ny][nz]].insert(a[x][y][z]);
						}
					}
				}
			}
		}
	}
	for(int i = 1; i <= n; i++) {
		cout << st[i].size() << "\n";
	}
	return 0;
}

F Cans and Openers

思路解析:贪心,可以列出等量关系:拉环罐头数 + 普通罐头数 + 开罐器 = \(m\) ,而如果我们知道了普通罐头数,那我们就一定能知道开罐器数量的最小值,同时根据等量关系也可得知拉环罐头数,所以我们只需按照开心值从大到小枚举普通罐头数即可,用二分确定开罐器数量,自然也能得到拉环罐头数

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll N = 2e5 + 10;
ll n, m;
vector<ll> a, b, c;
ll sa[N], sb[N], sc[N];
int main() {
	cin >> n >> m;
	for(ll i = 1; i <= n; i++) {
		ll t, x;
		cin >> t >> x;
		if(t == 0) {
			a.push_back(x);
		}
		else if(t == 1) {
			b.push_back(x);
		}
		else if(t == 2) {
			c.push_back(x);
		}
	}
	sort(a.begin(), a.end(), [](ll x, ll y) {
		return x > y;
	});
	sort(b.begin(), b.end(), [](ll x, ll y) {
		return x > y;
	});
	sort(c.begin(), c.end(), [](ll x, ll y) {
		return x > y;
	});
	for(ll i = 1; i <= a.size(); i++) {
		sa[i] = sa[i - 1] + a[i - 1];
	}
	for(ll i = 1; i <= b.size(); i++) {
		sb[i] = sb[i - 1] + b[i - 1];
	}
	for(int i = 1; i <= c.size(); i++) {
		sc[i] = sc[i - 1] + c[i - 1];
	}
	ll ans = sa[min(m, (ll)a.size())];
	for(ll i = 1; i <= b.size(); i++) {
		ll pc = lower_bound(sc + 1, sc + c.size() + 1, i) - sc;
		if(pc <= c.size()) {
			ll pa = m - i - pc;
			if(pa < 0) break;
			pa = min(pa, (ll)a.size());
			ans = max(ans, sb[i] + sa[pa]);
		}
	}
	cout << ans;
	return 0;
}

标签:std,int,namespace,ll,ABC312,using,include,复盘
From: https://www.cnblogs.com/2020luke/p/17892817.html

相关文章

  • ABC301 复盘
    ABC301复盘At链接LG链接[ABC301A]OverallWinner思路解析:从头开始遍历字符串,遇到一个字符就给对应的一方加分,输出第一个胜场大于\(\lceiln/2\rceil\)的一方。#include<bits/stdc++.h>usingnamespacestd;intn;stringstr;intmain(){ cin>>n; cin>>str......
  • AT_abc312复盘
    AT_abc312复盘A一眼过去直接\(if\)秒了ACcode:#include<bits/stdc++.h>usingnamespacestd;strings;intmain(){cin>>s;if(s=="ACE"||s=="BDF"||s=="CEG"||s=="DFA"||s=="E......
  • 【父子进程/AES/XTEA/SMC】赛后复盘
    官方wp:进程重影技术:进程重映像利用了Windows内核中的缓存同步问题,它会导致可执行文件的路径与从该可执行文件创建的映像节区所报告的路径不匹配。通过在一个诱饵路径上加载DLL,然后卸载它,然后从一个新路径加载它,许多WindowsAPI将返回旧路径。这可能可以欺骗安全产品,使其在错误......
  • 微信小程序使用canvas生成分享海报功能复盘
    前言近期需要开发一个微信小程序生成海报分享的功能。在h5一般都会直接采用html2canvas或者dom2image之类的库直接处理。但是由于小程序不具备传统意义的dom元素,所以也没有办法采用此类工具。所以就只能一笔一笔的用canvas画出来了,下面对实现这个功能中遇到的问题做一......
  • 红帽大赛决赛复盘
     1.基础命令(1)greproot/etc/passwd>/opt/grep.txt(2)date-s"2023-12-1215:20:54">/opt/time.txt#这题考试的时候就不会修改时间是date-s"日期(空格)时间【格式为2023-12-1215:20:54】(3)cd/tmpmvtest.txt/optmvtest.txtrhel-test.txtecho"Hell......
  • 2023CSP复赛/NOIP备战模拟赛复盘集合
    20231003CSP-J模拟赛复盘这次模拟赛考的特别差,只有160。T1:一上来,虽然不那么打卡,但也挺简单,然后五分钟写完,对了对样例,对了,走人。T2:需要在\(O(nlogn)\)或者\(O(n)\)的时间复杂度求出每一个区间被覆盖的区间,这要怎么求啊?我想了半天也只知道\(O(n^2)\)怎么做,然后发现一个小时......
  • 2023CSP初赛备战复盘合集
    NOIP2010提高组复盘整套卷子讲解:noip2010初赛提高组试题详解-Dijkstra·Liu-博客园_noip2010提高组初赛试题解析-豆丁网Docin原题:luogu本文部分内容参考来自以上链接。总结:这次的卷子比较难,考了67.5,全机房第2,cwzdalao拿到了68分%%%,他的运气逆天,蒙对了程序输出题。......
  • 2023.7信友队暑假集训第2次测试复盘
    信友队暑假集训第2次测试总结:本次比赛都出的以前做过的题,但本蒟蒻确只写了320(悲第一题:排行榜一道水题,秒A#include<bits/stdc++.h>usingnamespacestd;stringans[105],s[105],t[105];intvis[105];intmain(){intn;cin>>n;memset(vis,0,sizeofvis);......
  • 老知识复盘-SQL从提交到执行到底经历了什么
    一、什么是SQLsql(StructuredQueryLanguage:结构化查询语言)是高级的费过程化编程语言,允许用户在高层数据结构上工作,是一种数据查询和程序设计语言,也是(ANSI)的一项标准的计算机语言.but...目前仍然存在着许多不同版本的sql语言,为了与ANSI标准相兼容,它们必须以相似......
  • 如何做项目复盘?年薪百万的项目经理这样做!
    项目复盘是对阶段完成项目所做的回顾总结,对关键事件的分析,从而从过去的经历中总结经验教训,为新项目和工作的进行提供价值。项目复盘不仅仅是仪式感回顾,更是能让参与复盘的人员在各方面学习收获的总结。其实在各位项目经理整理日报周报的时候,就已经算是小型的简单复盘了,通过阶段的反......