绝了场上居然没做这一题

题目大意:给你一个数$x=\Pi_{i=1}^{n}a_i!$。

你需要将x表示为$x=\Pi_{i=1}^{m}(c_i!)^{d_i}p$

满足$p$无法再分解,且$(c_1,d_1,c_2,d_2,...,c_m,d_m)$的字典序最大。

数据范围:$1≤n,a_i≤10^5$。

我们考虑预处理出$10^5$内的质数。

读入数列$a$后,我们对数列$a$进行一些处理。令$sum[i]$表示数列$a$中出现了多少个质因子$p[i]$,其中$p[i]$表示第i个质数。

然后,我们从大到小枚举$c_i$,然后再判断$d_i$是否可行。

这么搞复杂度貌似是$O(\dfrac{n^2}{\ln\ n})$的,然而实际上它跑得飞快?

 #include<bits/stdc++.h>
#define M 100010
#define L long long
using namespace std; int pri[M]={},las[M]={},id[M]={},use=;
void init(){
for(int i=;i<M;i++){
if(!las[i]) id[pri[++use]=i]=use,las[i]=;
for(int j=;j<=use&&i*pri[j]<M;j++){
las[i*pri[j]]=i;
if(i%pri[j]==) break;
}
}
} L a[M]={},sum[M]={},now[M]={};
int ansx[M]={},ansy[M]={},cnt=,top=;
bool cmp(){
for(int i=top;i;i--)
if(sum[i]<now[i]) return ;
return ;
} int main(){
init(); top=use;
int n; scanf("%d",&n);
for(int i=n,x;i;i--) scanf("%d",&x),a[x]++;
for(int i=M-;i;i--) a[i]+=a[i+];
for(int i=M-;i;i--){
for(int j=i;j>;j=las[j]){
int p=id[j/las[j]];
sum[p]+=a[i],now[p]++;
}
}
for(int i=M-;i>;i--){
if(cmp()){
L mns=M;
for(int j=top;j;j--) if(now[j]) mns=min(mns,sum[j]/now[j]);
for(int j=top;j;j--) sum[j]-=now[j]*mns;
cnt++; ansx[cnt]=i; ansy[cnt]=mns;
}
for(int j=i;j>;j=las[j]){
int p=id[j/las[j]];
now[p]--;
}
while(top&&now[top]==) top--;
}
printf("%d\n",cnt);
for(int i=;i<=cnt;i++) printf("%d %d\n",ansx[i],ansy[i]);
}

