• Uva





    这题真是经历了各种。。。


    第一次对题目输入要求没有理解到位,直接RE了,第二次因为方式是模拟所有小球的下落,结果直接超时。

    超时代码:

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cctype>
    #include <cstring>
    #include <string>
    #include <sstream>
    #include <vector>
    #include <set>
    #include <map>
    #include <algorithm>
    #include <stack>
    #include <queue>
    #include <bitset> 
    #include <cassert> 
    
    using namespace std;
    
    const int maxn = 20;
    
    int s[1 << maxn]; // 2的20次方
    
    int main()
    {
    	int D, I;
    	int T;
    	cin >> T;
    	while (T--) {
    		cin >> D;
    		if (D == -1) {
    			break;
    		}
    		cin >> I;
    		memset(s, 0, sizeof(s));
    		int k, n = (1 << D) - 1; // n是最大节点编号2的D次方减一
    		for (int i = 0; i < I; i++) {
    			k = 1;
    			while (1) {
    				s[k] = !s[k];
    				k = s[k] ? k * 2 : k * 2 + 1;
    				if (k > n) {
    					break;
    				}
    			}
    		}
    		printf("%d
    ", k / 2);
    	}
    	cout << -1 << endl;
    
    	return 0;
    }

    后来只计算最后一个小球的路径,时间上是没问题了,可是这道题目的输入还是坑了我还几次,输入先要求输入测试次数,最后那个-1以为是最后输出,结果不然,那个-1是要求输入的-1,但是那还怎么按照测试次数进行循环呢,,,最后才发现这个输入测试次数基本就没什么用,最后还是用while(1)做了,里面判断输入是否是-1,是-1了就退出。。真是服了出题者,就是这么任性。

    AC代码:

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cctype>
    #include <cstring>
    #include <string>
    #include <sstream>
    #include <vector>
    #include <set>
    #include <map>
    #include <algorithm>
    #include <stack>
    #include <queue>
    #include <bitset> 
    #include <cassert> 
    
    using namespace std;
    
    int main()
    {
    	int D, I;
    	int T;
    	cin >> T;
    	while (1) {
    		scanf("%d", &D);
    		if (D == -1) {
    			break;
    		}
    		scanf("%d", &I);
    		int k = 1;
    		for (int i = 0; i < D - 1; i++) {
    			if (I % 2) {
    				k = k * 2;
    				I = (I + 1) / 2;
    			}
    			else {
    				k = k * 2 + 1;
    				I /= 2;
    			}
    		}
    		printf("%d
    ", k);
    	}
    	
    	return 0;
    }



  • 相关阅读:
    【转】每天一个linux命令(41):ps命令
    【转】每天一个linux命令(40):wc命令
    【转】每天一个linux命令(39):grep 命令
    【转】每天一个linux命令(38):cal 命令
    【转】每天一个linux命令(37):date命令
    【转】每天一个linux命令(36):diff 命令
    【转】每天一个linux命令(35):ln 命令
    【转】每天一个linux命令(34):du 命令
    诗词、对联名句(千古名帖)
    诗词、对联名句(千古名帖)
  • 原文地址:https://www.cnblogs.com/zhangyaoqi/p/4591567.html
Copyright © 2020-2023  润新知