题意:构造一个长度为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. IOS_修改项目模板

    1. /Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/File\ Templates/Source/Cocoa\ ...

  2. GITHUB基础使用教程

    windows系统下:   1.安装完成后,还需要最后一步设置,在命令行输入: $ git config --global user.name "Your Name" $ git ...

  3. MemProof教程

    简介 MemProof(内存清道夫)是AutomatedQA出品的一款非常不错的检测内存泄漏和资源泄漏的免费调试工具,适合于WIN32平台下使用DELPHI/C++ BUILDER开发的应用程序. 利 ...

  4. 提高Linux安全性--hosts.allow, hosts.deny 文件修改方法

    有一种办法来提高Linux安全性--修改 hosts.allow , hosts.deny 这2个文件来配置 允许某个ip访问, 或者禁止访问. 可以通过这种方式设置限制 sshd 的远程访问, 只允 ...

  5. Operating Cisco Router

    Operating Cisco Router consider the hardware on the ends of the serial link, in particular where the ...

  6. js 前加分号和感叹号是什么意思?

    ;!function(){}();  ;!有什么用? 从语法上来开,Javascript中分号表示语句结束,在开头加上,可能是为了压缩的时候和别的方法分割一下,表示一个新的语句开始.所以,如果在一个单 ...

  7. View模版的设计

    一个Action多套View模版的设计   回到目录 模块化 这个问题是在做模块化设计时出现的,在Lind.DDD.Plugins模块里,需要对应的模块实体,模块管理者,模块标识接口等,开发时,如果你 ...

  8. JS实现刷新iframe的方法

    <iframe src="1.htm" name="ifrmname" id="ifrmid"></iframe> ...

  9. android手机推送视频到服务端

    项目需求,android手机向服务器推送视频.苦战几个星期终于实现,现记录下来以免以后忘记. 没做过Java,也没做过Android开发,只能现学现卖.在网上找了下搭建开发a  ndroid环境资料, ...

  10. 来吧,给你的Winform列表控件画个妆

    前言 以前看别人的控件好看只有羡慕的份:以前觉得控件重绘是个很复杂的东西:以前知道MSDN很全面很专业却一直没有好好用起来: 作为初级程序猿,不能原地踏步,来吧,让我们一起把 TreeView 美化一 ...