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(乐滋 ...
随机推荐
- Python中的解决中文字符编码的问题
python3中str默认为Unicode的编码格式 python2中str默认为bytes类型的编码格式 Unicode是一32位编码格式,不适合用来传输和存储,所以必须转换成utf-8,gbk等等 ...
- Linux中如何安装Apache服务器
Linux中如何安装Apache服务器 由于学习的需要,所有手动安装了一下Apache源码包,安装过程中的问题千奇百怪,但是如果弄清楚了问题出在哪里,那么也不是太难.如果有学习者出现安装中的问题,可仔 ...
- 十几行代码带你用Python批量实现txt转xls,方便快捷
前天看到后台有一兄弟发消息说目前自己有很多txt 文件,领导要转成xls文件,问用python怎么实现,我在后台简单回复了下,其实完成这个需求方法有很多,因为具体的txt格式不清楚,当然如果是有明确分 ...
- 【python 3.6】python读取json数据存入MySQL(二)
在网上找到一个包含全国各省市经纬度的json文件,也可以通过上次的办法,解析json关键字,构造SQL语句,插入数据库. JSON文件格式如下: [ { "name": " ...
- shell基础 -- 入门篇
shell 英文含义是“壳”,这是相对于内核来说的,shell 也确实就像是内核的壳,通常来说,所有对内核的访问都要经由 shell .同时,shell 还是一门功能强大的编程语言.shell 是 L ...
- pyextend库-unpack列表集合字符串解包函数
pyextend - python extend lib unpack (iterable, count, fill=None) 参数: iterable: 实现 __iter__的可迭代对象, 如 ...
- mysql中latin1编码中文转utf8
在mysql中,对应的表字段编码通常默认为lartin1编码,在本地客户端显示的时候看着是乱码,但是通过mysql -u -p -h命令登录后,select查询到数据是正常的,通过jdbc或者php等 ...
- USACO 3.2.6 Sweet Butter 香甜的黄油(最短路)
Description 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1<=N<=500)只奶牛会过来舔它,这样就能做出能卖好价钱的超甜黄油.当然,他 ...
- PSP Daily软件Alpha版本——基于NABCD评论,及改进建议
1.根据(不限于)NABCD评论作品的选题: 此软件的用户人群较为明确,即:用户(软件工程课上学生)记录例行报告.写每周PSP表格和统计的需求.潜在用户还有未来该课堂的学生和需要用PSP方法记录任务完 ...
- HDU 5465 Clarke and puzzle Nim游戏+二维树状数组
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5465 Clarke and puzzle Accepts: 42 Submissions: 26 ...