- 赵一静 的博客
国庆集训10月6日DAY5题解
- @ 2024-10-6 16:58:26
切数字乘法(枚举)
思路
直接暴力枚举,枚举每一个分界点,再记录最大值。
代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
string s;
int solve(int cnt){
int a=0,b=0;
for(int i=0;i<=cnt;i++){
a=a*10+s[i]-'0';
}
for(int i=cnt+1;i<s.size();i++){
b=b*10+s[i]-'0';
}
return a*b;
}
signed main(){
freopen("num.in","r",stdin);
freopen("num.out","w",stdout);
cin >>s;
int max_n=-2e9;
for(int i=0;i<s.size();i++){
max_n=max(max_n,solve(i));
}
cout <<max_n;
return 0;
}
合并班级(模拟)
思路没想到的原因
没有考虑如果成绩相同时的规则,导致只拿了分。
思路
首先,把两个班的成绩排名排好序,记录当前的排名。然后在按照成绩合并两个班的名次。
最后,再来按照题目要求计算所有的落差值。
代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int tt=2e5+10;
struct node{
int x,y,num;
}f[tt];
int a[tt],b[tt];
bool cmp_1(int a,int b){
return a>b;
}
bool cmp_2(node a,node b){
return a.num>b.num;
}
signed main(){
freopen("class.in","r",stdin);
freopen("class.out","w",stdout);
int n,m;
cin >>n>>m;
for(int i=1;i<=n;i++){
cin >>a[i];
}
for(int i=1;i<=m;i++){
cin >>b[i];
}
sort(a+1,a+1+n,cmp_1);
sort(b+1,b+1+m,cmp_1);
for(int i=1;i<=n;i++){
if(i!=1&&a[i]==a[i-1]){
f[i].x=f[i-1].x;
}else{
f[i].x=i;
}
f[i].num=a[i];
}
for(int i=1;i<=m;i++){
if(i!=1&&b[i]==b[i-1]){
f[i+n].x=f[i+n-1].x;
}else{
f[i+n].x=i;
}
f[i+n].num=b[i];
}
sort(f+1,f+1+n+m,cmp_2);
int ans=0;
for(int i=1;i<=n+m;i++){
if(i!=1&&f[i].num==f[i-1].num){
f[i].y=f[i-1].y;
}else{
f[i].y=i;
}
ans+=(f[i].x-f[i].y)*(f[i].x-f[i].y);
}
cout <<ans;
return 0;
}
彩彩玩跳棋(DP)
思路没想到的原因
用了暴搜,但还是了。
思路
状态表示:表示从第个位置跳跃最左能跳到的位置。
状态计算:
代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int tt=2e5+10;
int a[tt];
int dp[tt];
signed main(){
freopen("chess.in","r",stdin);
freopen("chess.out","w",stdout);
int n,m;
cin >>n>>m;
for(int i=1;i<=m;i++){
int x;
cin >>x;
a[x]++;
}
for(int i=1;i<=n;i++){
if(a[i]==0) a[i]=a[i-1];
else a[i]=i;
}
int max_n=0;
for(int i=1;i<=n;i++){
if(a[i]==1) continue;
int d=i-a[i];
int res=a[i]-d;
if(res<=0) continue;
if(res<=a[a[i]-1]) continue;
dp[i]=dp[res]+d*2;
max_n=max(max_n,dp[i]);
}
cout <<max_n;
return 0;
}
彩彩玩扫雷(二维差分)
待更新……