[杂题]URAL2047. Maths
题意:构造一个长度为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的更多相关文章
- 正睿OI DAY3 杂题选讲
正睿OI DAY3 杂题选讲 CodeChef MSTONES n个点,可以构造7条直线使得每个点都在直线上,找到一条直线使得上面的点最多 随机化算法,check到答案的概率为\(1/49\) \(n ...
- dp杂题(根据个人进度选更)
----19.7.30 今天又开了一个新专题,dp杂题,我依旧按照之前一样,这一个专题更在一起,根据个人进度选更题目; dp就是动态规划,本人认为,动态规划的核心就是dp状态的设立以及dp转移方程的推 ...
- wangkoala杂题总集(根据个人进度选更)
CQOI2014 数三角形 首先一看题,先容斥一波,求出网格内选三个点所有的情况,也就是C(n*m,3);然后抛出行里三点共线的方案数:C(n,3)*m; 同理就有列中三点共线的方案数:n*C(m,3 ...
- 2019暑期金华集训 Day6 杂题选讲
自闭集训 Day6 杂题选讲 CF round 469 E 发现一个数不可能取两次,因为1,1不如1,2. 发现不可能选一个数的正负,因为1,-1不如1,-2. hihoCoder挑战赛29 D 设\ ...
- Atcoder&CodeForces杂题11.7
Preface 又自己开了场CF/Atcoder杂题,比昨天的稍难,题目也更有趣了 昨晚炉石检验血统果然是非洲人... 希望这是给NOIP2018续点rp吧 A.CF1068C-Colored Roo ...
- Codeforces 杂题集 2.0
记录一些没有写在其他随笔中的 Codeforces 杂题, 以 Problemset 题号排序 1326D2 - Prefix-Suffix Palindrome (Hard version) ...
- 【Java面试】-- 杂题
杂题 2019-11-03 21:09:37 by冲冲 1.类加载器的双亲委派机制 类加载器:把类通过类加载器加载到JVM中,然后转换成class对象(通过类的全路径来找到这个类). 双亲委派机制 ...
- 贪心/构造/DP 杂题选做Ⅱ
由于换了台电脑,而我的贪心 & 构造能力依然很拉跨,所以决定再开一个坑( 前传: 贪心/构造/DP 杂题选做 u1s1 我预感还有Ⅲ(欸,这不是我在多项式Ⅱ中说过的原话吗) 24. P5912 ...
- 贪心/构造/DP 杂题选做Ⅲ
颓!颓!颓!(bushi 前传: 贪心/构造/DP 杂题选做 贪心/构造/DP 杂题选做Ⅱ 51. CF758E Broken Tree 讲个笑话,这道题是 11.3 模拟赛的 T2,模拟赛里那道题的 ...
随机推荐
- 《通过脚本查看哪些ip被占用》shell笔记
改脚本查看哪些ip被占用. #!/bin/bash for i in {1..10} //赋予i变量1-10 do //干什么 ping -c1 -w1 192.168.7.$i && ...
- 主机win10与虚拟机ubuntu14.04通信
主机是笔记本win10系统,在virtualbox虚拟机里面安装了ubuntu14.04系统,现在想让它们互联互通. 我的笔记本是通过路由器无线连接接入的互联网,设置了固定ip:192.168.0.4 ...
- C# 网卡IP(网上资料整理)
//设置对外访问所使用网卡的IP string sendingIp = "192.168.0.1"; //设置对外访问所使用的端口 ; Uri uri = new Uri(&quo ...
- win8系统下保存出现闪退的解决方案
不知道有没有人和我一样用的是win8系统,同时还遇到保存QQ截图保存闪退.保存sublime文件闪推.系统自带截图保存闪退.....更可恶的是我用chrome中百度搜索“win8保存东西闪退”结果浏览 ...
- 如果在配置中将“system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled”设置为 true,则需要终结点指定相对地址。如果在终结点上指定相对侦听 URI,则该地址可以是绝对地址。若要解决此问题,请为终结点“http://localhost/Service1.svc”指定相对 URI。
问题: 如果在配置中将"system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled"设置为 ...
- 自定义一个WPF的PathButton
一.背景 做项目时总是少不了Button,但是普通的Button大家都不喜欢用,总是想要自定义的Button,正好项目中用到不要边框的Button,并且是形状也是根据功能不同而变化的,并且窗口程序是会 ...
- Mysql ubuntu下的安装卸载
删除 mysql sudo apt-get autoremove --purge mysql-server-5.0sudo apt-get remove mysql-serversudo apt-ge ...
- 从零开始学ios开发(十九):Application Settings and User Defaults(上)
在iphone和ipad中,有一个东西大家一定很熟悉,那个东西就是Settings. 这次要学习的东西说白了很简单,就是学习如何在Settings中对一个app的某些属性进行设置,反过来,在app中更 ...
- php中函数内使用static修饰变量
首先理解静态变量的区别,声明一个函数test() function num(){ $a = 0; echo $a; $a++; } num();num();num(); //输出000 functio ...
- Project Settings -> Editor 设置详解
Default Behavior Mode (默认行为模式) 定义项目在导入Assets时的默认导入设置,当设置为3D模式时,Unity假设将导入的文件创建为纹理类型(如:PNG文件):当设置为2D时 ...