依然非常失望,我为什么现在还是那么弱,今天就做出了一道题,垫底。

一个大家都看出来的C题,我居然没找到规律,想了一会儿就放弃了。

A题是这样的,有n种珍珠,给出这n种珍珠各自的数目,再给出一个M,表示每M个不同珍珠组成一个项链。求问最多可以组成多少个这样的项链。

一开始想到的就是贪心,发现如果按升序排序,再从前往后去贪心,样例都过不了,如果从后往前贪,可以过样例,而且感觉好像没有什么不妥,于是就造就了今天的一直WA的情况。这个题目不能用贪心,从前往后贪的时候就发现有问题,即,某个珍珠可以此时用完,但如果等下一次跟后面一个数用完的话,得到的总数将会更大。。。其实同理,由后往前贪也会出现这种情况,只是恰好过了样例而已。

真正标准的做法是二分结果,其实当时我也有考虑这样,但是那个时候不知道怎么判断你二分的结果是对还是错,我当时想,如果能够判断你二分的结果是大于最终值还是小于的话,应该可以直接暴力过啊。。。所以就一直没付诸行动,一直到最后几分钟,我还是觉得自己是贪心没写的好,一直在那里改代码,也有想过是不是算法本身的问题,要不要用贪心来写一下,但是就这样想了一下,没时间了

其实难就难在你怎么知道你二分的这个结果是合理的,比如你二分的结果是4,设M=5,那总共需要的珍珠数就是4*5=20,这二十颗从哪里来呢,我们来想一下,如果正好每种珍珠只有一颗,那总共需要20种珍珠才行,但是若每种珍珠无限多,那就是每种取4个,取五种,凑成这20颗。也就是说,我们每次枚举出来的值,作为每种珍珠的取用上限,(当然珍珠数本身不够这个上限就按自身的数目来取),从序列里按这个上限从头取到尾,如果能凑齐大于等于 枚举值*M,说明该枚举值可行。。。这是陶叔比赛完之后跟我讲的,我当时没理解,为什么这么搞可以判断枚举值是否可行呢,后来仔细想了下,尤其考虑了一下临界情况(即上述说的每种珍珠只有一颗 或者 每种珍珠无限多)才理解这个做法,因为每次取的珍珠不超过枚举值(超过了其实没用,每种珍珠最多只要枚举值那么多颗,而且影响判断),这样,这样取出的珍珠数目其实就暗藏了各个这么多个组合,比如你取的数目不够,则它能凑齐的项链组合 是实际值-1甚至更小,如果数目够了,则能凑的项链组合就是实际值甚至更多。

所以,解决了这个判断问题,就比较简单了

具体题解看 http://hi.baidu.com/congzicun/item/c1bcb4f7c2cf6acc521c264f

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int n,m;
int num[];
bool ok(int x)
{
int sum=;
for (int i=;i<n;i++)
{
if (num[i]<x)
sum+=num[i];
else
sum+=x;
}
if (sum>=x*m) return ;
else return ;
}
int main()
{
while (scanf("%d",&n))
{
if (n==) break;
int maxn=;
for (int i=;i<n;i++)
{
scanf("%d",&num[i]);
maxn=max(maxn,num[i]);
}
scanf("%d",&m);
int l=,r=(n/m)*maxn,mid;
int ans=;
r++;
while (l<r)
{
mid=(l+r)/;
if (ok(mid))
{
ans=mid;
l=mid+;
}
else
r=mid;
}
printf("%d\n",ans);
}
return ;
}

