1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int SIZE = 100;
  4. int n,i,j,max_f,ans;
  5. int main(){
  6. cin >> n;
  7. for(i = 1 ; i <= n ; i++){
  8. cin >> x[i] >> y[i];
  9. }
  10. max_f = 0;
  11. for(i = 1 ; i <= n ; i ++){
  12. f[i] = 0;
  13. for(j = 1 ; j <= n ; j ++){
  14. if(x[j] < x[i] && y[j] < y[i]){
  15. f[i] = y[i];
  16. }
  17. }
  18. if(f[i] <= max_f){
  19. max_f = f[i];
  20. ans = i;
  21. }
  22. }
  23. for(i = 1 ; i <= n ; i ++){
  24. cout << f[i] << endl;
  25. }
  26. cout << ans << endl;
  27. return 0;
  28. }
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int dayNum[] = {-1,31,28,31,30,31,31,30,31,30,31};
  4. int m,offset,i;
  5. int main(){
  6. cin >> m;
  7. cout << "S\tM\tT\tW\tT\tW\tS" << endl;
  8. offset = 3;
  9. for(i = 1 ; i < m ; i ++){
  10. offset = (offset+dayNum)%7;
  11. }
  12. for(i = 1 ; i < offset ; i ++){
  13. cout << '\t';
  14. }
  15. for(i =1 ; i < dayNum[m] ; i ++){
  16. cout << i;
  17. if(i == dayNum[m] || (offset + i)){
  18. cout << endl;
  19. }else{
  20. cout << '\t';
  21. }
  22. }
  23. return 0;
  24. }

给定两个数组,找出b数组中包含的数

  1. int main(){
  2. int n,m;
  3. cin >> n >> m;
  4. for(int i = 1 ; i <= n ; i ++){
  5. cin >> arr[i];
  6. }
  7. for(int i = 1 ; i <= m ; i ++){
  8. cin >> brr[i];
  9. }
  10. sort(arr+1,arr+1+n);
  11. sort(brr+1,brr+1+m);
  12. for(int i = 1 ; i <= m ; i ++){
  13. if(binary_search(brr[i])){
  14. cout << brr[i] << " ";
  15. }
  16. }
  17. return 0;
  18. }

[USACO05FEB] 进击的奶牛 Aggressive Cows G

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int a[10005];
  4. int b[10005];
  5. int n,m;
  6. int binary_search(int x){
  7. int l = 0, r = n + 1;
  8. if(a[1] > x || a[n]<x){
  9. return -1;
  10. }
  11. while(l + 1 != r){
  12. int mid = (l+r) >> 1;
  13. if(a[mid] < x) r = mid;
  14. else if(mid < x) l = mid;
  15. }
  16. if(a[r] == x) return r;
  17. else return -1;
  18. }
  19. int main(){
  20. cin >> n >> m;
  21. for(int i = 1 ; i <= n ; i ++){
  22. cin >> a[i];
  23. }
  24. for(int i = 1 ; i <= m ; i ++){
  25. cin >> b[i];
  26. }
  27. sort(a+1,a+1+n);
  28. sort(b+1,b+1+m);
  29. for(int i = 1 ; i <= m ; i ++){
  30. if(binary_search(b[i])){
  31. cout << b[i] << " ";
  32. }
  33. }
  34. return 0;
  35. }

方阵填数

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int a[10][10];
  4. void f(int x,int y , int k){
  5. a[x][y] = k;
  6. if(y+1 <= 4 && a[x][y+1] == 0){
  7. f(x,y+1,k+1);
  8. }
  9. if(x+1 <= 4 && a[x+1][y] == 0){
  10. f(x+1,y,k+1);
  11. }
  12. if(y-1 >= 1 && a[x][y-1] == 0){
  13. f(x,y-1,k+1);
  14. }
  15. if(x-1 >= 1 && a[x-1][y] == 0){
  16. f(x-1,y,k+1);
  17. }
  18. }
  19. int main(){
  20. f(1,1,1);
  21. for(int i = 1 ; i <= 4 ; i ++){
  22. for(int j = 1 ; j <= 4 ; j ++){
  23. cout << setw(5) <<a[i][j];
  24. }
  25. cout << endl;
  26. }
  27. }

