【xsy2815】净空 大暴力
绝了场上居然没做这一题
题目大意:给你一个数$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】净空 大暴力的更多相关文章
- 大暴力——[HAOI]2012音量调节
题目:[HAOI]2012音量调节 描述: 问题描述 一个吉他手准备参加一场演出.他不喜欢在演出时始终使用同一个音量,所以他决定每一首歌之前他都要改变一次音量.在演出开始之前,他已经做好了一个列表,里 ...
- BZOJ 1800: [Ahoi2009]fly 飞行棋【思维题,n^4大暴力】
1800: [Ahoi2009]fly 飞行棋 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1689 Solved: 1335[Submit][St ...
- 牛客网 暑期ACM多校训练营(第二场)J.farm-STL(vector)+二维树状数组区间更新、单点查询 or 大暴力?
开心.jpg J.farm 先解释一下题意,题意就是一个n*m的矩形区域,每个点代表一个植物,然后不同的植物对应不同的适合的肥料k,如果植物被撒上不适合的肥料就会死掉.然后题目将每个点适合的肥料种类( ...
- 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][ ...
- Vijos P1786 质因数分解【暴力】
质因数分解 背景 NOIP2012普及组第一题 描述 已知正整数n是两个不同的质数的乘积试求出较大的那个质数. 格式 输入格式 输入只有一行包含一个正整数n. 输出格式 输出只有一行包含一个正整数p, ...
- CDOJ 1292 卿学姐种花 暴力 分块 线段树
卿学姐种花 题目连接: http://acm.uestc.edu.cn/#/problem/show/1292 Description 众所周知,在喵哈哈村,有一个温柔善良的卿学姐. 卿学姐喜欢和她一 ...
- [OpenJudge8786][暴力DP]方格取数
方格取数 总时间限制: 1000ms 内存限制: 65536kB [描述] 设有N*N的方格图(N<=10),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0.如下图所示(见样例): ...
- 美团2018年CodeM大赛-资格赛 分数 暴力模拟
链接:https://www.nowcoder.com/acm/contest/138/D来源:牛客网 小胖参加了人生中最重要的比赛——MedoC资格赛.MedoC的资格赛由m轮构成,使用常见的“加权 ...
- thusc2016游记&&滚粗记&&酱油记
#include <cstdio> using namespace std; int main(){ puts("转载请注明出处:http://www.cnblogs.com/w ...
随机推荐
- [zhuan]SQLServer查询最近一天,三天,一周,一月,一季度方法
三天 select * from T_news where datediff(day,addtime,getdate())<= 2 and datediff(day,addtime,getdat ...
- select 选中是否包含
$("#regionname1").find("option:contains('"+regionname+"')").prop(" ...
- Java 获取最近时间
public static String getStatetime() throws ParseException{ SimpleDateFormat sdf = new SimpleDateForm ...
- sql随机抽取数据
mysql: select * from tablename order by rand() limit 10 sqlserver: select top 10 * from tablen ...
- PageInfo 前台分页js,带分页栏
在使用mybatis3,并且使用分页,PageHelper 接口,分页还是很好使用的.使用pageInfo的后台分页接口. /** * * @param switchPage方法,切换页码方法 * * ...
- leaflet入门(一)示例
代码示例: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> ...
- 视图,sql注入问题,事物,存储过程
视图:本质是一张虚拟的表数据来自select语句用途是保障原表安全 功能1:隐藏部分数据,开放指定数据功能2:因为视图可以将查询结果保存的特性,我们可以用视图来达到减少书写sql语句的功能 例如:se ...
- 有趣的HTML5 CSS3效果
iphone6 外观:http://www.html5tricks.com/demo/css3-iphone6/index.html 天气图标:http://www.html5tricks.com/d ...
- day22(过滤器Filter)
过滤器 生命周期:初始化 -----过滤-------销毁 作用:过滤url ,特定字符 创建方式:实现一个接口继承Filter package com.baidu.filter; import ja ...
- [au3]复制选择性粘贴文本到excel
案例:在一张网页上有许多你要复制的内容,但是你必须一个一个找到他们,然后一个一个复制出来粘贴到excel表格里.时间一长你的眼睛容易花,而且复制多了容易出错. 方法:当然有许多方法可以自动化的做这一件 ...