【xsy2815】净空 大暴力的更多相关文章

  1. 大暴力——[HAOI]2012音量调节

    题目:[HAOI]2012音量调节 描述: 问题描述 一个吉他手准备参加一场演出.他不喜欢在演出时始终使用同一个音量,所以他决定每一首歌之前他都要改变一次音量.在演出开始之前,他已经做好了一个列表,里 ...

  2. BZOJ 1800: [Ahoi2009]fly 飞行棋【思维题,n^4大暴力】

    1800: [Ahoi2009]fly 飞行棋 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1689  Solved: 1335[Submit][St ...

  3. 牛客网 暑期ACM多校训练营(第二场)J.farm-STL(vector)+二维树状数组区间更新、单点查询 or 大暴力?

    开心.jpg J.farm 先解释一下题意,题意就是一个n*m的矩形区域,每个点代表一个植物,然后不同的植物对应不同的适合的肥料k,如果植物被撒上不适合的肥料就会死掉.然后题目将每个点适合的肥料种类( ...

  4. bzoj 3489: A simple rmq problem k-d树思想大暴力

    3489: A simple rmq problem Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 551  Solved: 170[Submit][ ...

  5. Vijos P1786 质因数分解【暴力】

    质因数分解 背景 NOIP2012普及组第一题 描述 已知正整数n是两个不同的质数的乘积试求出较大的那个质数. 格式 输入格式 输入只有一行包含一个正整数n. 输出格式 输出只有一行包含一个正整数p, ...

  6. CDOJ 1292 卿学姐种花 暴力 分块 线段树

    卿学姐种花 题目连接: http://acm.uestc.edu.cn/#/problem/show/1292 Description 众所周知,在喵哈哈村,有一个温柔善良的卿学姐. 卿学姐喜欢和她一 ...

  7. [OpenJudge8786][暴力DP]方格取数

    方格取数 总时间限制: 1000ms 内存限制: 65536kB [描述] 设有N*N的方格图(N<=10),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0.如下图所示(见样例): ...

  8. 美团2018年CodeM大赛-资格赛 分数 暴力模拟

    链接:https://www.nowcoder.com/acm/contest/138/D来源:牛客网 小胖参加了人生中最重要的比赛——MedoC资格赛.MedoC的资格赛由m轮构成,使用常见的“加权 ...

  9. thusc2016游记&&滚粗记&&酱油记

    #include <cstdio> using namespace std; int main(){ puts("转载请注明出处:http://www.cnblogs.com/w ...

随机推荐

  1. 2018.12.23 bzoj2865&&1396: 字符串识别(后缀自动机+线段树)

    传送门 卡空间差评! 题意简述:给一个字串,对于每个位置求出经过这个位置且只在字串中出现一次的子串的长度的最小值. 解法:先建出samsamsam,显然只有当sizep=1size_p=1sizep​ ...

  2. C++程序生成.exe文件,在文件夹中运行时闪现问题

    问题描述:在IDE(此为Dev-C++)中编写C++程序,运行时会产生如下文字 但我想取消这三行的显示. 解决方法:1:在IDE中运行时,“请按任意键继续”是消失不掉的,但在该程序的保存路径下可以消灭 ...

  3. SDIBT 2345 (3.2.1 Factorials 阶乘)

    Description N的阶乘写作N!表示小于等于N的所有正整数的乘积.阶乘会很快的变大,如13!就必须用32位整数类型来存储,70!即使用浮点数也存不下了.你的任务是找到阶乘最后面的非零位.举个例 ...

  4. Silverlight样式定义

    方法一.定义在控件内部 <Canvas Background="Red" Height="100" HorizontalAlignment="L ...

  5. oss+上传文件夹

    最近公司做工程项目,实现文件夹云存储上传. 网上找了一天,发现网上很多代码都存在相似问题,最后终于找到了一个满足我需求的项目. 工程如下: 这里对项目的文件夹传输功能做出分析,怎么实现文件夹上传的,如 ...

  6. 关于Linux学习中的问题和体会

    本科期间未开展过与之相关的课程,所以初次接触Linux难免有些问题!参照老师给的学习资料中内容,逐步解决了一些问题,但还有一些问题没解决,下面列举出自己遇到的一些问题. 1.在环境变量与文件查找专题中 ...

  7. web-day12

    第12章WEB12-JSP&EL&JSTL篇 今日任务 商品信息的显示 教学导航 教学目标 掌握JSP的基本的使用 掌握EL的表达式的用法 掌握JSTL的常用标签的使用 教学方法 案例 ...

  8. 学习protobuf 感想

    前俩篇博文是从大牛的博客抄过来的, 写的都很好. 这里还写简单写下自己的感想: 1. 和json比, protobuff编码后的体积小很多, 这是肯定的. 都源自于protobuff内部的一系列特殊的 ...

  9. 一天学习两个设计模式之Facade模式(外观模式,结构型模式)

    程序这东西随着时间推移,程序会越来越大,程序中的类越来越多,而且他们之间相互关联,这会导致程序结构变得越来越复杂.因此我们在使用他们时候,必须要弄清楚他们之间的关系才能使用他们. 特别是在调用大型程序 ...

  10. Linqpad工具

    下载地址: http://www.linqpad.net/ 可以通过连接数据库,直接测试LINQ语句,并可以转化为Lamda .SQL语句. 非常好用的小工具,记录一下.