牛客小白月赛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();}
}

相关内容

热门资讯

电视安卓系统哪个品牌好,哪家品... 你有没有想过,家里的电视是不是该升级换代了呢?现在市面上电视品牌琳琅满目,各种操作系统也是让人眼花缭...
安卓会员管理系统怎么用,提升服... 你有没有想过,手机里那些你爱不释手的APP,背后其实有个强大的会员管理系统在默默支持呢?没错,就是那...
安卓系统软件使用技巧,解锁软件... 你有没有发现,用安卓手机的时候,总有一些小技巧能让你玩得更溜?别小看了这些小细节,它们可是能让你的手...
安卓系统提示音替换 你知道吗?手机里那个时不时响起的提示音,有时候真的能让人心情大好,有时候又让人抓狂不已。今天,就让我...
安卓开机不了系统更新 手机突然开不了机,系统更新还卡在那里,这可真是让人头疼的问题啊!你是不是也遇到了这种情况?别急,今天...
安卓系统中微信视频,安卓系统下... 你有没有发现,现在用手机聊天,视频通话简直成了标配!尤其是咱们安卓系统的小伙伴们,微信视频功能更是用...
安卓系统是服务器,服务器端的智... 你知道吗?在科技的世界里,安卓系统可是个超级明星呢!它不仅仅是个手机操作系统,竟然还能成为服务器的得...
pc电脑安卓系统下载软件,轻松... 你有没有想过,你的PC电脑上安装了安卓系统,是不是瞬间觉得世界都大不一样了呢?没错,就是那种“一机在...
电影院购票系统安卓,便捷观影新... 你有没有想过,在繁忙的生活中,一部好电影就像是一剂强心针,能瞬间让你放松心情?而我今天要和你分享的,...
安卓系统可以写程序? 你有没有想过,安卓系统竟然也能写程序呢?没错,你没听错!这个我们日常使用的智能手机操作系统,竟然有着...
安卓系统架构书籍推荐,权威书籍... 你有没有想过,想要深入了解安卓系统架构,却不知道从何下手?别急,今天我就要给你推荐几本超级实用的书籍...
安卓系统看到的炸弹,技术解析与... 安卓系统看到的炸弹——揭秘手机中的隐形威胁在数字化时代,智能手机已经成为我们生活中不可或缺的一部分。...
鸿蒙系统有安卓文件,畅享多平台... 你知道吗?最近在科技圈里,有个大新闻可是闹得沸沸扬扬的,那就是鸿蒙系统竟然有了安卓文件!是不是觉得有...
宝马安卓车机系统切换,驾驭未来... 你有没有发现,现在的汽车越来越智能了?尤其是那些豪华品牌,比如宝马,它们的内饰里那个大屏幕,简直就像...
p30退回安卓系统 你有没有听说最近P30的用户们都在忙活一件大事?没错,就是他们的手机要退回安卓系统啦!这可不是一个简...
oppoa57安卓原生系统,原... 你有没有发现,最近OPPO A57这款手机在安卓原生系统上的表现真是让人眼前一亮呢?今天,就让我带你...
安卓系统输入法联想,安卓系统输... 你有没有发现,手机上的输入法真的是个神奇的小助手呢?尤其是安卓系统的输入法,简直就是智能生活的点睛之...
怎么进入安卓刷机系统,安卓刷机... 亲爱的手机控们,你是否曾对安卓手机的刷机系统充满好奇?想要解锁手机潜能,体验全新的系统魅力?别急,今...
安卓系统程序有病毒 你知道吗?在这个数字化时代,手机已经成了我们生活中不可或缺的好伙伴。但是,你知道吗?即使是安卓系统,...
奥迪中控安卓系统下载,畅享智能... 你有没有发现,现在汽车的中控系统越来越智能了?尤其是奥迪这种豪华品牌,他们的中控系统简直就是科技与艺...