CF Round551 Div2 题解

题意:给定一个时间点t与n种车,每种车首班车时间给定,间隔时间不变,问从t点开始能最先坐上哪一辆车。

基础的模拟,不多赘述。

 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 }

猜你喜欢

转载自www.cnblogs.com/Robinson828/p/10706097.html
今日推荐