title: CodeForces-Round#684-Div.2
tags:

  • ACM
  • CF
    abbrlink: 676fcf4a
    date: 2020-11-18 11:52:18

A. Buy the String

  1. #include<iostream>
  2. #include<cstdio>
  3. using namespace std;
  4. char c[1005];
  5. int main(){
  6. int T;
  7. int sum_1=0,sum_0=0,ans;
  8. cin>>T;
  9. while(T--)
  10. {
  11. int n,c0,c1,h;
  12. cin>>n>>c0>>c1>>h;
  13. for(int i=0;i<n;i++)
  14. {
  15. cin>>c[i];
  16. if(c[i]=='1') sum_1++;
  17. else sum_0++;
  18. }
  19. //cout<<sum_0<<endl<<sum_1<<endl;
  20. ans=c0*sum_0+c1*sum_1;
  21. /*if(c0==c1)
  22. ans=c0*sum_0+c1*sum_1;
  23. if(c0>c1)
  24. ans=min((c1*(sum_1+sum_0))+sum_0*h, ans);
  25. if(c0<c1)
  26. ans=min(c0*(sum_1+sum_0)+sum_1*h, ans);*/
  27. for(int i=1;i<=sum_0;i++)
  28. {
  29. int now=(i*h)+((sum_1+i)*c1)+(sum_0-i)*c0;
  30. ans=min(ans, now);
  31. }
  32. for(int i=1;i<=sum_1;i++)
  33. {
  34. int now=(i*h)+((sum_0+i)*c0)+(sum_1-i)*c1;
  35. ans=min(ans, now);
  36. }
  37. cout<<ans<<endl;
  38. ans=0; sum_1=0; sum_0=0;
  39. }
  40. }

B. Sum of Medians

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. #include<vector>
  5. using namespace std;
  6. char c[1005];
  7. int main(){
  8. int T;
  9. int sum_1=0,sum_0=0,ans;
  10. cin>>T;
  11. while(T--)
  12. {
  13. int n,k;
  14. cin>>n>>k;
  15. int m=n*k;
  16. vector<int>a(m);
  17. for(int i=0;i<m;i++)
  18. {
  19. cin>>a[i];
  20. }
  21. long long tot=0;
  22. if(n==2)
  23. {
  24. for(int i=0;i<m;i+=2)
  25. tot+=a[i];
  26. cout<<tot<<endl;
  27. continue;
  28. }
  29. int inter=(n+1)/2;
  30. int left=n-inter;
  31. left+=1;
  32. int x=1,in=0;
  33. for(int i=m-1;i>=0;i--)
  34. {
  35. if(x%left==0)
  36. {
  37. tot+=a[i];
  38. in++;
  39. }
  40. x+=1;
  41. if(in>=k) break;
  42. }
  43. cout<<tot<<endl;
  44. }
  45. return 0;
  46. }

