zoukankan      html  css  js  c++  java
  • 2018.8.30 nowcoder oi赛制测试1

    2018.8.30 nowcoder oi赛制测试1

    普及组难度,发现了一些问题

    A

    题目大意:求斐波那契数列(f(k-1)f(k+1)-f(k)^2),范围极大

    打表可得规律

    其实是卡西尼恒等式

    [egin{eqnarray}f(k)f(k+2) - f(k+1)^2 &=&f(k)^2+f(k)f(k+1)-f(k-1)^2-2f(k-1)f(k)-f(k)^2\ &=&f(k)^2+f(k-1)f(k)-f(k-1)^2-2f(k-1)f(k)\ &=&f(k)^2-f(k-1)^2-f(k-1)f(k)\ &=&f(k)^2-f(k-1)f(k+1)\ &=&(-1)^{k+1} end{eqnarray} ]

    B

    翻译代码

    C

    暴力贪心,(sum\%k=0)时才可行,但是注意负数,要一直加下去直到满足。

    D

    树上直径,(dfs)两遍

    E

    最长不下降子序列,二分写错边界

    F

    题目大意:给出一个长度为 (n) 的序列,你需要计算出所有长度为(k) 的子序列中,除最大最小数之外所有数的乘积相乘的结果,答案对(1e9+7)取模。

    答案与子序列的具体内容无关

    排序后答案是(prodlimits_{i=2}^{n-1}a_i^{Cinom{k-1}{n-1}-Cinom{k-1}{i-1}-inom{k-1}{n-i}})

    指数要取模,因为模数是素数且(a_i<P)用欧拉定理即可

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    
    typedef long long ll;
    
    const int N = 1005;
    const int P = 1e9 + 7;
    
    int T, n, k;
    long long a[N];
    long long c[N][N];
    long long ans = 1;
    
    inline void pre(){
    	c[0][0] = 1;
    	for(int i = 1; i <= 1000; ++i){
    		c[i][0] = 1;
    		for(int j = 1; j <= i; ++j){
    			c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % (P - 1); 
    		}
    	}
    	return ;
    }
    
    inline ll q_pow(ll a, ll b){
    	ll w = 1;
    	while(b){
    		if(b & 1)
    			w = (a * w) % P;
    		b >>= 1;
    		a = (a * a) % P; 
    	} 
    	return w % P;
    }
    
    int main(){
    	scanf("%d", &T);
    	pre();
    	while(T--){
    		scanf("%d %d", &n, &k);
    		for(int i = 1; i <= n; ++i){
    			scanf("%lld", &a[i]);
    		}
    		std::sort(a + 1, a + n + 1);
    		for(int i = 1; i <= n; ++i){
    			ans = 1LL * (ans % P * q_pow(a[i], ((c[n - 1][k - 1] - c[i - 1][k - 1] - c[n - i][k - 1]) % (P - 1) + P - 1) % (P - 1)) % P ) % P;	
    		}
    		printf("%lld
    ",ans);
    		ans = 1;
    	}
    	//都开longlong 防止爆炸
    	return 0;
    } 
    

    Experience

    • 随机的数据可以试着打暴力
    • 二分记得多试几次
    • (F)类似的可以想一想组合数
  • 相关阅读:
    第一次用python 写的简单爬虫 记录在自己的博客
    【转】使用notepad运行python
    Android Tools&Cmd
    箴言
    无问西东
    Unity存储路径
    手机屏幕亮度设定
    Go Lang
    iOS .tbd
    Prime31
  • 原文地址:https://www.cnblogs.com/LMSH7/p/9560252.html
Copyright © 2011-2022 走看看