[CF]Round511
这场比赛我及时的参加了,但是打的时候状态实在是太烂了,只做出来了Div2的AB题。
A Little C loves 3 I
直接构造就行。
B Cover Points
应该很容易就看出来这个等腰三角形的腰是坐标轴,然后就用\(y=b-x\)的一次函数往上套就行了。
C Enlarge GCD
这个题比赛的时候我交了4次,没有一次想到要先除gcd的。实际上在赛场上我已经接近正解了,就是枚举素因子,然后把最多的那个留着,其他的删掉就好了啊。
好吧,说起来简单,真正要把代码写到AC还是要看std的(摔
话说std的码都好短啊。
Code:
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <vector>
const int N = 15000000+10;
const int M = 3e5 + 10;
int pri[N], notp[N], sz;
int n, d[N], a[M];
void get_pri() {
notp[1] = 1;
for (int i = 2; i < N; ++i) {
if (!notp[i]) notp[i] = pri[++sz] = i;
for (int j = 1; j <= sz; ++j) {
int k = i * pri[j];
if (k >= N) break;
notp[k] = pri[j];
if (i % pri[j] == 0) break; // 我这里竟然写错了
}
}
}
int gcd(int x, int y) { return !y?x:gcd(y, x%y); }
int main() {
scanf("%d", &n);
get_pri();
int Gcd = 0;
for (int i = 1; i <= n; ++i) {
scanf("%d", &a[i]);
Gcd = gcd(a[i], Gcd);
}
int ans = 0;
for (int i = 1, x; i <= n; ++i) {
for (int j = a[i]/Gcd; j > 1; )
for (++d[x = notp[j]]; notp[j] == x;) j /= notp[j];
}
for (int i = 1; i < N; ++i) ans = std::max(ans, d[i]);
printf("%d\n", !ans ? -1 : n - ans);
return 0;
}
D Little C Loves 3 II
一道鬼畜的找规律的题,有点小凯的疑惑的感觉。这个题没啥意思。
E Region Separation
这个题是一道真正的好题。
首先我们确定这个国家能否被分成\(k\)个level-2的区域,这其实并不难,设总和为\(S\),那么每一块的和应该是\(S/k\),我们从叶子节点开始考虑,记一个节点\(i\)及其子树的和为\(S_i\),每次遇到一个\(S_i = S/k\)的节点就把它和它的子树分出去,这样,我们容易发现,只有\(S_i \equiv 0 (\bmod \dfrac{S}{k})\)的节点有可能被分出去。因此,至少要有\(k\)个节点满足这个条件才有可能把这个国家分成\(k\)份。由于所有的数都是正的,所以也可以推出至多有\(k\)个节点满足这个条件。那么我们就只用考虑有多少个\(k\)满足这个条件了,化简那个条件可以得到\(k\)是\(\dfrac{S}{\gcd (S, S_i)}\)的整数倍(这个有点靠直觉),然后就能DP求\(k\)是否是一个合法的解。
然后就可以得出这样的结论:level-i可以被划分为\(k_i\)个部分当且仅当level-2可以被划分为\(k_i\)个部分且\(k_{i-1}\mid k_i\)(这里稍微有点绕,就是要注意每层的每个区域的权值和相等这个条件),然后就可以DP了,设\(F_i\)为最后一层有\(i\)个区域的方案数,通过枚举\(i\)的倍数来转移就好了。
Code:
#include <cstdio>
typedef long long LL;
const int N = 1e6 + 10;
const LL MOD = 1e9 + 7;
int n, fa[N];
LL s[N], f[N], F[N];
LL gcd(LL x, LL y) { return !y?x:gcd(y, x%y); }
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; ++i) scanf("%d", &s[i]);
for (int i = 2; i <= n; ++i) {
scanf("%d", &fa[i]);
}
for (int i = n; i; --i) s[fa[i]] += s[i];
for (int i = n; i; --i) {
LL x = s[1] / gcd(s[1], s[i]);
if (x <= n)
++f[x];
}
for (int i = n; i; --i) {
for (int j = i; (j+=i) <= n; ) f[j] += f[i];
}
F[1] = 1;
LL ans = 0;
for (int i = 1; i <= n; ++i) {
if (f[i] == i) {
ans = (ans + F[i]) % MOD;
for (int j = i; (j+=i) <= n; ) F[j] = (F[j] + F[i]) % MOD;
}
}
printf("%lld\n", ans);
return 0;
}
Div1剩下的那两道题先咕着吧
[CF]Round511的更多相关文章
- ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1, osid 5166'
凌晨收到同事电话,反馈应用程序访问Oracle数据库时报错,当时现场现象确认: 1. 应用程序访问不了数据库,使用SQL Developer测试发现访问不了数据库.报ORA-12570 TNS:pac ...
- cf之路,1,Codeforces Round #345 (Div. 2)
cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅..... ...
- cf Round 613
A.Peter and Snow Blower(计算几何) 给定一个点和一个多边形,求出这个多边形绕这个点旋转一圈后形成的面积.保证这个点不在多边形内. 画个图能明白 这个图形是一个圆环,那么就是这个 ...
- ARC下OC对象和CF对象之间的桥接(bridge)
在开发iOS应用程序时我们有时会用到Core Foundation对象简称CF,例如Core Graphics.Core Text,并且我们可能需要将CF对象和OC对象进行互相转化,我们知道,ARC环 ...
- [Recommendation System] 推荐系统之协同过滤(CF)算法详解和实现
1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...
- CF memsql Start[c]UP 2.0 A
CF memsql Start[c]UP 2.0 A A. Golden System time limit per test 1 second memory limit per test 256 m ...
- CF memsql Start[c]UP 2.0 B
CF memsql Start[c]UP 2.0 B B. Distributed Join time limit per test 1 second memory limit per test 25 ...
- CF #376 (Div. 2) C. dfs
1.CF #376 (Div. 2) C. Socks dfs 2.题意:给袜子上色,使n天左右脚袜子都同样颜色. 3.总结:一开始用链表存图,一直TLE test 6 (1)如果需 ...
- CF #375 (Div. 2) D. bfs
1.CF #375 (Div. 2) D. Lakes in Berland 2.总结:麻烦的bfs,但其实很水.. 3.题意:n*m的陆地与水泽,水泽在边界表示连通海洋.最后要剩k个湖,总要填掉多 ...
随机推荐
- Android实战项目——家庭记账本(五)
今天博客写的有点晚(好像算是昨天的了),有一点小bug刚刚改完.今天完成的任务有: 1.统计页的布局和功能 2.主页碎片的图表功能 实现效果如下: 其中,统计 ...
- 优酷爱奇艺视频转换为MP4格式工具
本君今天分享两个免费的视频格式转换工具,分别是爱奇艺和优酷的(腾讯的有点复杂,等整理完再分享).教程都是一步步亲手操作的,每一步都有配图.希望各位老板多转发分享,谢谢! 一爱奇艺QSV转MP4格式 解 ...
- 【python基础语法】数字、布尔值(第1天课堂笔记)
# 导入模块 import keyword # print语句将内容输出到控制台 print("hello world!") # pep8编码规范 # 代码快速格式化快捷键:ctr ...
- caj文件转word
转载:https://baijiahao.baidu.com/s?id=1590365105855177484&wfr=spider&for=pc 使用工具: 迅捷caj转word转换 ...
- 【jQuery实例】Ajax登录页面
登录界面是信息系统提供的必备的功能,是提供给用户提供维护信息的接口.接下来,我来带领大家打造一个漂亮.安全的登录界面,使用的技术是ASP.NET+jQuery 先来看看预览效果 Ajax登录重点在 ...
- cf1000E
先缩点构造出一颗树,然后求树的直径就好 const int maxn=3e5+5; const int maxm=6e5+5; const int inf=1e9; int head[maxn],ve ...
- ASP.NET MVC5----数据注解和验证
在使用MVC模式进行开发时,数据注解是经常使用的(模型之上操作),下面是我看书整理的一些常见的用法. 什么是验证,数据注解 验证 从全局来看,发现逻辑仅是整个验证的很小的一部分.验证首先需要管理用户友 ...
- ovs安装教程
原文链接:https://www.cnblogs.com/goldsunshine/p/10331606.html Open vSwitch系列之二 安装指定版本ovs Open vSwitch系 ...
- Selenium3+python自动化016-多线程
1.进程 什么是进程? 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基 ...
- AC自动机(模板+例题)
首先要明白AC自动机是干什么的: AC自动机其实就是一种多模匹配算法,那么你可能会问什么叫做多模匹配算法.下面是我对多模匹配的理解,与多模与之对于的是单模,单模就是给你一个单词,然后给你一个字符串,问 ...