2017 百度之星 资格赛 题解

百度之星 2017 资格赛 题解(原创)(2~5题 第一题方法是错的 第二题数据太水 并不会正解)

转载请注明出处http://www.cnblogs.com/nflslzt/p/7302377.html

(题目在HDU上可以找到)

1001 度度熊保护村庄

题意 给你两个点集,A和B,问你在B中最少选取多少个点,使得B中剩余点的凸包能将A的凸包完全包住

数据范围 A,B中有500个点 多测 (n^3会超时)

想法

首先把两个点集的凸包求出来

贪心:B的凸包内部点全部可以去掉

可能(就)是伪证:若最优解中B的内部取了一点,设为C,且C与D,E相连,那么,去掉C,并在D,E之间寻找一点P(一定有点,否则是凹的),使得三角形DEP能完全包住三角形CDE即可

然后枚举B的凸包上的一点Q,并且二分地寻找两点M,N,使QM,QN均恰好不与A的凸包相交,继续令Q=M,Q=N,继续二分,这样可以找出满足题目要求的一个凸包. 枚举出所有的这样的凸包,比较即可.

错误原因 未考虑的情况

有没有大神告诉我正解 据说Claris用的是O(n^3/64)的方法

1002 度度熊的王国战略

有没有大神告诉我正解

题意 给一个图,求最小割

数据范围 3000个顶点,100000条边,边权1000

想法

优化最大流

网搜了ISAP模板结果WA了

无聊时看看Clarifications,发现数据水

于是: 先判断是否连通,不连通输出0,否则枚举每个顶点,并计算与其相连的边的总权值,取最小值输出

期望时间复杂度 不说了,显然能过,显然非正解

1003 度度熊与邪恶大魔王

题意

度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来。

邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力。

度度熊一共拥有m种攻击方式,第i种攻击方式,需要消耗k[i]的晶石,造成p[i]点伤害。

当然,如果度度熊使用第i个技能打在第j个怪兽上面的话,会使得第j个怪兽的生命值减少p[i]-b[j],当然如果伤害小于防御,那么攻击就不会奏效。

如果怪兽的生命值降为0或以下,那么怪兽就会被消灭。

当然每个技能都可以使用无限次。

请问度度熊最少携带多少晶石,就可以消灭所有的怪兽。

数据范围

1<=n<=100000

1<=m<=1000

1<=a[i]<=1000

0<=b[i]<=10

0<=k[i]<=100000

0<=p[i]<=1000

想法

一看数据范围,怪兽1000*10种可能,而且技能使用无限制,于是这题变得特别水

预处理:暴力枚举所有怪兽,背包算出最少要花多少晶石

输入每一种怪兽,加起来即可

期望时间复杂度 O(1000*10*1000)

1004 度度熊的午饭时光

题意

普通的01背包,但是要求还原路径,关键在于,不超过预算、不重样、午餐等分最高的情况下,选择菜品序号加和最小,加和相等时字典序最小的组合(限制条件太多,真心累)

数据范围 很水

想法

01背包

然后陷入僵局

发现数据很小,随便乱搞

于是从最后倒着推,用dfs,把所有情况搞出来,存起来,排序,输出

(据说有人啥都不搞直接输出过了,欲哭无泪)

期望时间复杂度 不知道

1005 寻找母串(唯一一个没有度度熊的题)

题意

定义了一个01偏串:1、只由0和1两种符组成; 2、在S的每一个前缀中,0的个数不超过1的个数; 3、S中0的个数和1的个数相等。

给定一个01偏串S,一个数n,问S在长度为n的所有01偏串中出现次数之和

数据范围 1<=|S|<=100000,1<=n<=1000000000

样例

input

2

2 10

4 10

output

1

3

样例解释

在第二个样例中,长度为4的偏串共两个1010,1100。10在1010中出现了两次,在1100中出现了1次。所以答案是3。

想法

最后才发现,和http://blog.csdn.net/jaihk662/article/details/76737701 的想法很像,只是公式不同

如图

期望时间复杂度 O(1000000*40)

转载请注明出处

