2017.07.10【NOIP提高组】模拟赛B组小结

来源:互联网 发布:云计算分析报告 编辑:程序博客网 时间:2024/06/08 06:02

T1jzoj3927. 【NOIP2014模拟11.6】可见点数

Description

ZPS经过长期的努力争取,终于成为了0901班的领操员,他要带领0901班参加广播操比赛。现在0901班的队伍可以看作是一个n*n的点阵,每个人都站在格点上。现在作为领操员的ZPS站(0,0)点,他想知道如果0901班的队伍站齐了,他能看到多少个人的脸(假设每个人的身高相同,体积相同)。

Input

一个正整数n。

Output

ZPS能看到多少个人的脸(当然他是看不到自己的脸的)。

Sample Input

3

Sample Output

5

Data Constraint

40%的数据,n<=1500。
100%的数据,n<=100000。
想法:
这是一个(1~n)*(1~n)的矩阵,然后他站在(1,1)上。。
它能看到的点(i,j)满足,从(1,1)到(i,j)的线段上没有其他点,即gcd(i-1,j-1)=1
N^2做法
N根号n,很明显,把这个矩阵掰开两半,i=(2~n),j=(1~i-1),那么对于第i列,
有phi(i-1)行j满足gcd(i-1,j-1)=1,然后还有一个(2,2)
因此ans=sigma(phi(i))(i=1~n-1)+1(n>1)

T2jzoj3928. 【NOIP2014模拟11.6】射击

Description

有问题,找副连,无聊的时候当然也可以找他啦。小W找到了他的叔叔——东厂厂长——宇宙超级无敌老WS yy。他们叔侄两个商量之后决定用弹弓打破社区里的一些窗户,但是弹弓每秒只能彻底打破一扇窗户。而且如果某户窗户的主人回来了的话,他们就不能进行破坏了(不然会死得很惨的)。因为有的人装的玻璃好,有的人装的玻璃差,有的人装的玻璃高,有的人装的玻璃矮,所以你不能要求他们叔侄两个打破不同的窗户获得的快乐值必须相同。现在他们想知道在能活着的情况下能够获得的最大快乐值。

Input

第一行一个正整数n,表示共有n个窗户。
接下来n行,每行两个整数,第一个为窗子的主人回来的时刻(秒),第二个为破坏该窗户所能获得的快乐值。

Output

最大的快乐值。

Sample Input

4
1 19
2 10
1 20
2 15

Sample Output

35
样例说明:
在第0个时刻,他们选择破坏掉3号窗户,在第1个时刻,因为1号窗户的主人已经回来了,所以不能去破坏1号窗户,只能去破坏2号窗户或4号窗户,显然选择4号窗户。总的快乐值就是20+15=35。

Data Constraint

20%的数据,n<=100。
40%的数据,n<=50000。
100%的数据,n<=200000,快乐值的绝对值不超过32767,时刻非负且小于2^31。
想法:
用f[i]表示第i个时刻破坏的窗户的快乐值
设当前已经破坏了t个窗户
对每个窗户以时刻为关键字从小到大快排
如果第i个窗户带来的快乐值为非正数,不理
如果第i个窗户不能被破坏的时刻》当前时刻,第t+1个时刻破坏这个窗户
否则如果这个窗户的快乐值比f[1~t]中最小的快乐值比较,大于就替换
输出sigma(f[i])(i=1~t)
如何快速求出f[1~t]的最小快乐值,用小根堆维护即可
Nlogn

T3:jzoj3929. 【NOIP2014模拟11.6】创世纪

Description

上帝手中有着n种被称作“世界元素”的东西,现在他要把它们中的一部分投放到一个新的空间中去以建造世界。每种世界元素都可以限制另外一种世界元素,所以说上帝希望所有被投放的世界元素都有至少一个没有被投放的世界元素能够限制它,这样上帝就可以保持对世界的控制。
由于那个著名的有关于上帝能不能制造一块连自己都不能举起的大石头的二律背反命题,我们知道上帝不是万能的,而且不但不是万能的,他甚至有事情需要找你帮忙——上帝希望知道他最多可以投放多少种世界元素,但是他只会O(2^n)级别的算法。虽然上帝拥有无限多的时间,但是他也是个急性子。你需要帮助上帝解决这个问题。

Input

第一行一个正整数n,表示世界元素的数目。
第二行n个正整数a_1, a_2, …, a_n。a_i表示第i个世界元素能够限制的世界元素的编号。

Output

最多可以投放的世界元素的数目。

Sample Input

6
2 3 1 3 6 5

Sample Output

3
样例说明:
选择2、3、5 三个世界元素即可,分别有1、4、6来限制它们。

Data Constraint

30%的数据,n<=10。
60%的数据,n<=10^5。
100%的数据,a_i<=n<=10^6。
想法:
贪心,对于每个入度为0的点,因为它肯定不能选,所以它控制的点肯定可以选,
那么我们一开始对于所有入度为0的点加入队列中,队列中的一个点x,如果它控制的点y没有走过,ans++并标记,在判断一下y控制的点z是否走过,且删掉y-》z的边后,z的入度是否为0,如果是,加入队列,标记
对于每个没有被标记的点,沿着它控制的点且没有标记找环,对答案贡献为这个环的点个数的1/2

阅读全文
0 0
原创粉丝点击