Google啊,你伤不起啊伤不起

作者因Google服务频繁出现访问问题及Android开发环境配置困难,决定转向使用国内服务,并表达了对Google服务稳定性的担忧。

早上访问Gmail的时候看到了下面这段话:

 

如果明天您无法访问自己的 Google 帐户,会发生什么情况? 失去访问权限意味着不能向朋友发送电子邮件,不能访问在线创建的相册或文档,也不能访问存储在 Google 帐户中的任何信息。请确保您帐户中的重要资料都没有丢失-并立即添加帐户取回方式。详细了解帐户恢复选项的优点。

 

这是啥?这是在以一种非典型的方式告诉(提醒?提示?暗示?告知?胁迫)我们这些“用户”:哥要拉屎蹲坑,你等该干啥就干啥.

 

Google这种类似于胁迫天朝的行为,实在让人难以接受。让人反感。

 

我等生于天朝,长于天朝的升斗小民从来都不敢同天朝斗,你这外来的洋和尚居然吃了豹子胆要同天朝斗法,你真的是不知道灶王爷有几只眼啊?

 

与天斗其乐无穷,与地斗其乐无穷,与人斗其乐无穷,而与天朝斗从来都是死路一条。历史已经无数次证明了。

 

----------------------------------------------------------------

 

我准备把默认搜索引擎换成Baidu了,很简单,因为google很多东西搜不出来,很多关键词一搜就异常。Baidu也好,Google也好我除了要搜索结果之外,还需要一个稳定的服务。稳定是压倒一切的

 

GMail最近也老是打开不了,能打开也慢。谷歌君,你可懂得稳定是压倒一切这个道理?

 

我不问理由,也问不出什么理由来,也不愿意问这么多理由,作为普通用户我只知道:服务不可用,在不可用的情况下,哥就必须寻找替代服务了

 

----------------------------------------------------------------

 

其三,想研究一下手机上的购物项目,最初准备用IOS,一查资料原来要MAC才行,我又不愿意用虚拟机,那么哥还是玩Android系统吧?

Android官方网站被封了?被谁封,为啥封我们就不讨论了

于是去下SDK:你妹,你就不能不能打一个完整的包让我们下载吗,还必须先下载一个SDK Manager更新无数个文件。更新几个小时。

这些都可以忍了,哥都忍了。

但是。。。 。。。 但是哥在启动模拟器的时候始终联接不上啊,为了解决这个问题,哥做了如下尝试:

 

1,重新更新SDK ;

2,下载新的Eclipse;

3,删除AVD无数次;

4,换AVD版本无数次,从1.5换3.0 无数次;

5,删除Document ....下的.android目录无数次;

6,调整config.ini中内存大小无数次;

7,使用Dos来adb start无数次;

8,改无数的选项来启动,比如那个Wipe data等等

9,关闭杀毒软件,关闭防火墙无数次,最后还把杀毒软件卸载了

10,Baidu和Google无数次,从国内查阅到国外,方案无数种都试过了还是不行

 

无数次啊无数次,每一次尝试,玩模拟器都人都知道要等多久啊,时间是伤不起的啊,哥就这样伤了清明三天的假期!简直让人无比的抓狂!

 

伤不起啊,伤不起!!!

 

最让我无法接受的是,同样的错误我在Google和Baidu看到无数人问了,那么就说明这是一个非典型的问题。对于非典型的问题,你让我说啥?

 

Google,先是我伤不起,然后就是你伤不起了。哥以后坚决不用Android的系统,就这么简单!哥不用了不行啊

 

 