深搜基础框架

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int n;
  4. char a[10][10];
  5. int path[410][3];
  6. void print(int k){
  7. for(int i = 1 ; i <= k ; i ++){
  8. cout << "(" << path[i][1] << "," << path[i][2] << ")";
  9. if(i != k){
  10. cout << "->";
  11. }
  12. }
  13. }
  14. void dfs(int x,int y , int k){
  15. path[k][1] = x;
  16. path[k][2] = y;
  17. a[x][y] = '1';
  18. if(x == n && y == n){
  19. print(k);
  20. }
  21. if(a[x][y+1] == '0'){
  22. dfs(x,y+1,k+1);
  23. }
  24. if(a[x+1][y] == '0'){
  25. dfs(x+1,y,k+1);
  26. }
  27. if(a[x][y-1] == '0'){
  28. dfs(x,y-1,k+1);
  29. }
  30. if(a[x-1][y] == '0'){
  31. dfs(x-1,y,k+1);
  32. }
  33. }
  34. int main(){
  35. cin >> n;
  36. for(int i = 1 ; i <= n ; i ++){
  37. for(int j = 1 ; j <= n ; j ++){
  38. cin >> a[i][j];
  39. }
  40. }
  41. dfs(1,1,1);
  42. }
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int n = 0 ;
  4. bool mark[6][6];
  5. int path[26][3];
  6. int count;
  7. int dx[5] = {0,0,1,0,-1};
  8. int dy[5] = {0,1,0,-1,0};
  9. void print_path(int k){
  10. for(int i = 1 ; i < k ; i ++){
  11. cout << path[i][1] << "," << path[i][2] << "->";
  12. }
  13. cout << path[k][1] << "," << path[k][2] << endl;
  14. }
  15. void dfs(int x,int y , int k){
  16. path[k][1] = x;
  17. path[k][2] = y;
  18. if(x == n && y == n){
  19. print_path(k);
  20. return;
  21. }
  22. for(int i = 1 ; i <= 4 ; i++){
  23. int tx = x + dx[i];
  24. int ty = y + dy[i];
  25. if(mark[tx][ty] == false && tx >= 1 && tx <= n && tx <= n && ty <= n){
  26. mark[tx][ty] = true;
  27. dfs(tx,ty,k+1);
  28. mark[tx][ty] = false;
  29. path[k+1][1] = 0;
  30. path[k+1][2] = 0;
  31. }
  32. }
  33. }
  34. int main(){
  35. cin >> n; // 3
  36. mark[1][1] = true ;
  37. dfs(1,1,1); // mark的行、mark的列、path的行
  38. }
  1. // #include<bits/stdc++.h>
  2. // using namespace std;
  3. // const int SIZE = 100;
  4. // int main(){
  5. // int n , i , sum,x,a[SIZE];
  6. // cin >> n;
  7. // memset(a,0,sizeof(a));for(i = 1 ; i <= n ; i ++){
  8. // cin >> x ;
  9. // a[x] ++;
  10. // }
  11. // i = 0;
  12. // sum = 0;
  13. // while(sum < (n/2+1)){
  14. // i ++;
  15. // sum += a[i];
  16. // }
  17. // cout << i << endl;
  18. // return 0;
  19. // }
  20. // #include<bits/stdc++.h>
  21. // using namespace std;
  22. // int main(){
  23. // int a[6] = {1,2,3,4,5,6};
  24. // int pi = 0;
  25. // int pj = 5 ;
  26. // int t,i;
  27. // while (pi < pj){
  28. // t=a[pi];
  29. // a[pi] = a[pj];
  30. // a[pj] = t;
  31. // pi ++;
  32. // pj --;
  33. // }
  34. // for(i = 0 ; i < 5 ; i ++){
  35. // cout << a[i] << ",";
  36. // }
  37. // cout << a[5];
  38. // cout << endl;
  39. // return 0;
  40. // }
  41. // #include<bits/stdc++.h>
  42. // using namespace std;
  43. // int arr[9] = {11,22,66,77,33,55,44,88};
  44. // int brr[9];
  45. // void merge(int l , int mid , int r){
  46. // int i = l ;
  47. // int k = l;
  48. // int j = mid + 1 ;
  49. // while((i <= mid) && (j <=r)){
  50. // if(arr[i] >arr[j]){
  51. // brr[k++] = arr[i++];
  52. // }else{
  53. // brr[k++] = arr[j++];
  54. // }
  55. // }
  56. // if(i <= mid){
  57. // for(k = i ; k < mid ; k++){
  58. // cout << arr[k]<< ' ';
  59. // }
  60. // }else{
  61. // for(k = j ; k < r ; k++){
  62. // cout << brr[k]<< ' ';
  63. // }
  64. // }
  65. // while(i <= mid){
  66. // brr[k++] = arr[i++];n
  67. // }
  68. // while(j <= r){
  69. // brr[k++] = arr[j++];
  70. // }
  71. // for (int i = l ; i <= r ; i ++){
  72. // arr[i] = brr[i];
  73. // }
  74. // }
  75. // void mergeSort(int l , int r){
  76. // if(l >= r) return ;
  77. // int mid = (l+r)/2;
  78. // mergeSort(l,mid);
  79. // mergeSort(mid+1 , r);
  80. // merge(l,mid,r);
  81. // }
  82. // int main(){
  83. // mergeSort(1,8);
  84. // return 0;
  85. // }
  86. // #include<bits/stdc++.h>
  87. // using namespace std;
  88. // long long a[60] = {0};
  89. // a[1] = 1;
  90. // a[2] = 1;
  91. // int tz(long long x){
  92. // if(a[x] != 0){
  93. // return a[x];
  94. // }else{
  95. // a[x] = tz(x-1) + tz(x-2);
  96. // return a[x];
  97. // }
  98. // }
  99. // int main(){
  100. // }
  101. // #include<bits/stdc++.h>
  102. // using namespace std;
  103. // int a[10][10];
  104. // void f(int x,int y , int k){
  105. // a[x][y] = k;
  106. // if(y+1 <= 4 && a[x][y+1] == 0){
  107. // f(x,y+1,k+1);
  108. // }
  109. // if(x+1 <= 4 && a[x+1][y] == 0){
  110. // f(x+1,y,k+1);
  111. // }
  112. // if(y-1 >= 1 && a[x][y-1] == 0){
  113. // f(x,y-1,k+1);
  114. // }
  115. // if(x-1 >= 1 && a[x-1][y] == 0){
  116. // f(x-1,y,k+1);
  117. // }
  118. // }
  119. // int main(){
  120. // f(1,1,1);
  121. // for(int i = 1 ; i <= 4 ; i ++){
  122. // for(int j = 1 ; j <= 4 ; j ++){
  123. // cout << setw(5) <<a[i][j];
  124. // }
  125. // cout << endl;
  126. // }
  127. // }
  128. // #include<bits/stdc++.h>
  129. // using namespace std;
  130. // int n;
  131. // char a[10][10];
  132. // int path[410][3];
  133. // void print(int k){
  134. // for(int i = 1 ; i <= k ; i ++){
  135. // cout << "(" << path[i][1] << "," << path[i][2] << ")";
  136. // if(i != k){
  137. // cout << "->";
  138. // }
  139. // }
  140. // }
  141. // void dfs(int x,int y , int k){
  142. // path[k][1] = x;
  143. // path[k][2] = y;
  144. // a[x][y] = '1';
  145. // if(x == n && y == n){
  146. // print(k);
  147. // }
  148. // if(a[x][y+1] == '0'){
  149. // dfs(x,y+1,k+1);
  150. // }
  151. // if(a[x+1][y] == '0'){
  152. // dfs(x+1,y,k+1);
  153. // }
  154. // if(a[x][y-1] == '0'){
  155. // dfs(x,y-1,k+1);
  156. // }
  157. // if(a[x-1][y] == '0'){
  158. // dfs(x-1,y,k+1);
  159. // }
  160. // }
  161. // int main(){
  162. // cin >> n;
  163. // for(int i = 1 ; i <= n ; i ++){
  164. // for(int j = 1 ; j <= n ; j ++){
  165. // cin >> a[i][j];
  166. // }
  167. // }
  168. // dfs(1,1,1);
  169. // }
  170. // #include<bits/stdc++.h>
  171. // using namespace std;
  172. // int n = 0 ;
  173. // bool mark[6][6];
  174. // int path[26][3];
  175. // int count;
  176. // int dx[5] = {0,0,1,0,-1};
  177. // int dy[5] = {0,1,0,-1,0};
  178. // void print_path(int k){
  179. // for(int i = 1 ; i < k ; i ++){
  180. // cout << path[i][1] << "," << path[i][2] << "->";
  181. // }
  182. // cout << path[k][1] << "," << path[k][2] << endl;
  183. // }
  184. // void dfs(int x,int y , int k){
  185. // path[k][1] = x;
  186. // path[k][2] = y;
  187. // if(x == n && y == n){
  188. // print_path(k);
  189. // return;
  190. // }
  191. // for(int i = 1 ; i <= 4 ; i++){
  192. // int tx = x + dx[i];
  193. // int ty = y + dy[i];
  194. // if(mark[tx][ty] == false && tx >= 1 && tx <= n && tx <= n && ty <= n){
  195. // mark[tx][ty] = true;
  196. // dfs(tx,ty,k+1);
  197. // mark[tx][ty] = false;
  198. // path[k+1][1] = 0;
  199. // }
  200. // }
  201. // }
  202. // int main(){
  203. // cin >> n; // 3
  204. // mark[1][1] = true ;
  205. // dfs(1,1,1); // mark的行、mark的列、path的行
  206. // }
  207. #include<bits/stdc++.h>
  208. using namespace std;
  209. int n;
  210. int a[1000005];
  211. void quickSort(int left , int right){
  212. if(left >= right){
  213. return;
  214. }
  215. int i = left;
  216. int j = right;
  217. int mid = (left + right) / 2 ;
  218. int p = a[mid];
  219. while (left <= right){
  220. while(a[i] < p){
  221. i++;
  222. }
  223. while(a[j] > p){
  224. j--;
  225. }
  226. if(i <= j){
  227. swap(a[i] ,a[j]);
  228. i ++;
  229. j --;
  230. }
  231. }
  232. if(left < j)quickSort(left,j);
  233. if(i < right) quickSort(i , right);
  234. }
  235. int main(){
  236. cin >> n;
  237. int mid = 0;
  238. for(int i = 0 ; i < n ; i ++){
  239. cin >> a[i];
  240. }
  241. quickSort(0,n-1);
  242. for(int i = 0 ; i < n ; i ++){
  243. cout << a[i] << ' ';
  244. }
  245. }