Codeforces Round #575 (Div. 3) A B C

末蓝、 2021-11-16 09:18 296阅读 0赞

Codeforces Round #575 (Div. 3)

A

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. const int N = 1e5+100;
  5. int n;
  6. ll a,sum=0;
  7. int main(){
  8. cin >> n;
  9. while(n--){
  10. sum=0;
  11. for(int i=0;i<3;i++){
  12. cin >> a;
  13. sum += a;
  14. }
  15. cout << sum/2ll << endl;
  16. }
  17. return 0;
  18. }

  B

注意最后一个必须输出n

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. const int N = 2e5+100;
  5. int q;
  6. int n,k;
  7. int a[N];
  8. int vis[N];
  9. int res[N];
  10. int main(){
  11. cin >> q;
  12. while(q--){
  13. cin >> n >> k;
  14. memset(vis,0,sizeof(int)*(n+1));
  15. for(int i=0;i<n;i++){
  16. cin >> a[i];
  17. }
  18. int flag = 0;
  19. ll sum =0 ;
  20. int cnt = 0;
  21. for(int i=0;i<n;i++){
  22. sum += a[i];
  23. if(!flag && sum%2 == 1){
  24. cnt ++;
  25. flag = 1;
  26. vis[i] = 1;
  27. }
  28. else if(flag && sum%2==0){
  29. cnt++;
  30. flag = 0;
  31. vis[i] =1;
  32. }
  33. }
  34. if(cnt<k){
  35. cout << "NO\n";
  36. }
  37. else{
  38. if(cnt%2!=k%2){
  39. cout << "NO\n";
  40. }
  41. else{
  42. cout << "YES\n";
  43. int pp=1;
  44. res[pp] = n;
  45. for(int i=n-2;i>=0;i--){
  46. if(vis[i]){
  47. pp++;
  48. if(vis[n-1])res[pp] = i+1;
  49. else res[pp] = i;
  50. }
  51. if(pp == k) break;
  52. }
  53. for(int i=k;i>=1;i--){
  54. cout << res[i] << (i==1?"\n":" ");
  55. }
  56. }
  57. }
  58. }
  59. return 0;
  60. }

  C

根据每个机器人的移动范围,不断缩小所有机器人可达范围

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. const int N = 1e5+100;
  5. int q;
  6. int n;
  7. int x[N],y[N];
  8. int f[N][4];
  9. int main(){
  10. scanf("%d",&q);
  11. while(q--){
  12. scanf("%d",&n);
  13. int r=1e5,l=-1e5,b=1e5,u=-1e5;
  14. for(int i=1;i<=n;i++){
  15. scanf("%d%d",&x[i],&y[i]);
  16. for(int j=0;j<4;j++){
  17. scanf("%d",&f[i][j]);
  18. }
  19. if(f[i][0]==0) l=max(l,x[i]);
  20. if(f[i][1]==0) b=min(b,y[i]);
  21. if(f[i][2]==0) r=min(r,x[i]);
  22. if(f[i][3]==0) u=max(u,y[i]);
  23. }
  24. if(l>r||u>b){
  25. cout << "0\n";
  26. }
  27. else{
  28. cout << "1 " << l << " " << u << endl;
  29. }
  30. }
  31. return 0;
  32. }

  

转载于:https://www.cnblogs.com/YJing814/p/11244179.html

发表评论

表情:
评论列表 (有 0 条评论,296人围观)

还没有评论,来说两句吧...

相关阅读