• HDU 6129 Just do it 组合数学 杨辉三角 递推


      题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6129

      题目描述: 将a序列转化成b序列, b[i] = a[1]^a[2]^a[3]^a[4]^......^a[i] 重复m次, 求b

      解题思路: 我开始找的是系数的规律发现他满足杨辉三角, 也就是说我现在给出n 和 m , 然后求最后一项是奇数还是偶数, 然后自己就死推呀, 推了两个多点儿把所有的表都打遍了也没找到规律.....其实是有公式的......: C(x+y-2, y-2) 表示第i项循环y次的杨辉三角最上端的数, 而我们只关心这个数的奇偶, 如果是奇数我们就向下传递

      代码: 

    #include <iostream>
    #include <cstdio>
    #include <string>
    #include <vector>
    #include <cstring>
    #include <iterator>
    #include <cmath>
    #include <algorithm>
    #include <stack>
    #include <deque>
    #include <map>
    #define lson l, m, rt<<1
    #define rson m+1, r, rt<<1|1
    #define mem0(a) memset(a,0,sizeof(a))
    #define meminf(a) memset(a,0x3f,sizeof(a))
    typedef long long ll;
    using namespace std;
    
    //const int INF = 0x3fffffff;
    const int maxn = 2e6 + 10;
    int a[maxn];
    int ans[maxn];
    
    int main() {
        int t;
        scanf( "%d", &t );
        while( t-- ) {
            int n, m;
            scanf( "%d %d", &n, &m );
            mem0(a);
            mem0(ans);
            for( int i = 1; i <= n; i++ ) {
                scanf( "%d", a+i );
            }
            for( int i = 1; i <= n; i++ ) {
                
                int x = m+i-2;
                int y = i-1;
                if( (x & y) == y ) {
                    for( int j = 1; j <= n; j++ ) {
                        ans[j] ^= a[j-i+1];
                    }
                }
            }
    //        cout << n << endl;
            for( int i = 1; i <= n; i++ ) {
                if( i == 1 ) {
                    printf( "%d", ans[i] );
                }
                else printf( " %d", ans[i] );
            }
            printf( "
    " );
            
        }
        return 0;
    }
    View Code

      思考: 数学好重要QAQ, 我是真的菜, 如果会数学的话就不会打表找规律好长时间也找不到................

  • 相关阅读:
    重学Java 面向对象 之 final
    java并发学习04---Future模式
    java并发学习03---CountDownLatch 和 CyclicBarrier
    java并发学习02---ReadWriteLock 读写锁
    java并发学习01 --- Reentrantlock 和 Condition
    链表的倒数第k个节点
    重建二叉树
    java并发学习--线程池(一)
    二叉树的深度
    vue-常用指令(v-for)
  • 原文地址:https://www.cnblogs.com/FriskyPuppy/p/7372817.html
Copyright © 2020-2023  润新知