社区讨论

求助,为什么80分啊啊啊

P1178到天宫做客参与者 3已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mi7csywx
此快照首次捕获于
2025/11/20 19:34
4 个月前
此快照最后确认于
2025/11/20 19:34
4 个月前
查看原帖
嗯,这个题很,我知道
本来打算A这个水题找信心的
然而……就只有80QAQQAQ死活改不上去了
应该是四舍五入的问题吧,少的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 条回复,欢迎继续交流。

正在加载回复...