zoukankan      html  css  js  c++  java
  • Educational Codeforces Round 99 (Rated for Div. 2) 补题

     白给题

        #include <bits/stdc++.h>
        using namespace std;
         
        int main () {
        	string s;
        	int num;
        	cin >> num;
        	while(num--) {
        		cin >> s;
        		cout << s.size() << endl;
        	}	
        }

     

      白给题2用锤子二分

    #include <bits/stdc++.h>
    using namespace std;
     
    int main () {
    	int t;
    	cin >> t;
    	while(t--) {
    		int x;
    		cin >> x;
    		int n = (-1.0 + sqrt(1 + 8 * x)) / 2.0;
    		if((1 + n) * n / 2 == x) {
    			cout << n << endl;
    		} else if((n + 2) * (n + 1) / 2 - x == 1) {
    			cout << n + 2 << endl;
    		} else {
    			cout << n + 1 << endl;
    		}
    	}
    }
    

      

    简单的博弈分析罢了。不断进行状态转移(反正消耗能量也就1,如果消耗多了可能还涉及DP)对于后手来说最理想的状态就是获得所有能量的分,这是一定可以做到的,前面的球不接就行了。对于先手来说可以把自己球全部打完,当轮到最后一个球时,后手开始接盘。

    #include <bits/stdc++.h>
    using namespace std;
     
    int main () {
    	int t;
    	cin >> t;
    	while(t--) {
    		int x, y;
    		cin >> x >> y;
    		cout << x - 1 << " " << y << endl;
    	}
    }
    

      

     遍历一下数组记录一下变化代价,遇到x<v[i]才进行更新x。然后出现unorder的情况。把此状态的x和小的数swap,然后加上付出的代价即可。有点儿类似于DP的思想但我这种方法只是通过代价考虑。

    #include <bits/stdc++.h>
    using namespace std;
    
    int main () {
    	int t;
    	cin >> t;
    	while(t--) {
    		int n, x;
    		cin >> n >> x;
    		std::vector<int> v(n + 1);
    		for(int i = 1; i <= n; ++i){
    			cin >> v[i];
    		}
    		bool ok = 0;
    		int num = 0;
    		int gap = 1;
    		for(int i = 2; i <= n; ++i) {
    			if(v[i] < v[i - 1]) {
    				if(v[i] < x) {
    					ok = 1;
    					break;
    				}
    				num += gap;
    				swap(x, v[i - 1]);
    				gap = 1;
    			}
    			if(x < v[i - 1]) {
    				gap++;
    				x = v[i - 1];
    			}
    		}
    		if(ok) {
    			cout << -1 << endl;
    		} else {
    			cout << num << endl;
    		}
    	}
    }
    

      

     next_permutation用于暴力所有情况,首先算出最朴素的情况,然后nw = abs(y[1] - y[2]) + abs(y[3] - y[4]) + abs(x[1] - x[3]) + abs(x[2] - x[4]);不能得到正方形的话,需要进行添加

    #include <bits/stdc++.h>
    using namespace std;
    #define int long long
    int x[5], y[5], xx[5], yy[5], c[5], T;
    signed main () {
    	scanf("%lld", &T);
    	while(T--) {
    		int nw, ans = 2e9, xl, xr, yl, yr;
    		for(int i = 1; i <= 4; ++i) {
    			scanf("%lld%lld", &xx[i], &yy[i]);
    			c[i] = i;
    		}
    		do{
    			for(int i = 1; i <= 4; ++i) {
    				x[i] = xx[c[i]], y[i] = yy[c[i]];
    				//cout << c[i] << " ";
    			}
    			//cout << endl;
    			nw = abs(y[1] - y[2]) + + abs(x[2] - x[4]) + abs(y[4] - y[3]) + abs(x[3] - x[1]) ;
    			yl = min(y[1], y[2]) - max(y[3], y[4]);
    			yr = max(y[1], y[2]) - min(y[3], y[4]);
    			xl = min(x[2], x[4]) - max(x[1], x[3]);
    			xr = max(x[2], x[4]) - min(x[1], x[3]);
    			//cout << yl << " " << yr << " " << xl << " " << xr << endl;
    			if(xr < yl) nw += (yl - xr) * 2;
    			if(xl > yr) nw += (xl - yr) * 2;
    			ans = min(ans, nw);	
    		}while(next_permutation(c + 1, c + 5));
    		printf("%lld
    ", ans);
    	}
    	return 0;
    }
    

          

  • 相关阅读:
    移动端开发常遇问题解答
    CSS属性小结之--半透明处理
    jquery事件代理
    sprite图在移动端的使用
    vertical-align及IE7下的inline-block
    图片延迟加载
    iOS NSInteger/NSUInteger与int/unsigned int、long/unsigned long之间的区别!
    GCD深入理解(1)
    iOS 开发图片资源选择png格式还是jpg格式
    iOS沙盒(sandbox)机制及获取沙盒路径
  • 原文地址:https://www.cnblogs.com/lightac/p/14066948.html
Copyright © 2011-2022 走看看