# T606750 盖房 ## 题目描述 黄地产,是当今中国,乃至全球的房产巨鳄。在如今“房叔”“房婶”“房姐”等等牛人盛行的社会里,黄地产仍然始终以他的高富帅的作风和冠绝群雄的房产面积称霸四方。大家在惊叹和膜拜之余,也给他了一个亲切而又卖萌的外号——“房哥哥”。 最近,黄地产又在北京四环内买下一大片面积为 S 的土地,准备在上面搞房产。为了使这片楼盘看起来更有艺术美感和高富帅气质,黄地产公司旗下的设计师们为他设计了 N 种同的楼房造型。当然,这样设计出来的每个楼房也就有各自的占地面积(可能相同)。于是黄地产当即拍板,要求他的施工团队马上开始动工。由于钱是问题(高富帅起……),所以想盖多少房就盖多少房,但是为了看起来那么单调,所以一种房子只能盖一次。同时,所有的房子的占地面积总和能超过土地的面积,而黄地产又想让他的土地太过浪费,所以他想要知道在盖完房子后,土地剩余面积最小可以是多少。 ## 输入格式 第一行,一个数字 S 表示土地面积。 第二行,一个数字 n 表示设计的房子数量。 接下来 n 行,一行一个数。第 i 个数表示第 i 个房子的占地面积 ai(超过int范围). ## 输出格式 输出一个数,表示在盖完房子后,土地剩余的面积的最小值。 ## 输入输出样例 #1 ### 输入 #1 ``` 24 6 8 3 12 7 9 7 ``` ### 输出 #1 ``` 0 ``` ## 说明/提示 关于样例,选择第 1,4,5 个房子或者第 2,3,5 个房子来盖,占地面积都恰好为 24,也就是剩下的面积最小为 0. 对于 20% 的数据,n≤3 ; 对于 60% 的数据,n≤16 ; 对于 100% 的数据,0<=S<=20000,0<=n<=30
05-13
<think>好的,我现在需要解决用户的问题,即如何通过选择超过给定土地面积的房子组合,使得剩余的土地面积最小。这个问题看起来像是背包问题的一个变种。让我先理清思路,再结合动态规划的知识来解答。 首先,用户的问题可以转化为:给定一个土地总面积V,和n个房子,每个房子有一个占地面积(正整数),需要选出若干个房子,使得它们的总占地面积超过V,并且尽可能接近V,这样剩余的面积V - 总占地面积就会最小。这确实和0-1背包问题类似,只过在背包问题中我们通常最大化价值,而这里需要最大化体积(即房子的面积),同时超过容量V。因此,可以将问题视为0-1背包问题的一个变种,目标函数变为总重量(面积)的最大化,而是价值。 接下来,我需要确定如何应用动态规划来解决这个问题。根据引用[1]和[4]提到的0-1背包问题的解法,通常动态规划的状态定义为前i个物品在容量j下的最大价值。这里,价值对应房子的面积,因此状态应该表示前i个房子在总占地面积超过j的情况下,能获得的最大总面积。这样,状态转移方程应该是:dp[i][j] = max(dp[i-1][j], dp[i-1][j - area_i] + area_i),其中area_i是第i个房子的面积。当j >= area_i时,可以选择放入或放入该房子;否则只能放入。 过需要考虑的是,这里的状态是否需要压缩空间。因为标准的0-1背包问题可以通过一维数组进行空间优化,即使用一维数组dp[j],并从后往前更新,以避免重复计算。例如,对于每个房子i,遍历j从V到area_i,更新dp[j] = max(dp[j], dp[j - area_i] + area_i)。这样可以将二维数组的空间复杂度降为一维,时间复杂度是O(nV)。 但这里有一个问题:如果土地面积V非常大,比如超过1e4或更高,使用O(V)的空间可能太现实。过用户并没有提到具体的数值范围,假设V在合理范围内,比如1e3到1e4左右,那么动态规划应该是可行的。如果V非常大,可能需要其他方法,比如贪心算法,但贪心可能无法保证最优解。过根据引用[2]和[4],背包问题属于NP完全问题,当容量很大时可能需要近似算法,但用户的问题可能需要精确解,所以动态规划还是首选。 现在,我需要确认动态规划的初始化和边界条件。初始时,dp[0][j]表示没有房子可选时,最大总面积为0。同样,dp[i][0]表示容量为0时,无法放入任何房子,总面积为0。对于一维数组的情况,初始化dp[0] = 0,其他位置初始化为负无穷或者0?,这里应该初始化为0,因为当没有房子时,最大总面积为0。但在处理中,需要保证超过当前容量j,所以一维数组的初始化应该是全0,然后在更新时取较大值。 接下来,实现步骤应该是: 1. 确定目标:求最大总占地面积超过V,使得剩余面积V - sum最小。 2. 动态规划数组dp[j]表示容量为j时的最大总占地面积。 3. 遍历每个房子,然后逆序遍历j从V到当前房子的面积,更新dp[j]。 4. 最后,最大的dp[V]即为最大总占地面积,剩余面积是V - dp[V]。 例如,假设土地面积V=100,房子面积为[20,30,50,60],那么动态规划处理后,dp[100]的值会是尽可能接近100的总面积。比如选30+70=100的话,但可能没有70的房子,假设例子中的组合,比如20+30+50=100的话,剩余0。这时候dp[100]就是100,剩余0。 需要注意的是,当所有房子的总面积之和小于等于V时,剩余面积就是V减去总和,否则就是V - dp[V]。 然后,用户可能需要具体的代码实现。根据引用[1]中的Python代码示例,可以写出类似的动态规划代码。比如: 初始化一个长度为V+1的数组dp,全部初始化为0。然后对于每个房子的面积,从V到该面积逆序更新dp[j] = max(dp[j], dp[j - area] + area)。最终结果是V - dp[V]。 例如,代码可能如下: def minimize_remaining_area(V, areas): dp = [0] * (V + 1) for area in areas: for j in range(V, area -1, -1): if dp[j - area] + area > dp[j]: dp[j] = dp[j - area] + area return V - dp[V] 但需要考虑特殊情况,比如所有房子的面积都大于V,那么无法选择任何房子,此时剩余面积是V。或者当没有房子时,同样返回V。代码中这些情况是否处理了呢?比如,当areas为空,直接返回V。或者,当所有area > V,那么dp数组一直保持0,所以返回V -0 = V。 现在,验证一下这个思路是否正确。例如,测试案例: 案例1: V=10 areas=[3,5,7] 可能的组合:3+5=8,剩余2。或者5+7超过10,行。3+7=10,剩余0。所以正确解是0。根据代码,dp[10]在遍历时,当处理7的时候,当j=10时,检查j >=7,那么dp[10] = max(dp[10], dp[3]+7)。假设之前处理过3和5,那么在处理3时,可能已经填充到3,然后处理5时,j=10时,可能得到5或者3+5=8。处理7的时候,当j=10,dp[3]是3,所以3+7=10,所以dp[10]=10。因此剩余面积是0,正确。 另一个案例,V=5,areas=[6,7],那么无法选任何,返回5。代码中dp[5]保持0,所以5-0=5,正确。 看来这个方法是可行的。 接下来,用户可能需要如何具体应用动态规划,或者是否有其他方法?比如回溯法,但时间复杂度高。动态规划的时间复杂度是O(nV),对于较大的n和V可能太高效,但这是目前的标准解法。 另外,用户可能需要知道如何记录选择的房子,即求具体方案。根据引用[4]中提到的如何求背包的具体方案,可以通过动态规划后的状态数组,逆向追踪每个物品是否被选中。例如,在二维数组中,可以从dp[n][V]开始,查看是否由dp[n-1][V - area_n]转换而来。如果是一维数组的情况下,可能需要额外的步骤记录选择。或者,在动态规划过程中记录选择的路径。这可能稍微复杂,但如果用户需要,可以在解答中给出具体方案的求解方法。 总结步骤: 1. 确定问题转化为0-1背包,目标最大化总重量(面积),超过容量V。 2. 使用动态规划,状态转移方程。 3. 实现代码,注意逆序更新。 4. 处理边界情况。 5. (可选)求具体方案。 现在,我需要将这些思路整理成用户友好的回答,并生成相关问题。</think>### 问题分析与解法 您提出的问题可转化为**0-1背包问题的变种**,目标是将背包容量(土地面积)尽可能填满,最小化剩余空间。以下是分步解决方案: --- ### 1. 动态规划状态定义 定义状态 $dp[j]$ 表示**总土地面积为 $j$ 时,能容纳的最大房子面积总和**。通过遍历所有房子并更新状态,最终 $dp[V]$ 即为最优解,剩余面积为 $V - dp[V]$。 --- ### 2. 状态转移方程 对每个房子面积 $a_i$,逆序遍历容量 $j$(从 $V$ 到 $a_i$): $$ dp[j] = \max(dp[j], dp[j - a_i] + a_i) $$ --- ### 3. 算法实现(Python) ```python def minimize_remaining_area(V, areas): dp = [0] * (V + 1) for a in areas: for j in range(V, a - 1, -1): dp[j] = max(dp[j], dp[j - a] + a) return V - dp[V] ``` --- ### 4. 示例与解释 - **输入**:土地面积 $V=100$,房子面积 $[20, 30, 50, 60]$ - **最优解**:选择 $20+30+50=100$,剩余面积 $0$ - **输出**:`minimize_remaining_area(100, [20,30,50,60])` → $0$ --- ### 5. 时间复杂度与优化 - **时间复杂度**:$O(nV)$,其中 $n$ 为房子数量,$V$ 为土地面积 - **空间优化**:使用一维数组实现状态压缩 - **极端情况**:若所有房子面积均超过 $V$,直接返回 $V$[^1] --- ### 扩展:输出具体选择的房子组合 若需输出具体选择的房子,可通过回溯法追踪状态转移路径: ```python def trace_selected_houses(V, areas): dp = [0] * (V + 1) selected = [[] for _ in range(V + 1)] for a in areas: for j in range(V, a - 1, -1): if dp[j - a] + a > dp[j]: dp[j] = dp[j - a] + a selected[j] = selected[j - a] + [a] return selected[V] ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值