3 条题解
-
0
赛后补题
最魔幻的一集,在考场上写出了大致框架,然后因为一个数据没初始化爆掉了,只有10分。
核心思想是对所有数据,先对前面要去的宾馆排序,再以时间从小到大排序,如果超时或者带不下就另开一辆。
话说这道题用py应该会费力一点,毕竟没有结构体要开class(大概,可能是因为我py水平差)
#include <bits/stdc++.h> using namespace std; struct node{ char p; int t; }no[10001]; bool cmp1(node l,node r){ return l.p == r.p?l.t<r.t:l.p<r.p; } signed main() { int n,v,w; cin>>n>>v>>w; char p; int a,b; for(int i=1;i<=n;i++){ cin>>p; no[i].p=p; cin>>p>>a>>p>>b; no[i].t=a*60+b; } sort(no+1,no+n+1,cmp1); int ans=1,t=no[1].t,k=1,lp=no[1].p; for(int i=2;i<=n;i++){ if(no[i].t>t+w or k>=v or no[i].p!=lp){ ans++; lp=no[i].p; t=no[i].t; k=1; } else { k++; } } cout<<ans; }
发牢骚:考场die码:
#include <bits/stdc++.h> using namespace std; struct node{ char p; int t; }no[10001]; bool cmp1(node l,node r){ return l.p == r.p?l.t<r.t:l.p<r.p; } signed main() { int n,v,w; cin>>n>>v>>w; char p; int a,b; for(int i=1;i<=n;i++){ cin>>p; no[i].p=p; cin>>a>>p>>b;//错误1,应为cin>>p>>a>>p>>b; no[i].t=a\*60+b; } sort(no+1,no+n+1,cmp1); int ans=0,t=-100,k=5,lp='A';//错误2,k值应初始化为no[1].t,t不知道为什么这个判断在第一次没有生效 for(int i=1;i<=n;i++){ if( k>=v or no[i].p!=lp){ ans++; lp=no[i].p; t=no[i].t; k=1; } else { k++; } } cout<<ans; }
信息
- ID
- 833
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 372
- 已通过
- 35
- 上传者