160/300pts,rank16(100,30,30)

在自身找毛病,首先做题感觉还不不够认真,比如T3那个我一开始审出来了,然后tmd忘了。。。gg。。。T1AC没啥好赞美的,T2T3暴力没拿全啊。。。

sjzez大佬ztb180pts太强了相比我这个连树剖都不会写的就是个菜狗啊

吐槽T1动态题面,除了T1动态题面,另外两道题都很吼哇(反正我做不出来的题都很吼)(不过感觉ranklist前几页都是T1AC的)

下面是题解


T1.方差

一个长度为\(m\)的序列\(b[1\cdots m]\),我们定义它的方差为\(\displaystyle \frac 1 m \sum_{i=1}^m(b_i-\bar b)\)其中 \(b\)表示序列的平均值。

可以证明的是,如果序列元素均为整数,那么方差乘以\(m^2\)之后,得到的值一定是整数。

现在有一个长度为\(N\)的序列\(a[1\cdots N]\),对每个\(i = 1\)~$ N$,你需要计算,如果我们删除 \(a[i]\),剩下的 \(N-1\) 个元素的方差乘以 \((N-1)^2\) 的值。

下面我们令\(\displaystyle s=\sum_{i=1}^mb_i\)

推推式子,对于序列b的方差乘以\(m^2\),即

\(\displaystyle m \sum_{i=1}^m(b_i-\bar b)\\\displaystyle=m\sum_{i=1}^mb_i^2-2m\sum_{i=1}^mb_i\bar b+m\sum_{i=1}^m\bar b^2\\\displaystyle=m\sum_{i=1}^mb_i^2-2m\bar b\sum_{i=1}^mb_i+m\bar b^2\sum_{i=1}^m1\\\displaystyle=m\sum_{i=1}^mb_i^2-2s\sum_{i=1}^mb_i+m^2\bar b^2\\\displaystyle=m\sum_{i=1}^mb_i^2-2s^2+s^2\\\displaystyle=m\sum_{i=1}^mb_i^2-s^2\)

所以我们只需要处理所有数的平方和,所有数的和就行了。注意精度问题(开long long就够了,请看下面代码的注释)

#include <bits/stdc++.h>
using namespace std; int a[100010], sqra[100010], n;
long long tot, sqrtot; int main()
{
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
scanf("%d", &a[i]);//1e4
sqra[i] = a[i] * a[i];//1e8
tot += a[i];//1e9
sqrtot += sqra[i];//1e13
}
for (int i = 1; i <= n; i++)
{
long long fuck1 = sqrtot - sqra[i];//1e13
long long fuck2 = tot - a[i];//1e9
printf("%lld%c", (n - 1) * fuck1 - fuck2 * fuck2, i == n ? '\n' : ' ');//1e18
}
return 0;
}

T2.分糖果

N 个小朋友围成一圈,你有无穷个糖果,想把其中一些分给他们。

从某个小朋友开始,我们顺时针给他们标号为 1 ~ N。第 i 个小朋友可以得到至多 a[i],至少 1 个糖果。

问,有多少种分配方案使得每一对相邻的小朋友拿到的糖果数不同。答案对 10^9 + 7 取模。

对全部的测试数据,n <= 10^6, a_i <= 10^9

  • 10 分的数据,n <= 4
  • 10 分的数据,n <= 100, a_i <= 20
  • 20 分的数据,n <= 100, a_i <= 100
  • 10 分的数据,n <= 10^5, a_i 全部相等
  • 30 分的数据,n <= 10^5, a_i 为随机生成
  • 20 分的数据,n <= 10^6.

我的预计是骗前50分,最后拿到30分(懒得去找哪里出锅了)。对于\(n\le100,a_i\le100\)的情况,可以直接暴力dp。\(a_i\)全部相等参见pj组T3,打递推or通项。

正解要搞搞rc原理什么的,反正我不透彻,不放代码了

T3.集合划分

visit_world 得到了 {1, 2, ... , n} 的 (2^n - 1) 个非空子集,他计划把这些集合分给小 S 和小 T,每个子集恰好给其中一个人。

分配规则是这样的:

\1. 若存在两个集合属于同一个人,那么这两个集合的并也要属于那个人

\2. 有 m 个集合是小 S 特别喜欢的,你要把这些集合全部给小 S

\3. 小 S 拿到了恰好 k 个集合。

请给出一种方案,或者说明无解。

有30分部分分是m=0的,我写了个假的贪心(太tm假了)当时我都没看出来,直到群里某人提醒。。。

这题特别难,全场1人AC。。。

m=0时候是一个二进制拆分构造什么的

m>0的时候反正各种xjb推不会

以后遇到这种题有两种思路一个是暴力一个是贪心

贪心不对我tm模拟退火,遗传啊

正解不想再透彻一遍了············