时间: 2024-12-18 07:17:41

2017 百度之星 资格赛 题解的相关文章

2014百度之星资格赛题解

比赛链接:点击打开链接 ,,杭电把比赛关了代码都找不到了.. 无责任民科还是mark一下好了.. HDU 4823 Energy Conversion 把式子变换一下发现是一个等比数列,高速幂就可以. #include<stdio.h> #include<iostream> #include<string.h> #include<math.h> using namespace std; #define ll __int64 #define inf 10000

2014年百度之星 资格赛题解

比赛地址 1001: Energy Conversion Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7787 Accepted Submission(s): 1894 Problem Description 魔法师百小度也有遇到难题的时候-- 现在,百小度正在一个古老的石门面前,石门上有一段古老的魔法文字,读懂这种魔法文字需要耗费大量的

2017百度之星资格赛 1003:度度熊与邪恶大魔王(DP)

.navbar-nav > li.active > a { background-image: none; background-color: #058; } .navbar-inverse #navbar > .navbar-nav > li > a:hover, .navbar-inverse #navbar > .navbar-nav > li > a:focus { background-image: none; background-color:

2017百度之星资格赛 度度熊的王国战略

度度熊的王国战略 Accepts: 644 Submissions: 5880 Time Limit: 40000/20000 MS (Java/Others) Memory Limit: 32768/132768 K (Java/Others) Problem Description 度度熊国王率领着喵哈哈族的勇士,准备进攻哗啦啦族. 哗啦啦族是一个强悍的民族,里面有充满智慧的谋士,拥有无穷力量的战士. 所以这一场战争,将会十分艰难. 为了更好的进攻哗啦啦族,度度熊决定首先应该从内部瓦解哗啦啦

度度熊的午饭时光 2017百度之星资格赛 -.-

度度熊的午饭时光 Accepts: 755 Submissions: 8737 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description 度度熊最期待每天的午饭时光,因为早饭菜品清淡,晚饭减肥不敢吃太多(胖纸的忧伤T.T). 百度食堂的午餐超级丰富,祖国各大菜系应有尽有,度度熊在每个窗口都有爱吃的菜品,而且他还为喜爱的菜品打了分,吃货的情怀呀(>.<)

2017百度之星 资格赛

1001 度度熊保护村庄 Accepts: 26 Submissions: 703 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description 哗啦啦村袭击了喵哈哈村! 度度熊为了拯救喵哈哈村,带着自己的伙伴去救援喵哈哈村去了!度度熊与伙伴们很快的就过来占据了喵哈哈村的各个军事要地,牢牢的守住了喵哈哈村. 但是度度熊发现,这是一场旷日持久的战斗,所以度度熊

2017百度之星资格赛1003 度度熊与邪恶大魔王

度度熊与邪恶大魔王 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊一共拥有m种攻击方式,第i种攻击方式,需要消耗k[i]的晶石,造成p[i]点伤害. 当然,如果度度熊使用第i个技能打在第j个怪兽上面的话,会使得第j个怪兽的生命值减少p[i]-b[j],当然如果伤害小于防御,那么攻击就不会奏效. 如果怪兽的生命值降为0或以下,那么怪兽就会被消灭. 当然每个技能都可以使用无限次. 请问度度熊最少携带多少晶石

2015百度之星资格赛题解

1001: 可以看作找规律,其实是组合数学的一道题目.符合要求的对应关系是要么是自己和自己对应,要么是互相对应,即1->2则2->1. 因为对于任何一个数如果他和自己本身对应,那么剩下还有n-1个数:如果他对应别的数(假定是a),那么a一定也和他对应,这样剩下还有n-2 个数,并且他可以对应的数的选择有n-1种,所以,可得递推关系 f[i]=((i-1)*f[i-2]+f[i-1]); #include<iostream> using namespace std; long lon

2017百度之星资格赛 1003 度度熊与邪恶大魔王 背包DP

度度熊与邪恶大魔王 Accepts: 3027 Submissions: 18837 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊一共拥有m种攻击方式,第i种攻击方式,需要消耗k[i]的晶石,造成p[i