2014 3.22 校队选拔——A的更多相关文章

  1. zju 校队选拔 被虐记

    选拔已经开始了三天才想起来写游记 QAQ.. 7.12 弱弱的Sky_miner来到了ZJU,过程中被热成狗... 然后见到了无数大二大三的大佬们,过程中被热成狗... 后来听靖哥哥说集训的注意事项, ...

  2. [总结]HNOI2015省队选拔

    // 此博文为迁移而来,写于2015年4月21日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102vy9t.html 这次省 ...

  3. 浙江省队选拔 ZJOI2015 (Round 1) 解题报告

    最近莫名其妙地喜欢上了用这种格式写各省省选的全套题解= = 今年浙江省选的出题人是算法竞赛界传说级人物陈立杰,看样子他的出题风格很有特点……ABC三题难度是严格递减的,感觉如果在做第一题的时候被卡住的 ...

  4. 河南省队选拔 HAOI2015 解题报告

      其实省选在四天前就已经结束了,但由于题目难度略大我到今天上午才补完所有题目……(捂脸逃)考场上很幸运,打完了所有我会写的部分分,最后Round1的110分 + Round2的70分,勉强算是没有被 ...

  5. 重庆市队选拔 CQOI2015 解题报告

    文章链接:http://www.cnblogs.com/Asm-Definer/p/4434601.html 题目链接:http://pan.baidu.com/s/1mgxIKli 官方数据:htt ...

  6. [2014.5.22][UBUNTU]Ubuntu与Windows系统时间不同步的问题

    安装Ubuntu+Windows双系统时会遇到Windows和Ubuntu系统时间不同步的问题,这是由于Windows系统默认读取主板bios等硬件系统时间作为OS的当地时间;而MAc,Linux类的 ...

  7. 2014 HDU多校弟九场I题 不会DP也能水出来的简单DP题

    听了ZWK大大的思路,就立马1A了 思路是这样的: 算最小GPA的时候,首先每个科目分配到69分(不足的话直接输出GPA 2),然后FOR循环下来使REMAIN POINT减少,每个科目的上限加到10 ...

  8. 2014 HDU多校弟八场H题 【找规律把】

    看了解题报告,发现看不懂 QAQ 比较简单的解释是这样的: 可以先暴力下达标,然后会发现当前数 和 上一个数 的差值是一个 固定值, 而且等于当前数与i(第i个数)的商, 于是没有规律的部分暴力解决, ...

  9. 2014 HDU多校弟六场J题 【模拟斗地主】

    这是一道5Y的题目 有坑的地方我已在代码中注释好了 QAQ Ps:模拟题还是练的太少了,速度不够快诶 //#pragma comment(linker, "/STACK:16777216&q ...

随机推荐

  1. 加傲腾内存的电脑PE无法识别本地磁盘解决办法(M.2接口??)

    ---恢复内容开始--- PE一直无法识别本地硬盘一直以为是主板设置的事情!原来是新兴的接口(M.2固态具体我不大明白)的事情,需要磁盘驱动,因为PE是精简的大多数不带驱动,但是2018年的新更新的P ...

  2. POJ 2823 滑动窗口 单调队列模板

    我们从最简单的问题开始: 给定一个长度为N的整数数列a(i),i=0,1,...,N-1和窗长度k. 要求: f(i) = max{a(i-k+1),a(i-k+2),..., a(i)},i = 0 ...

  3. 20190108PLC学习心得

    应该是数据类型不对 F1查看了帮助文件以后 ,看到 LD应该是用指针类型的数据 改正以后 LD0下的红线消失了 .       绿色 代表没有给 符号 定义 地址     假设 我现在给 符号 字节数 ...

  4. uni-app解决小程序圆角样式不生效

    在使用uni-app实现小程序的时候,设置左图的右圆角不生效,样式也都没有问题,在模拟器上也可以正常现实,手机上样式出现差别,现有以下解决方法: 设置整个圆角,然后左边使用margin-left:-3 ...

  5. Asp.net mvc+EF+Sql Server2008数据库缓存依赖

    1.开启数据库缓存依赖功能(开启对数据库中表Article和ArticleType的缓存) (注:)如果要配置SqlCacheDependency,则需要以命令行的方式执行. aspnet_regsq ...

  6. maven的概念模型及maven坐标

     1.概念模型 项目对象模型:一个maven工程有一个pom.xml文件,通过pom.xml文件定义项目的坐标.项目依赖.项目信息.插件目标等. 依赖管理系统:通过maven的依赖管理对项目所依赖的j ...

  7. 洛谷[Luogu] 普及村总结

    总结 简单的模拟 交叉模拟 排序 排序EX

  8. 十三、SAP中定义变量时赋初始值

    一.代码如下 二.输出如下

  9. HDU 4901 多校4 经典计数DP

    RT 最近不想写博客,累积了一周多的题目,今天趁着周日放假,全部补上吧 dp[i][j]表示前i个数,操作后的值为j的总个数 注意取或不取,有种完全背包的意味.因为数字小于1024,所以异或的结果也绝 ...

  10. Nginx php-fpm 分离搭建 (上) 未完

    最近又重新看了一遍   'nginx入门到精通'      抽点时间 出来搭几个Demo  会有更深体会: Nginx如何与Php-fpm结合 Nginx不只有处理http请求的功能,还能做反向代理. ...