这场比赛我及时的参加了,但是打的时候状态实在是太烂了,只做出来了Div2的AB题。

A Little C loves 3 I

直接构造就行。

B Cover Points

应该很容易就看出来这个等腰三角形的腰是坐标轴,然后就用\(y=b-x\)的一次函数往上套就行了。

C Enlarge GCD

这个题比赛的时候我交了4次,没有一次想到要先除gcd的。实际上在赛场上我已经接近正解了,就是枚举素因子,然后把最多的那个留着,其他的删掉就好了啊。

好吧,说起来简单,真正要把代码写到AC还是要看std的(摔

话说std的码都好短啊。

Code:

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <algorithm>
  4. #include <cmath>
  5. #include <vector>
  6. const int N = 15000000+10;
  7. const int M = 3e5 + 10;
  8. int pri[N], notp[N], sz;
  9. int n, d[N], a[M];
  10. void get_pri() {
  11. notp[1] = 1;
  12. for (int i = 2; i < N; ++i) {
  13. if (!notp[i]) notp[i] = pri[++sz] = i;
  14. for (int j = 1; j <= sz; ++j) {
  15. int k = i * pri[j];
  16. if (k >= N) break;
  17. notp[k] = pri[j];
  18. if (i % pri[j] == 0) break; // 我这里竟然写错了
  19. }
  20. }
  21. }
  22. int gcd(int x, int y) { return !y?x:gcd(y, x%y); }
  23. int main() {
  24. scanf("%d", &n);
  25. get_pri();
  26. int Gcd = 0;
  27. for (int i = 1; i <= n; ++i) {
  28. scanf("%d", &a[i]);
  29. Gcd = gcd(a[i], Gcd);
  30. }
  31. int ans = 0;
  32. for (int i = 1, x; i <= n; ++i) {
  33. for (int j = a[i]/Gcd; j > 1; )
  34. for (++d[x = notp[j]]; notp[j] == x;) j /= notp[j];
  35. }
  36. for (int i = 1; i < N; ++i) ans = std::max(ans, d[i]);
  37. printf("%d\n", !ans ? -1 : n - ans);
  38. return 0;
  39. }

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:

  1. #include <cstdio>
  2. typedef long long LL;
  3. const int N = 1e6 + 10;
  4. const LL MOD = 1e9 + 7;
  5. int n, fa[N];
  6. LL s[N], f[N], F[N];
  7. LL gcd(LL x, LL y) { return !y?x:gcd(y, x%y); }
  8. int main() {
  9. scanf("%d", &n);
  10. for (int i = 1; i <= n; ++i) scanf("%d", &s[i]);
  11. for (int i = 2; i <= n; ++i) {
  12. scanf("%d", &fa[i]);
  13. }
  14. for (int i = n; i; --i) s[fa[i]] += s[i];
  15. for (int i = n; i; --i) {
  16. LL x = s[1] / gcd(s[1], s[i]);
  17. if (x <= n)
  18. ++f[x];
  19. }
  20. for (int i = n; i; --i) {
  21. for (int j = i; (j+=i) <= n; ) f[j] += f[i];
  22. }
  23. F[1] = 1;
  24. LL ans = 0;
  25. for (int i = 1; i <= n; ++i) {
  26. if (f[i] == i) {
  27. ans = (ans + F[i]) % MOD;
  28. for (int j = i; (j+=i) <= n; ) F[j] = (F[j] + F[i]) % MOD;
  29. }
  30. }
  31. printf("%lld\n", ans);
  32. return 0;
  33. }

Div1剩下的那两道题先咕着吧

[CF]Round511的更多相关文章

  1. 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 ...

  2. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  3. cf Round 613

    A.Peter and Snow Blower(计算几何) 给定一个点和一个多边形,求出这个多边形绕这个点旋转一圈后形成的面积.保证这个点不在多边形内. 画个图能明白 这个图形是一个圆环,那么就是这个 ...

  4. ARC下OC对象和CF对象之间的桥接(bridge)

    在开发iOS应用程序时我们有时会用到Core Foundation对象简称CF,例如Core Graphics.Core Text,并且我们可能需要将CF对象和OC对象进行互相转化,我们知道,ARC环 ...

  5. [Recommendation System] 推荐系统之协同过滤(CF)算法详解和实现

    1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...

  6. 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 ...

  7. 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 ...

  8. CF #376 (Div. 2) C. dfs

    1.CF #376 (Div. 2)    C. Socks       dfs 2.题意:给袜子上色,使n天左右脚袜子都同样颜色. 3.总结:一开始用链表存图,一直TLE test 6 (1)如果需 ...

  9. CF #375 (Div. 2) D. bfs

    1.CF #375 (Div. 2)  D. Lakes in Berland 2.总结:麻烦的bfs,但其实很水.. 3.题意:n*m的陆地与水泽,水泽在边界表示连通海洋.最后要剩k个湖,总要填掉多 ...

随机推荐

  1. Jstree在加载时和加载完成的回调方法-sunziren

    1.有时候在使用jstree的时候我们想在它加载完成后立刻执行某个方法,于是我们可以用下面这个jstree自带的回调: .on('ready.jstree', function(event, obj) ...

  2. SP11470 TTM - To the moon[主席树标记永久化]

    SP11470 TTM - To the moon C l r d:区间 \([L,R]\) 中的数都加 d ,同时当前的时间戳加 1. Q l r:查询当前时间戳区间 \([L,R]\) 中所有数的 ...

  3. 数据类型(8种)和运算符——Java

    一.什么是标识符,它有什么作用(重点掌握) 1. 标识符指的是 标识符是用户编程时使用的名字,用于给变量.常量.函数.语句块等命名,以建立起名称与使用之间的关系.标识符可由任何字母数字字符串形成. 2 ...

  4. waiting list

    Problem: how to cluster non-stationary multivariate time series. What are stationary time series How ...

  5. 记一个js toUpperCase函数 大小写特性

    toUpperCase()是javascript中小写变大写的函数 "ı".toUpperCase() == 'I',"ſ".toUpperCase() == ...

  6. jQuery---手风琴案例+stop的使用(解决动画队列的问题)

    手风琴案例+stop的使用(解决动画队列的问题) stop();// 停止当前正在执行的动画 <!DOCTYPE html> <html lang="en"> ...

  7. linux安装samba服务器

    1- samba介绍 Samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的一个免费软 件,由服务器及客户端程序构成,SMB(Server Messages Block,信息服务块)是 ...

  8. LaTeX技巧005:定制自己炫酷的章节样式实例

    示例一: 实现代码: \usepackage[Lenny]{fncychap} 示例二: 实现代码: \usepackage[avantgarde]{quotchap} \renewcommand\c ...

  9. cmd 下sql语句及结果

    Microsoft Windows [版本 10.0.14393](c) 2016 Microsoft Corporation.保留所有权利. C:\Users\李长青>mysql -uroot ...

  10. MyEclipse启动Tomcat报错:Could not find the main class: org.apache.catalina.startup

    问题描述 Could not find the main class:org.apache.catalina.startup.Bootstrap. Program will exit 问题原因 主要原 ...