题意:构造一个长度为n的串,使得 除了第一个以外,每个位置的前缀和的因子个数恰好等于该位置上的数。

n$\le 100000$

举个例子$a_i$:2   4    6     6    4    8    4    8    4   8

前缀和   :     6   12   18   22  30  34  42  46  54

6的因子:1 2 3 6 为4个  等于a[2]

12的因子:1 2 3 4 6 12 为6个  等于a[3]

18的因子:1 2 3 6 9 18 为6个  等于a[4]

...

...

54的因子:1 2 3 6 9 18 27 54 为8个 等于a[9]

所有都满足,则该列合法

一开始一直在想到哪儿为止会Impossible

然后就打算暴力一发 看到哪儿为止

后来发现正着写,根本写不出来。

于是发现把每个数的因子数写出来,倒着减回去,

每个数回去都只有一条路,最长的就是答案。

比如

27这个数回去 长度为9

26这个数回去 长度为6

...

每个数回去都有一个长度

后来发现只需知道 “那个数减去因子个数” 的 那个数 回去有多长+1就好啦

那只要预处理一下因子个数

正着for一遍,O(1)就能得到长度

(for的是 和 , 长度就是题目输入的n , 需要输出的是 长度最长的那一串回去的路上的数的因子数)

那么打个这样的表,只需1秒钟

int phi[];
int pri()
{
memset(phi, , sizeof(phi));
for(int i=;i<=;i++)
for(int j=i;j<=;j+=i)
phi[j]++;
} int dp[];
void pre()
{
memset(dp, , sizeof(dp));
dp[]=, dp[]=;
for(int i=;i<=;i++)
{
int num=phi[i]+;
// if(num>300 || dp[i-num]==-1)
// dp[i]=-1;
// else
dp[i]=dp[i-num]+;
// printf("%d %d\n", i, dp[i]);
if(dp[i]>=)
{
printf("%d %d\n", i, dp[i]);
break;
}
}
} int main()
{
// freopen("out.txt", "w", stdout);
pri();
pre();
return ;
}

得到的这个1568617就是n为100000的最后一个数

要得到n个数,倒着减回去就好了

 #include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<int, int> PI;
const int N=1e5+;
const double eps=1e-;
const int mod=1e9+; int ans[], d;
int phi[];
void pre()
{
memset(phi, , sizeof(phi));
for(int i=;i<=;i++)
for(int j=i;j<=;j+=i)
phi[j]++;
int x=;
d=;
while(x)
{
ans[d++]=x;
int num=phi[x]+;
x-=num;
}
} int main()
{
pre();
int n;
while(~scanf("%d",&n))
{
int sum=;
for(int i=d-, j=;j<=n;j++, i--)
{
printf("%d", ans[i]-sum);
sum=ans[i];
if(j==n)
puts("");
else
putchar(' ');
}
}
return ;
}

Ural 2047

