模拟题一套

【问题背景】
zhx 帮他妹子做数学题。

【输入格式】
仅一行,包含两个数 N 和 M.
【输出格式】
仅一行,包含所求的答案 mod 10^9 + 7 的值。
【样例输入】
3 3
【样例输出】
56
【数据范围与规定】
50%的数据,所有1 ≤ 𝑂,𝑁 ≤ 10。
对于100%的数据,所有1 ≤ 𝑂,𝑁 ≤ 50000。

分析

  因为数据较大(n*m时间复杂度太大),不能一个一个的算。可以用N个(等差数列的和)相加。

  

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<vector>
using namespace std;
#include<stdlib.h>
#define M 1000000007
#define LL    long long 
LL  n,m,i,j;
LL ans=0,qm=1;
LL fast(long long a,long long b)
{
    LL ans=1;
    a=a%M;
    while(b>0)
    {
        if(b%2)        ans=(ans*a)%M;
        b=b/2;
        a=(a*a)%M;
    }
    return ans;
}
int main()
{
    scanf("%lld%lld",&n,&m);
    ans=m;
    LL c,t;
    for( i=2;i<=n;i++)    
    {
        t=i;
        qm=(fast(t,m)-1+M)%M;
        c=fast(t-1,M-2)%M;
        c=((t*qm)%M*c)%M;
        ans=(ans+c)%M;
    }
    cout<<ans;    
    return 0;
}

 

【问题背景】
zhx 和他的妹子出去玩。
【问题描述】
zhx 和他的妹子去一个国家旅游,共有 N 个旅游景点,N-1 条双向连接的道
路将它们联通起来,每一条道路有固定长度。一开始 zhx 位于 1 号景点。
现在希望你能够求出旅行长度最小的方案,使得每个景点至少被访问到一次。
【输入格式】
第一行两个整数 N,代表景点数目。
接下来 N-1 行,每行三个整数 s, t, w,表示有一条从 s 到 t 的双向道路,长
度为 w。s 和 t 的编号从 1 开始。
【输出格式】
一行一个整数,代表能够访问每个景点至少一次的方案的最小旅行长度。
【样例输入】
3
1 2 3
2 3 3
【样例输出】
6
【样例输入】
3
1 2 3
1 3 3
【样例输出】
9
【数据规模与约定】
对于30%的数据,1 ≤ 𝑂 ≤ 10。
P69 游
第 4 页 共 6 页
70%的数据,1 ≤ 𝑂 ≤ 10。
对于100%的数据,1 ≤ 𝑂 ≤ 50000,1 ≤ 𝑥 ≤ 1000。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<vector>
using namespace std;
#include<stdlib.h>
int n,k,ans,tot4,tot7;
void find(int x)
{
    if(!x%7)    tot7++;
    if(!x%4)    tot4++;
}
int f[1002][1002];
int main()
{
    scanf("%d%d",&n,&k);
    int x;
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&x);
        find(x); 
    }
    f[1][1]=f[1][0]=1;
    for(int i=2;i<=n;i++)
    {
        f[i][0]=1;
        for(int j=1;j<i;j++)        
            f[i][j]=f[i-1][j]+f[i-1][j-1];
        f[i][i]=1;
    }    
    return 0;
}

 

posted @ 2017-05-19 15:08  浪矢-CL  阅读(229)  评论(0编辑  收藏  举报