AC日记——明明的烦恼 bzoj 1005
思路:
prufer编码+组合数;
代码:
#include <bits/stdc++.h>
using namespace std;
#define maxn 1005
#define maxlen 4000500
struct int666 {
int len;
char ai[maxlen];
void mul(int pos)
{
long long cnt=;
for(int i=;i<len;i++)
{
cnt+=pos*(ai[i]);
ai[i]=cnt%,cnt/=;
}
while(cnt)
{
ai[len]=cnt%;
cnt/=,len++;
}
while(len>&&!ai[len-]) len--;
}
void print()
{
for(int i=len-;i>=;i--) putchar(ai[i]+'');
putchar('\n');
}
};
struct int666 ans;
int n,tot,ai[maxn],m,pi[maxn*],num,bi[maxn*];
bool if_p[maxn*];
inline void in(int &now)
{
int if_z=;now=;
char Cget=getchar();
while(Cget>''||Cget<'')
{
if(Cget=='-')if_z=-;
Cget=getchar();
}
while(Cget>=''&&Cget<='')
{
now=now*+Cget-'';
Cget=getchar();
}
now*=if_z;
}
void euler(int lit)
{
for(int i=;i<=lit;i++)
{
if(!if_p[i]) pi[++num]=i;
for(int v=;pi[v]*i<=lit&&v<=num;v++)
{
if_p[i*pi[v]]=true;
if(i%pi[v]==) break;
}
}
}
void apart(int now,int di)
{
int temp=now;
for(int v=;v<=num;v++)
{
now=temp;
while(now)
{
bi[v]+=di*now/pi[v];
now/=pi[v];
}
}
}
int main()
{
// freopen("bzoj_1005.in","r",stdin);
// freopen("bzoj_1005.out","w",stdout);
ans.len=,ans.ai[]=;
in(n),euler(maxn-);
if(n==)
{
int pos;
in(pos);
if(pos<=) printf("");
else printf("");
return ;
}
for(int i=;i<=n;i++)
{
in(ai[i]);
if(!ai[i])
{
printf("");
return ;
}
if(ai[i]==-) m++;
else tot+=--ai[i];
}
if(tot>n-)
{
puts("");
return ;
}
apart(n-,),apart(n--tot,-);
for(int i=;i<=n;i++) if(ai[i]) apart(ai[i],-);
for(int i=;i<=num;i++)
{
for(int v=;v<=bi[i];v++) ans.mul(pi[i]);
}
for(int i=;i<=n--tot;i++) ans.mul(m);
ans.print();
return ;
}
AC日记——明明的烦恼 bzoj 1005的更多相关文章
- AC日记——[HEOI2012]旅行问题 bzoj 2746
2746 思路: 建立ac自动机,然后把fail树抽出来: 然后在fail树上走lca(神奇): 代码: #include <cstdio> #include <vector> ...
- AC日记——[HNOI2008]GT考试 bzoj 1009
1009 思路: KMP上走DP(矩阵加速): DP[i][j]表示当前在第i位,同是匹配到不吉利串的第j位的方案数: 代码: #include <bits/stdc++.h> using ...
- AC日记——Mato的文件管理 bzoj 3289
3289 思路: 莫队求区间逆序对个数,树状数组维护: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 500 ...
- AC日记——[Scoi2010]序列操作 bzoj 1858
1858 思路: 恶心: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 100005 struct Tree ...
- AC日记——[ZJOI2007]报表统计 bzoj 1058
1058 思路: 平衡树的题: 然而我的平衡树写一次炸一次QwQ: 而且各种tle: 所以stl水过: 代码: #include <set> #include <cstdio> ...
- AC日记——[JSOI2007]建筑抢修 bzoj 1029
1029 思路: 贪心,而且,stl水过: 然而神特么输出que.size()就错! 代码: #include <queue> #include <cstdio> #inclu ...
- AC日记——[JSOI2008]火星人prefix bzoj 1014
1014 思路: 平衡树+二分答案+hash: 好了懂了吧. 代码: #include <cstdio> #include <cstring> #include <ios ...
- AC日记——[HAOI2007]覆盖问题 bzoj 1052
1052 思路: 二分答案: 二分可能的长度: 然后递归判断长度是否可行: 先求出刚好覆盖所有点的矩形: 可行的第一个正方形在矩形的一个角上: 枚举四个角上的正方形,然后删去点: 删去一个正方形后,递 ...
- AC日记——[SCOI2008] 着色方案 bzoj 1079
1079 思路: dp: 我们如果dp方程为15维,每维记录颜色还有多少种: 不仅tle,mle,它还re: 所以,我们压缩一下dp方程: 方程有6维,第i维记录有多少种颜色还剩下i次: 最后还要记录 ...
随机推荐
- URAL - 1627:Join (生成树计数)
Join 题目链接:https://vjudge.net/problem/URAL-1627 Description: Businessman Petya recently bought a new ...
- 使用自己的数据集训练和测试"caffenet"
主要步骤可参考: http://blog.csdn.net/u010194274/article/details/50575284 补充几点: 1. convert函数是ImageMagick包里面的 ...
- mysql中的case when 与if else
大神说:在sql中,能用if else 就不用case when 下面来看看,具体为什么,没有搞清楚,如果有大神知道的提供下资料: Mysql的if既可以作为表达式用,也可在存储过程中作为流程控制 ...
- 南阳ACM 题目71:独木舟上的旅行 Java版
独木舟上的旅行 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别.一条独木舟最多只能乘坐两个人,且乘客的总 ...
- MongoDB入门(8)- c#通过操作MongoDB GridFS实现文件的数据库存储
GridFS介绍 GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件. GridFS GridFS长啥样 /* 1 */ { "_id" : ObjectId(& ...
- 【BZOJ1085】【SCOI2005】骑士精神 [A*搜索]
骑士精神 Time Limit: 10 Sec Memory Limit: 162 MB[Submit][Status][Discuss] Description 在一个5×5的棋盘上有12个白色的 ...
- 【NOIP】提高组2016 蚯蚓
[题目链接]Universal Online Judge [题解]本题最大的特点在于从大到小切以及切分规则一致,都是切成px和x-px. 由这两个特点很容易得到结论,后切的蚯蚓得到的px一定比先切的蚯 ...
- Android通知栏介绍与适配总结
由于历史原因,Android在发布之初对通知栏Notification的设计相当简单,而如今面对各式各样的通知栏玩法,谷歌也不得不对其进行更新迭代调整,增加新功能的同时,也在不断地改变样式,试图迎合更 ...
- MySQL数据库运行环境的搭建
第一步:安装wampserver2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-64b文件,安装过程中可能会遇到问题,把遇到的问题代码复制粘贴到360人工服务,查找方案 ...
- OnLoad & DOMReady
window.onload 事件会在页面或图像加载完成后立即触发(即所有元素的资源都下载完毕).如果页面上有许多图片.音乐或falsh,onload事件会迟迟无法触发.所以出现了DOM Ready事件 ...