C1. Binary Table (Easy Version)

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. #include<vector>
  5. using namespace std;
  6. void case4(vector<vector<int>>&b , vector<string>& a , int i , int j){
  7. a[i][j]=a[i+1][j]=a[i][j+1]=a[i+1][j+1]='0';
  8. vector<int>c;
  9. c.push_back(i);
  10. c.push_back(j);
  11. c.push_back(i+1);
  12. c.push_back(j);
  13. c.push_back(i+1);
  14. c.push_back(j+1);
  15. b.push_back(c);
  16. c.clear();
  17. c.push_back(i);
  18. c.push_back(j+1);
  19. c.push_back(i+1);
  20. c.push_back(j);
  21. c.push_back(i+1);
  22. c.push_back(j+1);
  23. b.push_back(c);
  24. c.clear();
  25. c.push_back(i);
  26. c.push_back(j);
  27. c.push_back(i);
  28. c.push_back(j+1);
  29. c.push_back(i+1);
  30. c.push_back(j);
  31. b.push_back(c);
  32. c.clear();
  33. c.push_back(i);
  34. c.push_back(j);
  35. c.push_back(i);
  36. c.push_back(j+1);
  37. c.push_back(i+1);
  38. c.push_back(j+1);
  39. b.push_back(c);
  40. }
  41. void case1(vector<vector<int>>&b , vector<string>& a , int i , int j){
  42. vector<int>c;
  43. if(a[i][j]=='1'){
  44. c.push_back(i);
  45. c.push_back(j+1);
  46. c.push_back(i+1);
  47. c.push_back(j);
  48. c.push_back(i+1);
  49. c.push_back(j+1);
  50. b.push_back(c);
  51. }
  52. if(a[i][j+1]=='1'){
  53. c.push_back(i);
  54. c.push_back(j);
  55. c.push_back(i+1);
  56. c.push_back(j);
  57. c.push_back(i+1);
  58. c.push_back(j+1);
  59. b.push_back(c);
  60. }
  61. if(a[i+1][j]=='1'){
  62. c.push_back(i);
  63. c.push_back(j);
  64. c.push_back(i);
  65. c.push_back(j+1);
  66. c.push_back(i+1);
  67. c.push_back(j+1);
  68. b.push_back(c);
  69. }
  70. if(a[i+1][j+1]=='1'){
  71. c.push_back(i);
  72. c.push_back(j);
  73. c.push_back(i+1);
  74. c.push_back(j);
  75. c.push_back(i);
  76. c.push_back(j+1);
  77. b.push_back(c);
  78. }
  79. }
  80. void case2(vector<vector<int>>&b , vector<string>& a , int i , int j){
  81. vector<int>c;
  82. if(a[i][j]=='1' && a[i][j+1]=='1'){
  83. c.push_back(i);
  84. c.push_back(j);
  85. c.push_back(i);
  86. c.push_back(j+1);
  87. c.push_back(i+1);
  88. c.push_back(j+1);
  89. b.push_back(c);
  90. a[i][j]=a[i][j+1]='0';
  91. a[i+1][j+1]='1';
  92. }
  93. if(a[i][j]=='1' && a[i+1][j]=='1'){
  94. c.push_back(i);
  95. c.push_back(j);
  96. c.push_back(i+1);
  97. c.push_back(j);
  98. c.push_back(i+1);
  99. c.push_back(j+1);
  100. b.push_back(c);
  101. a[i][j]=a[i+1][j]='0';
  102. a[i+1][j+1]='1';
  103. }
  104. if(a[i][j]=='1' && a[i+1][j+1]=='1'){
  105. c.push_back(i);
  106. c.push_back(j);
  107. c.push_back(i+1);
  108. c.push_back(j+1);
  109. c.push_back(i+1);
  110. c.push_back(j);
  111. b.push_back(c);
  112. a[i][j]=a[i+1][j+1]='0';
  113. a[i+1][j]='1';
  114. }
  115. if(a[i][j+1]=='1' && a[i+1][j]=='1'){
  116. c.push_back(i);
  117. c.push_back(j+1);
  118. c.push_back(i+1);
  119. c.push_back(j);
  120. c.push_back(i);
  121. c.push_back(j);
  122. b.push_back(c);
  123. a[i][j+1]=a[i+1][j]='0';
  124. a[i][j]='1';
  125. }
  126. if(a[i][j+1]=='1' && a[i+1][j+1]=='1'){
  127. c.push_back(i);
  128. c.push_back(j+1);
  129. c.push_back(i+1);
  130. c.push_back(j+1);
  131. c.push_back(i);
  132. c.push_back(j);
  133. b.push_back(c);
  134. a[i][j+1]=a[i+1][j+1]='0';
  135. a[i][j]='1';
  136. }
  137. if(a[i+1][j]=='1' && a[i+1][j+1]=='1'){
  138. c.push_back(i+1);
  139. c.push_back(j);
  140. c.push_back(i+1);
  141. c.push_back(j+1);
  142. c.push_back(i);
  143. c.push_back(j);
  144. b.push_back(c);
  145. a[i+1][j]=a[i+1][j+1]='0';
  146. a[i][j]='1';
  147. }
  148. }
  149. void solve(){
  150. int n,m;
  151. cin>>n>>m;
  152. vector<string>a(n);
  153. for(int i=0;i<n;i++){
  154. cin>>a[i];
  155. }
  156. vector<vector<int>>b;
  157. for(int i=0;i<n-1;i++){
  158. for(int j=0;j<m-1;j++){
  159. int total=0;
  160. total=(a[i][j]-'0')+(a[i][j+1]-'0')+(a[i+1][j]-'0')+(a[i+1][j+1]-'0');
  161. if(total==0)
  162. continue;
  163. else if(total==3){
  164. vector<int>c;
  165. if(a[i][j]=='1'){
  166. a[i][j]='0';
  167. c.push_back(i);
  168. c.push_back(j);
  169. }
  170. if(a[i][j+1]=='1'){
  171. a[i][j+1]='0';
  172. c.push_back(i);
  173. c.push_back(j+1);
  174. }
  175. if(a[i+1][j]=='1'){
  176. a[i+1][j]='0';
  177. c.push_back(i+1);
  178. c.push_back(j);
  179. }
  180. if(a[i+1][j+1]=='1'){
  181. a[i+1][j+1]='0';
  182. c.push_back(i+1);
  183. c.push_back(j+1);
  184. }
  185. b.push_back(c);
  186. }
  187. else if(total==4){
  188. case4(b,a,i,j);
  189. }
  190. else if(total==1){
  191. case1(b,a,i,j);
  192. case4(b,a,i,j);
  193. }
  194. else{
  195. case2(b,a,i,j);
  196. case1(b,a,i,j);
  197. case4(b,a,i,j);
  198. }
  199. }
  200. }
  201. cout<<(int)b.size()<<"\n";
  202. for(int i=0;i<(int)b.size();i++){
  203. for(int j=0;j<6;j++)
  204. cout<<b[i][j]+1<<" ";
  205. cout<<"\n";
  206. }
  207. }
  208. int main(){
  209. int T;
  210. cin>>T;
  211. while(T--)
  212. {
  213. solve();
  214. }
  215. return 0;
  216. }

PS.这个模拟把人写傻了