侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

CodeforcesRound#551(Div. 2)(A-C题解)

2023-03-20 星期一 / 0 评论 / 0 点赞 / 77 阅读 / 10522 字

http://codeforces.com/contest/1153/problem/A 题意:有n辆车,有一个人从第m站上车。接下来n行,每行两个数a,b代表有一路车第一站到a站,然后每隔b站停一次

... .

http://codeforces.com/contest/1153/problem/A

题意:有n辆车,有一个人从第m站上车。接下来n行,每行两个数a,b代表有一路车第一站到a站,然后每隔b站停一次。问你这个人会上哪个车。输出任意答案即可。

思路:数据1e5,直接标记会到的站点暴力跑就可以了。

.

.
 1 #include <bits/stdc++.h> 2 using namespace std; 3  4 int n,m; 5 int a[100005]; 6 int d[100005]; 7 int p[300005]; 8 int main(){ 9     cin >> n >> m;10     memset(p,0,sizeof(p));11     for(int i = 1;i <= n;i ++){12         cin >> a[i] >> d[i];13         int t = a[i];14         while(t <= 300000){15             p[t] = i;16             t += d[i];17         }18     }19     for(int i = m;i <= 300000;i ++){20         if(p[i] != 0){21             cout << p[i] << endl;22             break;23         }24     }25 26     return 0;27 }
. A .

 

 

http://codeforces.com/contest/1153/problem/B

题意:第一行三个数代表某种由1*1*1的积木搭成的一个形状的长宽高。第二行m个数代表正视图的每个格子有多高。第三行n个数为左视图的每隔各自有多高。下面n*m个数代表俯视图的每个格子是否有积木。

   输出n*m个数代表俯视图,不过要输出每个点的有几块积木。输出任意答案即可。

思路:ans[i][j] = min(front[j],left[i])。

.

.
 1 #include <bits/stdc++.h> 2 using namespace std; 3  4 int n,m,k; 5 int fr[105]; 6 int lf[105]; 7 int top[105][105]; 8 int ans[105][105]; 9 int main(){10     cin >> n >> m >> k;11     memset(ans,sizeof(ans));12     for(int i = 1;i <= m;i ++){13         cin >> fr[i];14     }15     for(int i = 1;i <= n;i ++){16         cin >> lf[i];17     }18     for(int i = 1;i <= n;i ++){19         for(int j = 1;j <= m;j ++){20             cin >> top[i][j];21         }22     }23     for(int i = 1;i <= n;i ++){24         for(int j = 1;j <= m;j ++){25             if(top[i][j]){26                 ans[i][j] = min(lf[i],fr[j]);27             }28         }29     }30     for(int i = 1;i <= n;i ++){31         for(int j = 1;j <= m;j ++){32             if(j != 1){cout << " ";}33             cout << ans[i][j];34         }cout << endl;35     }36 37 38 39     return 0;40 }
. B .

 

 

http://codeforces.com/contest/1153/problem/C

题意:给一串只含有‘(‘,‘)‘,‘?‘的字符串,你要将问好换成左右括号,问你全部将问号填上之后,会不会形成一个所有前缀串的括号都不匹配,但是全串的括号匹配的串。

思路:很明显,初始串长度必须为偶数,左右括号数量不能超过串长的一半(这条卡了我两发,有点蠢)。然后贪心填写左括号直到左括号用完。最后判断就行了。

.

.
 1 #include <bits/stdc++.h> 2 using namespace std; 3  4 int n,m; 5 char in[300005]; 6 int main(){ 7     cin >> n; 8     scanf("%s",in); 9     if(n % 2){cout << ":(" << endl;return 0;}10     int left = 0;11     int right = 0;12     for(int i = 0;i < n;i ++){13         if(in[i] == (){left ++;}14         if(in[i] == )){right ++;}15     }16     left = n / 2 - left;17     if(left < 0){cout << ":(" << endl;return 0;}18     if(right > n / 2){cout << ":(" << endl;return 0;}19     for(int i = 0;i < n;i ++){20         if(in[i] == ?){21             if(left){22                 in[i] = (;23                 left --;24             }25             else{26                 in[i] = );27             }28         }29     }30     //printf("%s/n",in);31     int f = 1,cnt = 0;32     for(int i = 0;i < n;i ++){33         if(in[i] == (){34             cnt ++;35         }36         else{37             if(cnt){38                 cnt --;39                 if(cnt == 0 && i != n - 1){40                     f = 0;41                 }42             }43             else{44                 f = 0;45             }46         }47     }48     if(f){49         printf("%s/n",in);50     }51     else{52         cout << ":(" << endl;53     }54 55     return 0;56 }
. C .

 

 

http://codeforces.com/contest/1153/problem/D

D题留坑,感觉是有一种方式最优的,还没想到

. .. ...

广告 广告

评论区