请问这样做为什么AC四个点,其他有TLE,WA
查看原帖
请问这样做为什么AC四个点,其他有TLE,WA
1275384
Shrimp123楼主2024/2/25 15:51
#include<bits/stdc++.h>
using namespace std;
int maxx=0;
int k[13]= {0,31,29,31,30,31,30,31,31,30,31,30,31};
bool cmp(vector<int>a,vector<int>b) {
    return a[0]<b[0]||(a[0]==b[0]&&a[1]<b[1]);
}
int f(int a,int b,int x,int y) {
    int sum=0;
    for(;;) {
        if(x==a) {
            sum+=b-y-1;
            //cout<<sum<<endl;
            return sum;
        }
        if(y<k[x]) {
            sum+=k[x]-y+1;
            y=1;
            x++;
        }
    }
}
int main()
{
    int n;
    cin>>n;
    vector<vector<int>>a(n,vector<int>(2));
    for(int i=0; i<n; i++)cin>>a[i][0]>>a[i][1];
    sort(a.begin(),a.end(),cmp);
    //for(int i=0; i<n; i++)cout<<a[i][0]<<" "<<a[i][1]<<endl;
    int x=1,y=1;
    for(int i=0; i<n; i++) {
        maxx=max(maxx,f(a[i][0],a[i][1],x,y));
        //cout<<f(a[i][0],a[i][1],x,y)<<endl;
        x=a[i][0];
        y=a[i][1];
    }
    //cout<<maxx;
    float tol=float(86400)/366*maxx;
    //cout<<tol;
    float i=tol-int(tol);
    //cout<<i;
    if(i>=0.5)cout<<int(tol+1);
    else cout<<int(tol);
    return 0;
}
2024/2/25 15:51
加载中...