专栏文章

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 条评论,欢迎与作者交流。

正在加载评论...