HDU ACM 1052
来源:互联网 发布:太平洋电脑软件下载 编辑:程序博客网 时间:2024/04/30 16:08
数组T[] K[]分别表示田和king 的马, 按从块到慢进行排序。
然后从t=0 k=0 开始, 一直到k >= n为止结束(t不用遍历完的, 因为后面几匹最慢的是炮灰,和king比较快的马比了)。
1,如果T[ t ] < K[ k ] 分两种情况 :
(1) 前面没有更快的马打平,或者是mark记录的值和这K的一匹一样(用mark 记录打平的马的速度, e表示打平的次数)。如: T : 5 3 2 2 ; K: 5 5 5 1; 于是K[k] 肯定赢了,, 然后k++,t保持不变(用后面跑的很慢的的炮灰和K[k] 比
( 2 ) 前面打平了的 那匹马的速度 比K[ k ] 快, 也就是 mark > K[ k ]
比如 : T : 5 3 2 ;
K: 5 4 1 ;
那么这时候只 相当于 T 用5 赢 K的 4, 然后用最后的炮灰来输给 K 的5,再把e--, 因为 保存着的5 只打平一次, 下次出现这种情况就不能用了。
2, 如果 T[ t ] = K [k] 也是两种情况 :
(1):
if(e==0||mark == T[t]){mark = T[t];e++;t++;k++;}e = 0 ; 表示前面没有打平, 或者打平了, 但是出现了上面( 2 ) 中出现的情况。
mark 是之前打平的马的速度。 如果mark 和T[ t ] 一样大, 说明此次打平的马的速度和上次打平的马的速度一样块,于是e++;
(2) : 打平了, 但是T[ t ] = K[k] < mark , T 用速度为mark 的马来赢 K[k] , 用后面跑的很慢的炮灰输给K中速度为mark 的马, 于是e--;
注意到, 当出现1(2) 或者 2 (2) 的时候, 其实相当于是赢一场输一场,不影响结果(T用mark了的马 赢K[k],T后面的炮灰输给K的mark)。
3,如果T[t] > K [k] 就最好了。。 直接过。。
#include<iostream>using namespace std;int T[1000];int K[1000];void sort_(const int &n_){int tmp;for(int i = 0 ; i < n_ ; i++)for(int j = 1 ; j < n_-i ; j++){if(T[j] > T[j-1]){tmp = T[j];T[j] = T[j-1];T[j-1] = tmp;}if(K[j] > K[j-1]){tmp = K[j];K[j] = K[j-1];K[j-1] = tmp;}}}int main(){int n,t,k,e,res,mark;int a = 1;while(scanf("%d",&n),n!=0&&a<=50){for(int c = 0 ; c < n ; c++)scanf("%d",&T[c]);for(int c = 0 ; c < n ; c++)scanf("%d",&K[c]);sort_(n);t = k = e = res = 0;while(k < n){if(T[t] > K[k]){res++;t++;k++;continue;}if(T[t] < K[k]){if(e>0&&K[k]<mark)e--;//if(e>0)e--; // 开始一直wa, 就因为这里考虑漏掉了K[k] = mark 而 T[t] <mark 的情况。else res--;k++;continue;}if(T[t] == K[k]){if(e==0||mark == T[t]){mark = T[t];e++;t++;k++;}else if(mark > K[k] ){e--;k++;}continue;}}cout << res*200 <<endl;a++;}return 0;}
- HDU ACM 1052
- hdu-acm
- HDU ACM 2111 Saving HDU
- hdu acm hdu 2115 Java
- ACM HDU 1000
- ACM HDU 1001
- ACM HDU 1002
- ACM HDU 1004
- HDU ACM 1198
- hdu acm 2100 Lovekey
- hdu acm 1913 Computers
- ACM HDU 1003
- ACM HDU 1009
- HDU ACM 1058
- HDU ACM 1257
- HDU ACM 1506
- HDU ACM 2602
- HDU ACM 1176
- 基于分析的amb求值器,及其分析
- java中的数组(六)
- 第3章栈和队列
- COGNOS10的Eclipse远程调试
- c time.h
- HDU ACM 1052
- UVA11419 我是SAM
- [LeetCode OJ]Climbing Stairs
- 随机数判断奇偶数求平方根后类型转换
- android应用开发详解(二十一)-----------------------SQLite
- “理”在心中
- 【UVA】1449-Dominating Patterns(AC自动机)
- CvArr、Mat、CvMat、IplImage、BYTE转换(总结而来)
- Android中下拉框Spinner使用