CF Round551 Div2 题解
A
题意:给定一个时间点t与n种车,每种车首班车时间给定,间隔时间不变,问从t点开始能最先坐上哪一辆车。
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。基础的模拟,不多赘述。
1 #include<iostream>
2 #include<algorithm>
3 #include<cmath>
4 #include<vector>
5 #include<string>
6 #include<queue>
7 #include<stack>
8 using namespace std; 9 int n,t,s,d,ans=2147483640,ansp; 10 int main(){ 11 ios::sync_with_stdio(false); 12 cin>>n>>t; 13 for (int i=1; i<=n; i++) { 14 cin>>s>>d; 15 int now=s; 16 while (now<t) now+=d; 17 if (now-t<ans) ans=now-t,ansp=i; 18 //ans=min(now-t,ans);
19 } 20 cout<<ansp<<endl; 21 return 0; 22 }
B
题意:
有一堆积木,可以用一个二维平面,每个单元有一个高度数值来表示。现给出从积木前方、左方、上方看的形状,需构造一种方案,满足所有情况。
因为有多种情况,只需给出一种即可,所以就先考虑从上往下看的情况。当从上往下看有积木时,此单元的高度设成此点横竖两条看去的高度的较小值即可。
1 #include<iostream>
2 #include<algorithm>
3 #include<cmath>
4 #include<vector>
5 #include<string>
6 #include<queue>
7 #include<stack>
8 using namespace std; 9 int n,m,h; 10 int a[107],b[107],c[107][107],ans[107][107]; 11 int main(){ 12 ios::sync_with_stdio(false); 13 cin>>n>>m>>h; 14 for (int i=1; i<=m; i++) cin>>a[i]; 15 for (int i=1; i<=n; i++) cin>>b[i]; 16 for (int i=1; i<=n; i++) 17 for (int j=1; j<=m; j++) 18 cin>>c[i][j]; 19 for (int i=1; i<=n; i++) 20 for (int j=1; j<=m; j++) if (c[i][j]==1){ 21 ans[i][j]=min(b[i],a[j]); 22 } 23 for (int i=1; i<=n; i++) { 24 for (int j=1; j<=m; j++) cout<<ans[i][j]<<" "; 25 cout<<endl; 26 } 27 return 0; 28 }

更多精彩