zoukankan      html  css  js  c++  java
  • Contest Setting 2018 ICPC Pacific Northwest Regional Contest dp

    题目:https://codeforces.com/gym/101982/attachments

    Contest Setting

    dp

    这个题目网上说是dp+离散化
    这个题目要对这些数字先处理然后进行dp,
    这个处理值得学习一下,就是把数字范围为1~1e9,转化成一个顺序列表,这个顺序列表每一个不同的位置含有不同的难度,
    dp[i][j]代表前面i种选出j种的方案数。

    #include <cstdio>
    #include <iostream>
    #include <cstdlib>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    #include <queue>
    #define inf 0x3f3f3f3f
    using namespace std;
    typedef long long ll;
    const int mod = 998244353;
    const int maxn = 1010;
    int a[maxn], b[maxn], c[maxn];
    ll dp[maxn][maxn];
    
    int main()
    {
    	int n, k;
    	cin >> n >> k;
    	for (int i = 1; i <= n; i++)
    	{
    		scanf("%d", &a[i]);
    		b[i] = a[i];
    	}
    	memset(dp, 0, sizeof(dp));
    	memset(c, 0, sizeof(c));
    	sort(a + 1, a + 1 + n);
    	int m = unique(a + 1, a + 1 + n) - (a + 1);
    	for(int i=1;i<=n;i++)
    	{
    		b[i] = lower_bound(a + 1, a + 1 + m, b[i]) - a;
    		c[b[i]]++;
    	}
    	for (int i = 0; i <= m; i++) dp[i][0] = 1;
    
    	for(int i=1;i<=m;i++)
    	{
    		for(int j=1;j<=k;j++)
    		{
    			dp[i][j] = ((dp[i - 1][j - 1] * c[i]) % mod + dp[i - 1][j]) % mod;
    		}
    	}
    	printf("%lld
    ", dp[m][k]);
    	return 0;
    }
    

      

  • 相关阅读:
    Linux基础命令grep(如何过滤字符串)
    Linux基础命令wc(如何统计文件的行数?如何统计文件的字节数?)
    Linux基础命令tr(如何替换字符)
    django4
    django3
    django2
    django1
    jQuery2
    jQuery1
    事件
  • 原文地址:https://www.cnblogs.com/EchoZQN/p/10597943.html
Copyright © 2011-2022 走看看