牛客小白月赛68【A-E】
创始人
2024-06-01 01:46:18
0

文章目录

  • A.Tokitsukaze and New Operation【模拟】
  • B.Tokitsukaze and Order Food Delivery【模拟、特判】
  • C.Tokitsukaze and Average of Substring【暴力、前缀】
  • D.Tokitsukaze and Development Task【记忆化搜索】
  • E.Tokitsukaze and Colorful Chessboard【预处理,二分】

链接
传送门

A.Tokitsukaze and New Operation【模拟】

分析
根据题意模拟就行,合理运用STL可以简化代码。
实现

#include 
#define ll long long
#define ls (u << 1)
#define rs (u << 1 | 1) 
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
using namespace std;
typedef pair PII;
void solve() {string a, b;cin >> a >> b;int n = a.size(), m = b.size();if (n != m) {cout << -1 << '\n';return;}string ans;for (int i = 0; i < n; i++) {ans += to_string((a[i] - '0') * (b[i] - '0'));//to_stirng函数可以使得int转换为string类型}cout << ans << '\n';
}
int main() {ios::sync_with_stdio(false);cin.tie(0);int T = 1;cin >> T;while (T--) {solve();}
}

B.Tokitsukaze and Order Food Delivery【模拟、特判】

分析
这题看似唬人,其实不难,因为这里只说了取一道菜所以只需暴力取最优的即可。
实现

#include 
#define ll long long
#define ls (u << 1)
#define rs (u << 1 | 1) 
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
using namespace std;
typedef pair PII;
void solve() {int n, a, b;cin >> n >> a >> b;int ans = inf;while (n--) {int k, x, y;cin >> k >> x >> y;while (k--) {int c;cin >> c;if (c >= a && c >= x) {c = max(0, c - b - y);} else if (c >= a) {c = max(0, c - b);} else if (c >= x) {c = max(0, c - y);}ans = min(ans, c);}}cout << ans << '\n';
}
int main() {ios::sync_with_stdio(false);cin.tie(0);int T = 1;cin >> T;while (T--) {solve();}
}

C.Tokitsukaze and Average of Substring【暴力、前缀】

分析
这里n的范围是5000,我们可以直接枚举两端,对26个字母统计前缀字符数,即可,时间复杂度O(n^2*26),注意可能卡map,这里用数组。
实现

#include 
#define ll long long
#define ls (u << 1)
#define rs (u << 1 | 1) 
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
using namespace std;
typedef pair PII;
const int N = 5005;
char s[N];
int cnt[26][N];
void solve() {int n;scanf("%d", &n);for (int i = 1; i <= n; i++) {for (int j = 0; j < 26; j++) {cnt[j][i] = 0;}}scanf("%s", s + 1);for (int i = 1; i <= n; i++) {char ch = s[i];for (int j = 0; j < 26; j++) {if (ch - 'a' == j) cnt[j][i] = cnt[j][i - 1] + 1;else cnt[j][i] = cnt[j][i - 1];//继承前缀}} 
//	for (int i = 0; i < 26; i++) {
//		for (int j = 1; j <= n; j++) {
//			cout << cnt[i][j] << ' ';
//		}
//		cout << '\n';
//	}double ans = 0;for (int i = 1; i <= n; i++) {for (int j = i; j <= n; j++) {int sum = 0;for (int k = 0; k < 26; k++) {int c = cnt[k][j] - cnt[k][i - 1];sum += c * (c - 1) / 2;//统计相同的对数}ans = max(ans, 1.0 * sum / (j - i + 1));}}printf("%.6lf\n", ans);
}
int main() {
//	ios::sync_with_stdio(false);
//	cin.tie(0);int T = 1;cin >> T;while (T--) {solve();}
}

D.Tokitsukaze and Development Task【记忆化搜索】

分析
首先300的数目步数最多300,总共有8种更新方法,求最小操作次数,但是这里组数有点多,考虑用记忆化搜索,总时间复杂度为O(n^2).
实现

#include 
#define ll long long
#define ls (u << 1)
#define rs (u << 1 | 1) 
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
using namespace std;
typedef pair PII;
const int N = 5005;
int go[6] = {1, -1, 10, -10, 100, -100};
int dp[305];
bool vis[305];
void bfs(int tar) {for (int i = 10; i <= 300; i++) vis[i] = 0;vis[10] = 1;queue q;q.push({10, 0});while (!q.empty()) {int x = q.front().first, s = q.front().second;if (x == tar) {//找到目标值就弹出,先进先出,所以步数是最小的dp[tar] = s;return;}q.pop();for (int i = 0; i < 8; i++) {int nx;if (i < 6) nx = x + go[i];else if (i == 6) nx = 10;else nx = 300;if (nx < 10 || nx > 300 || vis[nx]) continue;vis[nx] = 1;int ns = s + 1;q.push({nx, ns});}}
}
void solve() {int a, b, c, d;
//	cin >> a;
//	bfs(a);
//	cout << dp[a] << '\n';cin >> a >> b >> c >> d;if (dp[a] == -1) bfs(a);if (dp[b] == -1) bfs(b);if (dp[c] == -1) bfs(c);if (dp[d] == -1) bfs(d);cout << dp[a] + dp[b] + dp[c] + dp[d] << '\n';  
}
int main() {ios::sync_with_stdio(false);cin.tie(0);int T = 1;cin >> T;for (int i = 11; i <= 305; i++) dp[i] = -1;//0也算,所以初始化-1while (T--) {solve();}
}

E.Tokitsukaze and Colorful Chessboard【预处理,二分】

分析
为了更加充分地利用空间,我们需要紧凑地使用格子,所以把棋盘分成奇数格和偶数格使用,预处理平方数,可以得到所有奇数格的数目和偶数格的数目,如果平方数是偶数则两者一样多否则奇数多1个,我们查询的两个数较大的那一个放在奇数格上,利用二分,但是,此时另一个数可能不行,因为如果说这个数是对应的平方数是奇数,而两者又是一样大的话,是无法放入的,例如:n=3,b[3]=5,c[3] = 4, x = y = 5,必须往右挪一格(可能前面有需要几格的,但是不多)到y符合,在向右挪的时候由于单调性,x始终符合。注意爆int。
实现

#include 
#define ll long long
#define ls (u << 1)
#define rs (u << 1 | 1) 
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
using namespace std;
typedef pair PII;
const int N = 1e5 + 5;
int go[6] = {1, -1, 10, -10, 100, -100};
ll a[N], b[N], c[N];
void solve() {ll x, y;cin >> x >> y;if (x < y) swap(x, y);int n = 1e5;int p = lower_bound(b + 1, b + 1 + n, x) - b;
//	cout << b[p] << '\n';while (c[p] < y) p++;//稍微挪一格左右cout << p << '\n'; 
}
int main() {ios::sync_with_stdio(false);cin.tie(0);int T = 1;cin >> T;int m = 1e5;for (int i = 1; i <= m; i++) a[i] = 1ll * i * i;//这里爆intfor (int i = 1; i <= m; i++) {b[i] = (a[i] + 1) / 2;c[i] = a[i] - b[i];}
//	cout << b[70000] << '\n';
//	for (int i = 1; i <= 5; i++) cout << c[i] << '\n';while (T--) {solve();}
}

相关内容

热门资讯

u盘安卓系统启动,便捷移动办公... 你有没有想过,有一天你的U盘不仅能存储文件,还能变身成一个迷你电脑呢?没错,就是那种可以直接启动安卓...
安卓不让华为用12系统 你知道吗?最近安卓和华为之间可是闹出了不小的风波呢!安卓决定不让华为继续使用最新的12系统,这可让不...
小米电视系统安卓几,基于安卓X... 亲爱的读者们,你是否也和我一样,对小米电视的操作系统充满了好奇?想知道它到底运行的是哪个版本的安卓系...
intel芯片支持安卓系统吗 你有没有想过,那些在电脑上呼风唤雨的Intel芯片,是不是也能在安卓系统里大展身手呢?今天,就让我带...
安卓品牌哪个系统最好用,探寻最... 你有没有想过,手机里的安卓系统哪个品牌用起来最顺心呢?市面上这么多安卓手机,每个品牌都有自己的特色和...
安卓变苹果系统pdd,PDD系... 你知道吗?最近在互联网上掀起了一股热潮,那就是PDD(PDD,全名PDD转换器)这个神奇的小工具。它...
安卓系统电话录音权限,安卓系统... 你有没有发现,现在手机里的电话录音功能越来越普及了?这不,最近我在研究安卓系统的电话录音权限时,发现...
加速器国内安卓系统,国内安卓系... 你有没有发现,最近手机上的游戏越来越好玩了?这都得归功于那些默默无闻的加速器。今天,就让我带你一探究...
海信电视怎样到安卓系统,体验流... 亲爱的读者们,你是否曾好奇过,那些大屏幕上的智能电视是如何从传统的电视系统升级到安卓系统的呢?今天,...
安卓系统脚本开发方案,基于安卓... 你有没有想过,你的安卓手机里那些神奇的脚本是怎么来的?没错,就是安卓系统脚本开发方案!今天,就让我带...
安卓怎么运行云苹果系统,跨平台... 你有没有想过,在安卓手机上也能体验到云苹果系统的魅力呢?没错,今天就要来揭秘这个神奇的话题:安卓怎么...
安卓系统自动接收信息,便捷生活... 你知道吗?现在智能手机的功能越来越强大,我们的生活也因此变得更加便捷。但是,有时候这些强大的功能也会...
安卓系统升级不通知,不再打扰用... 你有没有遇到过这种情况?手机里安卓系统的更新通知突然消失了,就像它从人间蒸发了一样。这可真是让人又气...
苹果平板如何下载安卓系统,教你... 你有没有想过,你的苹果平板竟然也能装上安卓系统?是的,你没听错,就是那个以封闭著称的iOS系统,现在...
安卓10系统怎样升级 你有没有发现,你的安卓手机最近有点儿“懒洋洋”的?别急,别急,我来告诉你怎么给它来个“活力大升级”!...
安卓系统无法修改通知 你是不是也遇到了这个问题?安卓系统里的通知,怎么就那么固执,任凭你怎么设置,它就是不肯改头换面呢?别...
安卓平板系统游戏推荐,体验指尖... 你有没有发现,随着科技的飞速发展,安卓平板已经成为了我们生活中不可或缺的好伙伴呢?它不仅能够满足我们...
魅族系统是安卓内核,基于安卓内... 你知道吗?在手机操作系统界,有一个小众品牌可是藏着不少秘密呢!它就是魅族。今天,咱们就来聊聊魅族系统...
苹果系统是安卓的吗,揭秘两大操... 你有没有想过,那个我们每天不离手的苹果手机,它的系统竟然和安卓的不是一回事儿?没错,苹果系统和安卓系...
怎么关安卓系统广告推送,享受纯... 你是不是也被安卓手机上的广告推送搞得头疼不已?那些弹窗、横幅、悬浮窗,真是让人不胜其烦。别急,今天就...