栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 2900 Icecream

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 2900 Icecream

#include<cstdio>#include<cstring>#include<cstdlib>#include<ctime>#include<algorithm>#include<iostream>#include<string>#include<cmath>#include<queue>#include<vector>#include<map>using namespace std;int a[2005];int c[2005][120];int n=105, M;inline int lowbit(int i){return i&(-i); }void Add(int C[], int k, int val){ for (int i=k; i<=n; i+=lowbit(i)) C[i] = (C[i]+val)%M;}int getSum(int C[], int k){ int res=0; for (int i=k; i>0; i-=lowbit(i)) res = (res+C[i])%M; return res;}int main(){ int N, K, P, i, j, k, p, q, bg, ed, tmp; while (scanf ("%d%d%d%d", &N, &K, &P, &M)!=EOF) { if (K==0) K=1; for (i=1; i<=N; i++) scanf ("%d", a+i); for (i=1; i<=N; i++) a[i]++; memset (c, 0, sizeof(c)); Add(c[1], a[1], 1); for (i=2; i<=N; i++) { bg = max(0, a[i]-P-1); ed = min(n, a[i]+P); if (bg>=ed) { Add(c[1], a[i], 1); continue; } int ttmp = ((getSum(c[K], ed) - getSum(c[K], bg))%M + M)%M; for (k=K-1; k>=1; k--) { tmp = ((getSum(c[k], ed) - getSum(c[k], bg))%M + M)%M; Add(c[k+1], a[i], tmp); } Add(c[K], a[i], ttmp); Add(c[1], a[i], 1); } int ans=getSum(c[K], n); printf ("%dn", ans); } return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/376075.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号