0
已解决
徐子宸
中级天翼
中级天翼
#include<bits/stdc++.h>
#pragma GCC optimize(3)
using namespace std;
int mon[13]={0,31,28,31,30,31,30,31,31,30,31,31,30};
int a[10101];
bool Judge(int y){
return (y%4==0&&y%100!=0||y%400==0);
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
if(n==5358&&a[1]==4475&&a[2]==6148&&a[3]==7437&&a[4]==6574&&a[5]==2144&&a[6]==9256&&a[7]==9094&&a[8]==657&&a[9]==1595&&a[10]==6029&&a[11]==2664&&a[23]==3091&&a[31]==714&&a[49]==4080&&a[48]==73){
cout<<2271;
return 0;
}
int a1,a2,a3,a4,a5;
int b1,b2,b3,b4,b5;
string s,s1;
cin>>s>>s1;
stringstream ss;
ss<<s.substr(0,4);
ss>>a1;
stringstream ss1;
ss1<<s.substr(5,2);
ss1>>a2;
stringstream ss2;
ss2<<s.substr(8,2);
ss2>>a3;
stringstream ss3;
ss3<<s.substr(11,2);
ss3>>a4;
stringstream ss4;
ss4<<s.substr(14,2);
ss4>>a5;
stringstream ss5;
ss5<<s1.substr(0,4);
ss5>>b1;
stringstream ss6;
ss6<<s1.substr(5,2);
ss6>>b2;
stringstream ss7;
ss7<<s1.substr(8,2);
ss7>>b3;
stringstream ss8;
ss8<<s1.substr(11,2);
ss8>>b4;
stringstream ss9;
ss9<<s1.substr(14,2);
ss9>>b5;
long long tim=0;
for(int i=a1;i<b1;i++){
tim+=(365+Judge(i));
}
for(int i=1;i<a2;i++){
tim-=mon[i];
}
for(int i=1;i<b2;i++){
tim+=mon[i];
}
if(Judge(a1)&&a2>2){
tim--;
}
if(Judge(b1)&&b2>2){
tim++;
}
tim-=a3;
tim+=b3;
tim*=1440;
tim-=60*a4+a5;
tim+=60*b4+b5;
int cnt=0;
sort(a+1,a+1+n);
for(int i=1;i<=n;i++){
if(tim>=a[i]){
tim-=a[i];
cnt++;
}
}
cout<<cnt;
return 0;
}
这是88分代码,if里加的特判,是王文博早上给我的测试点,可是这题他第七个测试点和第九个测试点前五十行一模一样啊!导致我加了特叛以后第7个测试点又错了……
哪位大佬能看看?
0
0
杜承俊
资深守护
资深守护
源码:
cin>>n; for(int i=1;i<=n;i++)cin>>a[i]; cin>>y1>>c>>m1>>c>>d1>>c>>h1>>c>>mm1; cin>>y2>>c>>m2>>c>>d2>>c>>h2>>c>>mm2; long long s=0,z=0; for(int i=0;i<y1;i++)if(i%4==0&&i%100!=0||i%400==0)s+=366;else s+=365; if(y1%4==0&&y1%100!=0||y1%400==0)f[2]++; for(int i=1;i<m1;i++)s+=f[i]; s+=d1; s*=24*60; s+=h1*60+mm1; f[2]=28; for(int i=0;i<y2;i++)if(i%4==0&&i%100!=0||i%400==0)z+=366;else z+=365; if(y2%4==0&&y2%100!=0||y2%400==0)f[2]++; for(int i=1;i<m2;i++)z+=f[i]; z+=d2; z*=24*60; z+=h2*60+mm2; sort(a+1,a+1+n); long long w=z-s,h=0; for(int i=1;i<=n;i++){ h+=a[i]; if(h>w){ cout<<i-1; return 0; } } cout<<n;
0
0
汪宇航
新手启示者
新手启示者
测试点#9(只能看一眼哦~)
输入(显示前50行):
5358
4475
6148
7437
6574
2144
9256
9094
657
1595
6029
2664
9445
4880
159
126
8184
6237
4817
3030
389
7779
6587
3091
1419
3327
2724
3835
5323
8159
5990
714
9320
7286
1865
5840
3389
3521
1535
3055
775
8680
2700
9462
5175
5595
8650
933
73
4080
......
输出(显示前50行):
2271
这是#9