Contest 1
A:注意到模数是要求lcm的数的倍数,直接先取模就可以了。考场脑抽,对其质因数分解判了一下每个因子有没有,当然也行。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define P 1234567890
int a=;
int a2,a9,a3607,a3803,aP;
int gcd(int n,int m){return m==?n:gcd(m,n%m);}
int main()
{
freopen("lcm.in","r",stdin);
freopen("lcm.out","w",stdout);
char c=getchar();
while (c>=''&&c<='')
{
int x=c^;
a2=x&;
a9=(a9*+x)%;
a3607=(a3607*+x)%;
a3803=(a3803*+x)%;
aP=(10ll*aP+x)%P;
c=getchar();
}
if (a2) aP=2ll*aP%P;
if (a3607) aP=3607ll*aP%P;
if (a3803) aP=3803ll*aP%P;
if (a9)
if (a9%==) aP=3ll*aP%P;
else aP=9ll*aP%P;
cout<<aP;
return ;
}
B:学傻系列。排列计数一般将数从小到大加进去考虑,于是设f[i][j]为i个数的排列其中有j个位置不合法的方案数,考虑每次往里加i+1,可以发现如果在上升段每个数的左侧或下降段每个数的右侧插入会使不合法位置--,反之则++。特殊情况是开头的下降段和结尾的上升段,于是增加二维01记录。正解考虑最大值出现位置于是变成了优美的卷积形式。当然原题n只有1000我的辣鸡dp也能A了。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 1010
int n,m,f[N][N][][]; //head tail up 0 down 1
void inc(int &x,int y){x+=y;if (x>=m) x-=m;}
int main()
{
freopen("irrev.in","r",stdin);
freopen("irrev.out","w",stdout);
n=read(),m=read();
if (n==) {cout<<;return ;}
if (n==) {cout<<;return ;}
f[][][][]=,f[][][][]=,f[][][][]=,f[][][][]=;
for (int i=;i<n;i++)
for (int j=;j<=i-;j++)
for (int x=;x<=;x++)
for (int y=;y<=;y++)
{
if (x==) inc(f[i+][j][][y],f[i][j][x][y]);
else
{
inc(f[i+][j+][][y],f[i][j][x][y]);
inc(f[i+][j][][y],f[i][j][x][y]);
}
if (y==) inc(f[i+][j][x][],f[i][j][x][y]);
else
{
inc(f[i+][j+][x][],f[i][j][x][y]);
inc(f[i+][j][x][],f[i][j][x][y]);
}//head&&tail&&special check
if (j) inc(f[i+][j-][x][y],1ll*f[i][j][x][y]*j%m);
inc(f[i+][j+][x][y],1ll*f[i][j][x][y]*(i--j-(x==)-(y==))%m);
}
cout<<((f[n][][][]+f[n][][][])%m+(f[n][][][]+f[n][][][])%m)%m;
return ;
}
C:找规律容易发现系数是组合数。(伪)扩展lucas或者质因数分解都可以。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 1050
#define P 100007
int n,m,a[N],f[][N],C[N],C0[][N],fac[][N],inv[][N];
int lucas(int x,int n,int m,int p)
{
if (m>n) return ;
if (n<p) return 1ll*fac[x][n]*inv[x][n-m]%p*inv[x][m]%p;
return 1ll*lucas(x,n%p,m%p,p)*lucas(x,n/p,m/p,p)%p;
}
void getC(int x,int p)
{
fac[x][]=;for (int i=;i<p;i++) fac[x][i]=1ll*fac[x][i-]*i%p;
inv[x][]=inv[x][]=;for (int i=;i<p;i++) inv[x][i]=p-1ll*(p/i)*inv[x][p%i]%p;
for (int i=;i<p;i++) inv[x][i]=1ll*inv[x][i-]*inv[x][i]%p;
for (int i=;i<=n;i++) C0[x][i]=lucas(x,m,i,p);
}
int getinv(int x,int y)
{
for (int i=;i<y;i++)
if (1ll*i*x%y==) return i;
}
void crt()
{
int a=getinv(,),b=getinv(,);
for (int i=;i<=n;i++)
C[i]=(1ll*C0[][i]*%P*b%P+1ll*C0[][i]*%P*a%P)%P;
}
int main()
{
freopen("difer.in","r",stdin);
freopen("difer.out","w",stdout);
n=read(),m=read();
for (int i=;i<=n;i++) a[i]=read();
getC(,);getC(,);
crt();
for (int i=;i<=n;i++) if (i&) C[i]=P-C[i];
for (int i=;i<=n;i++)
{
int x=;
for (int j=i;j>=&&i-j<=m;j--)
x=(x+1ll*C[i-j]*a[j]%P)%P;
cout<<x<<endl;
}
return ;
}
result:300 rank1
Contest 1的更多相关文章
- Programming Contest Problem Types
Programming Contest Problem Types Hal Burch conducted an analysis over spring break of 1999 and ...
- hdu 4946 2014 Multi-University Training Contest 8
Area of Mushroom Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- 2016 Multi-University Training Contest 2 D. Differencia
Differencia Time Limit: 10000/10000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tot ...
- 2016 Multi-University Training Contest 1 G. Rigid Frameworks
Rigid Frameworks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- hdu-5988 Coding Contest(费用流)
题目链接: Coding Contest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Ot ...
- ZOJ 3703 Happy Programming Contest
偏方记录背包里的物品.....每个背包的价值+0.01 Happy Programming Contest Time Limit: 2 Seconds Memory Limit: 65536 ...
- 2012 Multi-University Training Contest 9 / hdu4389
2012 Multi-University Training Contest 9 / hdu4389 打巨表,实为数位dp 还不太懂 先这样放着.. 对于打表,当然我们不能直接打,这里有技巧.我们可以 ...
- 2014 Multi-University Training Contest 9#11
2014 Multi-University Training Contest 9#11 Killing MonstersTime Limit: 2000/1000 MS (Java/Others) ...
- 2014 Multi-University Training Contest 9#6
2014 Multi-University Training Contest 9#6 Fast Matrix CalculationTime Limit: 2000/1000 MS (Java/Oth ...
- 校际联合Contest
每次开一个坑都像是重新被碾压的预感 最近的新闻,以前很喜欢乔任梁的<复活>...然后他就死了...感觉我再多愁善感一点的话...就要悲伤逆流成河了吧... Contest 09/24(乐滋 ...
随机推荐
- 【转】odoo学习之:开发字段解析
odoo新API中,字段类型不变,继承改变 1.旧的API定义模型: from openerp.osv import osv,fields class oldmodel(osv.osv): #模型名称 ...
- debug 调试原理理解
引言: 昨天,看了一篇文章,很受启发,记得之前听别的人远程调试过代码,觉得很神奇,在自己程序里打断点,连接远程服务器,开启调试后可以调用远程方法来看数据的输入和输出,不需要查找问题,重新部署,测试问题 ...
- 【LG4091】[HEOI2016/TJOI2016]求和
[LG4091][HEOI2016/TJOI2016]求和 题面 要你求: \[ \sum_{i=0}^n\sum_{j=0}^iS(i,j)*2^j*j! \] 其中\(S\)表示第二类斯特林数,\ ...
- SaltStack入门篇(五)之salt-ssh的使用以及LAMP状态设计部署
1.salt-ssh的使用 官方文档:https://docs.saltstack.com/en/2016.11/topics/ssh/index.html ()安装salt-ssh [root@li ...
- RegExp,实现匹配合法邮箱(英文邮箱)的正则表达式
邮箱列表:@qq.com.@vip.qq.com.@foxmail.com,数字邮箱暂时不考虑 以下邮箱列表用于测试: lihaha@qq.com lihaha@vip.qq.com lihaha@f ...
- L013-linux基础正则表达式手把手实战讲解小节
L013-linux基础正则表达式手把手实战讲解小节 这么一看又有10天没更新博客了,最近也一直在学就是时间比较闲散,再加上做上次老师留的十多道题,所以时间比较紧张,本来做完题准备直接先看L014讲解 ...
- Hibernate各种主键生成策略与配置详解(转)
原文链接:http://www.cnblogs.com/hoobey/p/5508992.html 1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate ...
- JS基础,课堂作业,计算器
网页内的简单计算器 <script> var a = parseInt(prompt("请输入第一个数字:")); var b = parseInt(prompt(&q ...
- Python 3 利用 Dlib 实现摄像头人脸检测特征点标定
0. 引言 利用 Python 开发,借助 Dlib 库捕获摄像头中的人脸,进行实时人脸 68 个特征点标定: 支持多张人脸: 有截图功能: 图 1 工程效果示例( gif ) 图 2 工程效果示例( ...
- scikit-learn 0.18中的cross_validation模块被移除
环境:scikit-learn 0.18 , python3 from sklearn.cross_validation import train_test_split from sklearn.gr ...