社区讨论
求助,为什么80分啊啊啊
P1178到天宫做客参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mi7csywx
- 此快照首次捕获于
- 2025/11/20 19:34 4 个月前
- 此快照最后确认于
- 2025/11/20 19:34 4 个月前
嗯,这个题很水,我知道
本来打算A这个水题找信心的
然而……就只有80死活改不上去了
应该是四舍五入的问题吧,少的20分的2个点都只差1,但却就是改不出来,希望各位神犇看一下,耽误不了多久的
代码如下:
CPP#include<bits/stdc++.h>
using namespace std;
int n,a[1002],b[1002],ri[15]={0,31,29,31,30,31,30,31,31,30,31,30,31};
int TQL=0;
int zyj_Orz(int y1,int r1,int y2,int r2)
{
int QAQ=0;
if(y1+2<=y2)
{
for(int i=y1+1;i<=y2-1;i++)
{
QAQ+=ri[i];
}
QAQ+=(ri[y1]-r1);
QAQ+=(r2-1);
return QAQ;
}
if(y1==y2)
return r2-r1-1;
if(y1+1==y2)
return (ri[y1]-r1)+(r2-1);
}
int main()
{
//freopen("heaven.in","r",stdin);
//freopen("heaven.out","w",stdout);
cin>>n;
if(n==0)
{
cout<<86400;
return 0;
}
if(n==366)
{
cout<<0;
return 0;
}
a[1]=1;b[1]=1;
for(int i=2;i<=n+1;i++)
scanf("%d%d",&a[i],&b[i]);
n++;
if(a[n]!=12&&b[n]!=31)
{n++;a[n]=12;b[n]=31;}
for(int i=n;i>1;i--)
{
for(int j=1;j<i;j++)
{
if(a[j]>a[j+1])
{
swap(a[j],a[j+1]);
swap(b[j],b[j+1]);
}
}
}
for(int i=1;i<n;i++)
if(b[i]>b[i+1]&&a[i]==a[i+1])
{
swap(b[i],b[i+1]);
i-=2;
}
for(int i=1;i<=n-1;i++)
{
int HA=zyj_Orz(a[i],b[i],a[i+1],b[i+1]);
if(HA>TQL)TQL=HA;
}
TQL=(TQL*1.0*24*3600/366)+0.5;
cout<<TQL;
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...