专栏文章
5.20错题总结
个人记录参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mip8ey3g
- 此快照首次捕获于
- 2025/12/03 07:51 3 个月前
- 此快照最后确认于
- 2025/12/03 07:51 3 个月前
T3(P9241 [蓝桥杯 2023 省 B] 飞机降落)
考试思路:按照输入顺序模拟
考试代码:
CPP#include<bits/stdc++.h>
using namespace std;
struct N
{
int t,d,l;
}a[15];
void solve()
{
int n,t=0,d=0,l=0,jlsj=0;
bool flag=0;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i].t>>a[i].d>>a[i].l;
for(int i=1;i<=n;i++)
{
if(a[i].t>=jlsj)
{
t=a[i].t;
d=a[i].d;
l=a[i].l;
jlsj=t+l;
}
else if(a[i].t<jlsj&&a[i].t+a[i].d>=jlsj)
{
t=a[i].t;
d=a[i].d;
l=a[i].l;
jlsj+=l;
}
else
{
flag=1;
break;
}
}
if(flag==1)
cout<<"NO\n";
else
cout<<"YES\n";
return ;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t;
cin>>t;
while(t--)
solve();
return 0;
}
错误原因:没想出正解
正确思路:直接暴搜
正确代码:
CPP#include<bits/stdc++.h>
using namespace std;
const int N=15;
#define int long long
struct node
{
int t,d,l,r;
}f[N];
int t,n,vis[N];
bool flag;
void dfs(int dep,int now)
{
if(dep==n)
{
flag=1;
return ;
}
for(int i=1;i<=n;i++)
{
if(!vis[i]&&f[i].r<now)
return ;
if(!vis[i]&&f[i].r>=now)
{
vis[i]=1;
if(f[i].l>now)
dfs(dep+1,f[i].l+f[i].t);
else
dfs(dep+1,now+f[i].t);
vis[i]=0;
}
}
}
string solve()
{
cin>>n;
flag=0;
int k;
for(int i=1;i<=n;i++)
{
cin>>f[i].l>>k>>f[i].t;
f[i].r=f[i].l+k;
}
for(int i=1;i<=n;i++)
{
vis[i]=1;
dfs(1,f[i].l+f[i].t);
vis[i]=0;
}
if(flag)
return "YES\n";
return "NO\n";
}
signed main()
{
int T;
cin>>T;
while(T--)
cout<<solve();
return 0;
}
T4(P1067 [NOIP 2009 普及组] 多项式输出)
考试思路:直接按照题目模拟
考试代码:
CPP#include<bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n,a;
cin>>n>>a;
if(a<0)
cout<<'-';
a=abs(a);
cout<<a<<"x^"<<n;
for(int i=n-1;i>=0;i--)
{
cin>>a;
if(a==0)
continue;
if(a<0)
cout<<"-";
else
cout<<"+";
a=abs(a);
if(a==1&&i!=0)
{
if(i==1)
cout<<"x";
else if(i!=0)
cout<<"x^"<<i;
continue;
}
if(i==1)
cout<<a<<"x";
else if(i==0)
cout<<a;
else
cout<<a<<"x^"<<i;
}
return 0;
}
错误原因:没有判断n为0时
正确思路:直接按照题目模拟
正确代码:
CPP#include<bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n,a;
cin>>n>>a;
if(a<0)
cout<<'-';
a=abs(a);
if(a==1)
{
if(n==0)
cout<<a;
else
cout<<"x^"<<n;
}
else
cout<<a<<"x^"<<n;
for(int i=n-1;i>=0;i--)
{
cin>>a;
if(a==0)
continue;
if(a<0)
cout<<"-";
else
cout<<"+";
a=abs(a);
if(a==1&&i!=0)
{
if(i==1)
cout<<"x";
else if(i!=0)
cout<<"x^"<<i;
continue;
}
if(i==1)
cout<<a<<"x";
else if(i==0)
cout<<a;
else
cout<<a<<"x^"<<i;
}
return 0;
}
T5(P7667 [JOI 2018 Final] 美术展览 / Art Exhibition)
考试思路:二维前缀和+暴力
考试代码:
CPP#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,sum[500005],mx=-1e9;
struct N
{
int cc,jz;
}a[500005];
bool cmp(N x,N y)
{
if(x.cc!=y.cc)
return x.cc<y.cc;
return x.jz<y.jz;
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i].cc>>a[i].jz;
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++)
sum[i]+=sum[i-1]+a[i].jz;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
int mxx=-1e9,mnx=1e9;
for(int z=j;z<=i;z++)
{
mxx=max(mxx,a[z].cc);
mnx=min(mnx,a[z].cc);
}
mx=max(mx,sum[i]-sum[j-1]-(mxx-mnx));
}
}
cout<<mx;
return 0;
}
错误原因:方法错了
正确思路:前缀和
正确代码:
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=500005;
int n,ans,dp[N];
struct node
{
int a,b;
}s[N];
bool cmp(node aa,node bb)
{
return aa.a<bb.a;
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++)
cin>>s[i].a>>s[i].b;
sort(s+1,s+n+1,cmp);
for(int i=1;i<n;i++)
dp[i]=s[i].b-s[i+1].a+s[i].a;
int maxi=0;
for(int i=1;i<=n;i++)
{
int t=s[i].b;
ans=max(ans,t+maxi);
maxi=max(maxi+dp[i],0ll);
}
cout<<ans;
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...