题意:A,B,C三个人按照顺序循环删除数组元素,A删除数组最后的那个元素,B 删除数组最前的那个元素,你任意删除, 问能否控制 使得第 K位为最后一个删除的。
解题思路:贪心,看A,B到最后能删到哪里。
解题代码:
1 // File Name: k.cpp 2 // Author: darkdream 3 // Created Time: 2015年03月15日 星期日 22时06分25秒 4 5 #include<vector> 6 #include<list> 7 #include<map> 8 #include<set> 9 #include<deque> 10 #include<stack> 11 #include<bitset> 12 #include<algorithm> 13 #include<functional> 14 #include<numeric> 15 #include<utility> 16 #include<sstream> 17 #include<iostream> 18 #include<iomanip> 19 #include<cstdio> 20 #include<cmath> 21 #include<cstdlib> 22 #include<cstring> 23 #include<ctime> 24 #define LL long long 25 26 using namespace std; 27 int x; 28 char str[100000]; 29 int main(){ 30 int n , m; 31 while(scanf("%d %d",&n,&m) != EOF) 32 { 33 for(int i= 1;i <= n;i ++) 34 { 35 scanf("%d %s",&x,str); 36 } 37 if(n == 1) 38 { 39 printf("YES\n"); 40 continue; 41 } 42 int tx = (n-1)/3; 43 int ty = tx; 44 if((n-1) % 3 == 1) 45 { 46 tx ++ ; 47 }else if((n-1)%3 == 2){ 48 tx++; 49 ty ++; 50 } 51 if(m> ty && m <= n-tx) 52 printf("YES\n"); 53 else printf("NO\n"); 54 } 55 return 0; 56 }
原文:http://www.cnblogs.com/zyue/p/4340675.html