专栏文章
1.8比赛总结
个人记录参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miqk8hri
- 此快照首次捕获于
- 2025/12/04 06:10 3 个月前
- 此快照最后确认于
- 2025/12/04 06:10 3 个月前
我的刷怪做题之路
P1115
错因:
数组开小了
正确代码
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,dp[200005],a[200005];//dp[i]表示以i结尾的最大数列和
signed main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
dp[1]=a[1];//边界条件
for(int i=2;i<=n;i++)
{
dp[i]=max(a[i],dp[i-1]+a[i]);//状态转移方程
}
int maxi=-1e9;
for(int i=1;i<=n;i++)
maxi=max(maxi,dp[i]);//求最大的dp
cout<<maxi;
return 0;
}
..........
P6702
错因:
不晓得 思路错误
修改代码
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,cnt;
signed main()
{
cin>>n;
while(n%5)
n-=3,cnt++;
if(n<0)
{
cout<<-1;
return 0;
}
cout<<cnt+n/5;
return 0;
}
P1057
这题真不想说,一题数字金字塔的翻版给我们整出了新花样
代码
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
int dp[1005][1005];
signed main()
{
int n,m;
cin>>n>>m;
dp[0][1]=1;
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
if(j==1)
dp[i][1]=dp[i-1][2]+dp[i-1][n];
else if(j==n)
dp[i][n]=dp[i-1][1]+dp[i-1][n-1];
else
dp[i][j]=dp[i-1][j-1]+dp[i-1][j+1];
}
}
cout<<dp[m][1];
return 0;
}
P1233
噩梦降至,我族者速速归回
无法形容的难度,😭😭😭
代码
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
struct N{
int l,w;
}a[50005];
int dp[50005];
int cmp(N x,N y)
{
if(x.l==y.l)
return x.w<y.w;
return x.l<y.l;
}
signed main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i].l>>a[i].w;
sort(a+1,a+n+1,cmp);
int maxi=1;
for(int i=1;i<=n;i++)
{
dp[i]=1;
for(int j=1;j<i;j++)
{
if(a[j].l<a[i].l and a[j].w>a[i].w)
{
dp[i]=max(dp[i],dp[j]+1);
}
}
maxi=max(maxi,dp[i]);
}
cout<<maxi;
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...