[杂题]URAL2047. Maths的更多相关文章

  1. 正睿OI DAY3 杂题选讲

    正睿OI DAY3 杂题选讲 CodeChef MSTONES n个点,可以构造7条直线使得每个点都在直线上,找到一条直线使得上面的点最多 随机化算法,check到答案的概率为\(1/49\) \(n ...

  2. dp杂题(根据个人进度选更)

    ----19.7.30 今天又开了一个新专题,dp杂题,我依旧按照之前一样,这一个专题更在一起,根据个人进度选更题目; dp就是动态规划,本人认为,动态规划的核心就是dp状态的设立以及dp转移方程的推 ...

  3. wangkoala杂题总集(根据个人进度选更)

    CQOI2014 数三角形 首先一看题,先容斥一波,求出网格内选三个点所有的情况,也就是C(n*m,3);然后抛出行里三点共线的方案数:C(n,3)*m; 同理就有列中三点共线的方案数:n*C(m,3 ...

  4. 2019暑期金华集训 Day6 杂题选讲

    自闭集训 Day6 杂题选讲 CF round 469 E 发现一个数不可能取两次,因为1,1不如1,2. 发现不可能选一个数的正负,因为1,-1不如1,-2. hihoCoder挑战赛29 D 设\ ...

  5. Atcoder&CodeForces杂题11.7

    Preface 又自己开了场CF/Atcoder杂题,比昨天的稍难,题目也更有趣了 昨晚炉石检验血统果然是非洲人... 希望这是给NOIP2018续点rp吧 A.CF1068C-Colored Roo ...

  6. Codeforces 杂题集 2.0

      记录一些没有写在其他随笔中的 Codeforces 杂题, 以 Problemset 题号排序   1326D2 - Prefix-Suffix Palindrome (Hard version) ...

  7. 【Java面试】-- 杂题

    杂题 2019-11-03  21:09:37  by冲冲 1.类加载器的双亲委派机制 类加载器:把类通过类加载器加载到JVM中,然后转换成class对象(通过类的全路径来找到这个类). 双亲委派机制 ...

  8. 贪心/构造/DP 杂题选做Ⅱ

    由于换了台电脑,而我的贪心 & 构造能力依然很拉跨,所以决定再开一个坑( 前传: 贪心/构造/DP 杂题选做 u1s1 我预感还有Ⅲ(欸,这不是我在多项式Ⅱ中说过的原话吗) 24. P5912 ...

  9. 贪心/构造/DP 杂题选做Ⅲ

    颓!颓!颓!(bushi 前传: 贪心/构造/DP 杂题选做 贪心/构造/DP 杂题选做Ⅱ 51. CF758E Broken Tree 讲个笑话,这道题是 11.3 模拟赛的 T2,模拟赛里那道题的 ...

随机推荐

  1. C# 语言如何获取json格式的数据,不用javascript用c#实现。。。

    {'state' : 1,'data':{'list':[{'id': 123, 'name': '诸葛天邪','level': 10,'country': 1,}]}} 比如我要获取里面的 id 该 ...

  2. Abstract_Factory

    #include <iostream> using namespace std; #define DESTORY_POINTER(ptr) if (ptr) { delete ptr; p ...

  3. protobuf编译报错

    在下载protobuf进行编译的时候会出现如图所示的错误 修改 C:\protobuf-2.4.1\gtest\include\gtest\internal\gtest-tuple.h(C:是我解压p ...

  4. Waring:This LinearLayout layout or its FrameLayout parent is useless; transfer the background attribute to the other view

    解决方法请参考: You have a single component (row) vertical linear layout, containing another linear layout. ...

  5. Mysql备份--mysqldump&outfile

    1.备份工具mysqldump 客户端和服务器端都能用select outfile 只能写到服务器端 2.按表单位备份 a.单个表备份 mysqldump -uusername -p database ...

  6. objdump的使用方法和 symbol table的每列的含义

    一.objdump的用法 objdump命令的man手册 objdump     [-a] [-b bfname|     --target=bfdname] [-C] [--debugging]   ...

  7. 【Web学习日记】——C#引用WebService,从配置文件改变引用地址

    开发环境:Win7 32位,开发工具:VS2013,.Net:4.0 初用WebService,很多地方都搞不清楚怎么回事,但稍作研究之后,也就用上了,根本就没有考虑后续事情. 但是,随着项目的进行, ...

  8. 查看SQL Server 备份信息

    RESTORE HEADERONLY FROM DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008\MSSQL\Back ...

  9. 微软职位内部推荐-Senior SDE for Win Shell Exp

    微软近期Open的职位: Job posting title: Senior Software Development Engineer Location: China, Beijing Divisi ...

  10. MVC 使用 FluentScheduler 定时器计划任务

    MVC 使用 FluentScheduler 定时器计划任务 MacBook Pro 只有四个 USB Type-C 接口是否错了? 一项新技术的诞生总会对已存在的事物造成冲击或影响,如果大家都害怕冲 ...