作为bruteforce选手,希望下一次tg组赛能拿稳了暴力分,Wannafly比赛好像就是让我掉rating的。。。不过计rating的好像除了tg就Wannafly了

[比赛|考试]nowcoder NOIP提高组组第二场的更多相关文章

  1. NOI.AC NOIP模拟赛 第二场 补记

    NOI.AC NOIP模拟赛 第二场 补记 palindrome 题目大意: 同[CEOI2017]Palindromic Partitions string 同[TC11326]Impossible ...

  2. [比赛|考试]nowcoder NOIPpj组第二场

    nowcoder NOIPpj组第二场 370pts/400pts(100,100,100,70) rank3 给自己的反思:前3题都A了,T4O(N^2)不会就是不会(没准是我懒得推了),DP了70 ...

  3. 牛客nowcoder Noip提高组第四场

    https://www.nowcoder.com/acm/contest/175#question A-动态点分治 Description CJK 是一个喜欢数据结构的同学.一天他看到 BZOJ 40 ...

  4. [比赛|考试]nowcoder 小白月赛7

    牛客小白月赛7 比赛地址.本次比赛我切了8道(ACM赛制),rank(20). 反思:刚入手ACM赛,光追求刺激了,没有总结ACM赛制的经验.是应该多提交>..还是少提交...小白赛还有两道不会 ...

  5. 牛客网提高组第二场---solution

    T1 方差 根据题目要求将式子先写出来注意下面式子中的 $n$ 全部都是 $n-1$$$\begin{aligned}ans&=n^2\times \frac{1}{n}\times \sum ...

  6. 牛客网NOIP赛前集训营-普及组(第二场)和 牛客网NOIP赛前集训营-提高组(第二场)解题报告

    目录 牛客网NOIP赛前集训营-普及组(第二场) A 你好诶加币 B 最后一次 C 选择颜色 D 合法括号序列 牛客网NOIP赛前集训营-提高组(第二场) A 方差 B 分糖果 C 集合划分 牛客网N ...

  7. 本周进步要点20161023(含李笑来第二场live笔记要点)

    本周主要忙于去武汉参加iDOF2016智能数字油田会议,会上做了题为“油田SOA及云平台的系统思考与实践”的报告,为了准备这篇报告,用到了一些以前学过的知识,具体内容见“参加iDOF2016会议的收获 ...

  8. NOIP提高组2004 合并果子题解

    NOIP提高组2004 合并果子题解 描述:在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消 ...

  9. 2018牛客暑期ACM多校训练营第二场(有坑未填)

    第二场终于等来学弟 开始(被队友带飞)的开心(被虐)多校之旅 A   run A题是一个递推(dp?)+前缀和 因为看数据量比较大 就直接上前缀和了 一个比较简单的递推 没有太多难点 签到题 需要注意 ...

随机推荐

  1. CSS3新特性详解

    本文讲解CSS3相关实用知识点 CSS3相关实用知识点目录 边框设置 颜色设置 背景设置 渐变使用 超出文本设置 阴影设置 CSS3变换设置 过渡设置 动画设置 多列布局 BoxSizing设置 弹性 ...

  2. 第三章 深入分析Java Web的中文乱码问题(待续)

    几种常见的编码格式 在Java中需要编码的场景 在Java中如何编解码 在Java Web中涉及的编解码 在JS中的编码问题 常见问题分析 一种繁简转换的实现方式

  3. xcode中用pods管理第三方库<转>

    安装pods :http://www.cnblogs.com/wangluochong/p/5567082.html 史上最详细的CocoaPods安装教程 --------------------- ...

  4. linux系统 使用git图形化管理工具———gitk

    运行安装命令: sudo apt-get install gitk 运行命令打开gitk : gitk

  5. 将字符串str1复制为字符串str2的三种方法

    1.自己编写函数,将两个字符串进行复制 #include<iostream> using namespace std; int main(){ char str1[]="I lo ...

  6. docker学习(2)基本命令

    原文地址:http://blog.csdn.net/we_shell/article/details/38368137 1. 查看docker信息(version.info) # 查看docker版本 ...

  7. 22、linux的ssh互信配置

    转载:https://blog.csdn.net/hrn1216/article/details/51568830 https://blog.csdn.net/u013144287/article/d ...

  8. Entity Framework Code-First(22):Code-based Migration

    Code-based Migration: Code-based migration is useful when you want more control on the migration, i. ...

  9. Sql Server 2008 Management studio安装教程

    Sql Server 2008 Management studio安装教程     以下介绍Visual Studio 2010已安装后,sql server 2008 management stud ...

  10. CodeForces 658C Bear and Forgotten Tree 3 (构造)

    题意:构造出一个 n 个结点,直径为 m,高度为 h 的树. 析:先构造高度,然后再构造直径,都全了,多余的边放到叶子上,注意直径为1的情况. 代码如下: #pragma comment(linker ...