天之神11月邀请赛&排位赛题解
2024-12-02 18:22:18
发布于:广东
天之神11月邀请赛&排位赛题解重磅推出!分数大于等于 的选手可私信队长(或我)获得电影奖励!
正文
T1 | 天之神团队200人庆典
思路:无,直接输出即可
AC Code
#include <bits/stdc++.h>
using namespace std;
int main() {
cout << "恭喜天之神团队满200人辣!"; // 输出
return 0;
}
T2 | 化学
思路:循环计算,直到结果是单位数
AC Code
#include <bits/stdc++.h>
using namespace std;
int main() {
string s; // 字符串类型
cin >> s;
long long sum;
while (s.size() != 1) {
sum = 0;
for (auto &i : s)
sum += i - '0'; // 统计
s = to_string(sum); // to_string 用于将整形数据转 string
}
cout << s;
return 0;
}
T3 | 宴会
思路:枚举每一组数据,并计算得出结果
AC Code
#include <bits/stdc++.h>
using namespace std;
int main() {
int n; cin >> n;
string a, b, c, ans;
cin >> a >> b >> c;
for (int i = 0; i < n; i ++) {
int sum = 0;
sum += (a[i] - '0') * 26 * 26;
sum += (b[i] - 'A') * 26;
sum += (c[i] - 'a');
for (int i = 0; i < max(0, 4 - int(to_string(sum).size())); i ++)
ans += "0"; // 补零
ans += to_string(sum); // 累计答案
}
cout << ans;
return 0;
}
T4 | 方格图
思路:使用动态规划和前缀和数组
AC Code
#include <bits/stdc++.h>
using namespace std;
int sum[105][105], a[105][105], f[105][105], n, m;
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i ++)
for (int j = 1; j <= m; j ++) {
cin >> a[i][j];
sum[i][j] = sum[i - 1][j] + a[i][j];
}
f[1][1] = a[1][1];
for (int i = 2;i <= n;i ++)
f[i][1] = f[i - 1][1] + a[i][1];
for (int j = 2; j <= m; j ++)
for (int i = 1; i <= n; i ++) {
f[i][j] = f[i][j - 1] + a[i][j];
for (int k = 1; k < i; k ++)
f[i][j] = max(f[i][j], f[k][j - 1] + sum[i][j] - sum[k - 1][j]);
for (int k = i + 1; k <= n; k ++)
f[i][j]=max(f[i][j],f[k][j-1]+sum[k][j]-sum[i-1][j]);
}
cout << f[n][m];
return 0;
}
T5 | 旅行计划
思路:先使用暴力方法,再寻找规律优化
AC Code
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
int p[10005], c[10005], sum[10005];
int ans, val = 0x3f3f3f3f;
cin >> n;
for (int i = 1; i <= n; i ++) {
cin >> p[i] >> c[i];
sum[i] = sum[i - 1] + c[i - 1];
}
for (int i = 1; i <= n; i ++) {
val = min(val + c[i - 1], p[i]);
ans += val;
}
cout << ans;
return 0;
}
T6 | 小key的字符游戏
思路:寻找规律,注意输出可能超过 的数据范围
AC Code
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
ll a[1005],n,sum,l=1;
void gjc(){
ll t=0;
for(int i=1000;i>0;i--){
a[i]*=26;
a[i]+=t;
t=a[i]/10;
a[i]%=10;
}
}
int main(){
cin>>n;
if(n<3){
cout<<0;
return 0;
}
a[1000]=n*(n-1)*(n-2)/6;
for(int i=1;i<=(n-3);i++){
gjc();
}
while(a[l]==0&&l<=1000) l++;
for(int i=l;i<=1000;i++) cout<<a[i];
return 0;
}
再次感谢大家的参与!
欢迎各位大佬进入本团!
全部评论 2
顶
昨天 来自 福建
0顶
昨天 来自 广东
0
有帮助,赞一个