C - Contest Setting Gym - 101982C dp 补题
题目链接:https://vjudge.net/contest/273260#problem/C
学习了一下别人的思路,首先去重,然后离散化。
dp数组开二维,每一次更新,状态转移方程,dp[ i ][ j ] = (dp[ i-1] [ j ]+dp[ i-1] [ j -1 ]*(ans[ i ]))%mod;
第i种商品第j种(j<=k)的时候,等于第i-1个商品第j种的总方法数加上第i-1个的第j-1个乘以ans[i],ans数组记录的是这种商品当前有多少种。
AC代码:
#include<iostream>
#include<stack>
#include<iomanip>
#include<stdio.h>
#include<vector>
#include<map>
#include<queue>
#include<algorithm>
using namespace std;
# define inf 0x3f3f3f3f
# define ll long long
# define mod 998244353
const int maxn=1000+100;
ll dp[maxn][maxn];
ll a[maxn];
map<ll,ll>vis;
map<ll,ll>ans;
int main()
{
ll n,m;
scanf("%lld%lld",&n,&m);
int temp;
for(int i=1; i<=n; i++)
{
scanf("%lld",&a[i]);
}
int num=0;
for(int i=1; i<=n; i++)
{
if(vis[a[i]]==0)
{
vis[a[i]]=++num;
}
ans[vis[a[i]]]++;
}
// for(int i=1;i<=num;i++){
// cout<<i<<" "<<ans[i]<<endl;
// }
dp[0][0]=1;
for(int i=1; i<=num; i++)
{
for(int j=0; j<=m; j++)
{
int temp=dp[i-1][j];
if(j!=0)
temp+=dp[i-1][j-1]*ans[i];
dp[i][j]=(dp[i][j]+temp)%mod;
}
}
printf("%lld\n",dp[num][m]);
return 0;
}
C - Contest Setting Gym - 101982C dp 补题的更多相关文章
- You Are Given a Decimal String... CodeForces - 1202B [简单dp][补题]
补一下codeforces前天教育场的题.当时只A了一道题. 大致题意: 定义一个x - y - counter :是一个加法计数器.初始值为0,之后可以任意选择+x或者+y而我们由每次累加结果的最后 ...
- Masquerade strikes back Gym - 101911D(补题) 数学
https://vjudge.net/problem/Gym-101911D 具体思路: 对于每一个数,假设当前的数是10 分解 4次,首先 1 10 这是一对,然后下一次就记录 10 1,这样的话直 ...
- Contest Setting 2018 ICPC Pacific Northwest Regional Contest dp
题目:https://vj.69fa.cn/12703be72f729288b4cced17e2501850?v=1552995458 dp这个题目网上说是dp+离散化这个题目要对这些数字先处理然后进 ...
- 2018-2019 ACM-ICPC Pacific Northwest Regional Contest C Contest Setting(DP)
比赛链接:Contest Setting C题 题意:$n$道题目,每道题目难度为$ai$,选择$k$道难度不同的题目,有多少种选择方案.$1<=k<=n<=1000,1<=a ...
- 【补题记录】ZJU-ICPC Summer Training 2020 部分补题记录
补题地址:https://zjusummer.contest.codeforces.com/ Contents ZJU-ICPC Summer 2020 Contest 1 by Group A Pr ...
- dp百题大过关(第一场)
好吧,这名字真是让我想起了某段被某教科书支配的历史.....各种DP题层出不穷,不过终于做完了orz 虽然各种手糊加乱搞,但还是要总结一下. T1 Monkey Banana Problem 这 ...
- 2018 HDU多校第四场赛后补题
2018 HDU多校第四场赛后补题 自己学校出的毒瘤场..吃枣药丸 hdu中的题号是6332 - 6343. K. Expression in Memories 题意: 判断一个简化版的算术表达式是否 ...
- 2018 HDU多校第三场赛后补题
2018 HDU多校第三场赛后补题 从易到难来写吧,其中题意有些直接摘了Claris的,数据范围是就不标了. 如果需要可以去hdu题库里找.题号是6319 - 6331. L. Visual Cube ...
- 4.30-5.1cf补题
//yy:拒绝转载!!! 悄悄告诉你,做题累了,去打两把斗地主就能恢复了喔~~~ //yy:可是我不会斗地主吖("'▽'") ~~~那就听两遍小苹果嘛~~~ 五一假期除了花时间建模 ...
随机推荐
- Java MD5加密类
/************************************************* md5 类实现了RSA Data Security, Inc.在提交给IETF 的RFC1321中 ...
- 控件属性和InitializeComponent()关系:
namespace Test22 { partial class Form1 { /// <summary> /// 必需的设计器变量. /// </summary> priv ...
- 使用python操作Memcache、Redis、RabbitMQ、
Memcache 简述: Memcache是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的.需要 ...
- compareTo 返回为整数 调用者比参数大;返回负数 调用者比参数小
compareTo 返回为整数 调用者比参数大;返回负数 调用者比参数小
- 单源最短路径spfa模板(pascal)洛谷P3371
题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入输出格式 输入格式: 第一行包含三个整数N.M.S,分别表示点的个数.有向边的个数.出发点的编号. 接下来M行每行包含三 ...
- bzoj1923[Sdoi2010]外星千足虫(高斯消元)
Description Input 第一行是两个正整数 N, M. 接下来 M行,按顺序给出 Charles 这M次使用“点足机”的统计结果.每行 包含一个“01”串和一个数字,用一个空格隔开.“01 ...
- bzoj2699 更新
题意 对于一个数列A[1..N],一种寻找最大值的方法是:依次枚举A[2]到A[N],如果A[i]比当前的A[1]值要大,那么就令A[1]=A[i],最后A[1]为所求最大值.假设所有数都在范围[1, ...
- 洛谷 P1495 曹冲养猪
这是一道标准的孙子定理的题,题意浅显,思路明确 然后我就交了整整16遍啊,欺负人啊,题解暴力就能过,我就TLE ..悲惨的提交记录 下面是题面 题目描述 自从曹冲搞定了大象以后,曹操就开始捉摸让儿子干 ...
- HDU1402:A * B Problem Plus——题解
http://acm.hdu.edu.cn/showproblem.php?pid=1402 给出两个高精度正整数,求它们的积,最长的数长度不大于5e4. FFT裸题,将每个数位看做是多项式的系数即可 ...
- redis的sort排序
Redis排序命令是sort,完整的命令格式如下:SORT key [BY pattern] [LIMIT start count] [GET pattern] [ASC|DESC] [ALPHA] ...