Description


平成二十四年(2012年),5月11日,东京,某弓道场。

“呐,呐,海未酱,你听说了吗?几天后的那场弓道大会?啊—!”橙发少女兴奋地拿着一张传单一样的纸跑向蓝发少女。由于过于兴奋,橙发在跑过大门的时候一不小心,被门槛绊了一跤。

然而,蓝发少女站立着,手上拿着弓箭,似乎她的世界里并没有橙发少女。

她将弓抬起。拉弓;弓满;箭出。

可惜,离红心偏了一点。

蓝发少女本来的激动瞬间平静了下来,眼神仿佛有些游离。恍惚之间,这时才注意到摔倒的橙发和她手中的传单。

“啊……穗乃果,抱歉。我现在没什么心情,让我一个人静一会吧。”

“海未酱……”

“……事情就是这样。绘里酱有没有什么能让海未酱振作起来的方法呢?”穗乃果出来以后,碰到了她们的学生会长,绚濑绘里,于是把海未没有干劲事情告诉了她。

“这的确是个问题呢。……说起来,我听说前几天海未常用的那把弓坏了,现在用的如果是新弓的话,或许她需要一段时间熟练一下呢。”绘里回忆了一下,提议让海未多多练习一下新的弓。

题目描述

海未面前现在有n个靶子。按照绘里的指示,海未需要把这n个靶子全部射穿才行。

一开始,海未的精力为m,力度为a。每射穿一个靶子,海未对弓的熟练度就会上升,此时力度会增加b。

每个靶子都有一个单独的耐久度d[i],每次受到海未的攻击,靶子的耐久度都会减少海未当前的力度的值。当靶子的耐久度为0或0以下时,靶子被破坏。但是,如果海未在一次射箭后并没有射穿这个靶子,海未的精力会减少c[i]。如果海未通过一次射箭破坏了靶子,她的精力不会受到影响。

海未可以自由地选择射靶子的顺序。请问,海未是否能够通过合理地安排射靶子的顺序,使得她能够将这些靶子全部射穿?如果能,她完成任务后最多能省下多少精力?如果不能,她最多可以射穿多少个靶子?

Input


输入的第一行为四个正整数n,m,a,b。 接下来n行,每行两个正整数c[i],d[i]。

Output


输出的第一行仅包含一个字符串。请回答海未酱是否能完成全部射穿靶子的任务。 如果可以完成,输出“Yes”。 如果不能完成,输出“No” 。(两者均不包括引号)

第二行仅包含一个正整数。若第一行为“Yes”,则你应输出所剩的最多精力值;若第一行为“No”,则你应输出最多能射穿的靶子数。

Sample Input


2 10 1 1

1 4

1 6

Sample Output


Yes

5

Hint


对于30%的数据,n<=6。

对于50%的数据,n<=9。

对于70%的数据,n<=14。

对于100%的数据,n<=21;1<=a,b,c,d<=32767。

题解


这种原创题 估计找到这里来的都是学弟学妹

首先可见50%的数据是给暴搜的

然后看数据范围以及最近被状压洗脑 决定像生日蛋糕一样暴搜加鬼畜剪枝试图A掉

如果这种组合已经出现过,并且现在没有曾经优的话 剪掉。用二进制储存组合,2^21问题不大

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
int c[27];
int d[27];
int n,m,a,b;
inline int read()
{
char ch=getchar();
int x=0;bool s=0;
while(ch<'0'||ch>'9'){if(ch=='-')s=1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
return s?-x:x;
}
inline void scan()
{
n=read(),m=read(),a=read(),b=read();
for(register int i=0;i<n;++i)
c[i]=read(),d[i]=read();
return;
}
int f[2100007];
int ans=0;
int last=-1,maxx=0;//last存余量(初始化为-1可以兼具检测是否扫完功能) maxx存最多能打几块板
void search(int x)
{
for(register int i=0;i<n;++i)
if(!(ans&(1<<i)))
{
ans=ans|(1<<i);
int mo;
mo=d[i]%a==0?d[i]/a-1:d[i]/a;
m-=mo*c[i];
a+=b;
if(x==n-1)last=max(last,m);
else if(m<1)maxx=(m==0?max(maxx,x+1):max(maxx,x));
else if(f[ans]<m){f[ans]=m;search(x+1);}
a-=b;
m+=mo*c[i];
ans=ans^(1<<i);
}
return;
}
int main()
{
scan();
//memset(f,127,sizeof(f));
search(0);
if(last==-1){printf("No\n%d",maxx);return 0;}
printf("Yes\n%d",last);
return 0;
}

以及代码中有很多莫名其妙的表达方法

是我跟出题人pb大爷为了把90卡成100花了一个小时瞎几巴乱调的

/最后还是A啦2333

「LuoguT36048」 Storm in Lover的更多相关文章

  1. GNU C库「glibc」getaddrinfo 发现重大漏洞

    本文翻译至:http://www.itmedia.co.jp/enterprise/articles/1602/17/news065.html 大部分Linux应用程序使用的GNU C库「glibc」 ...

  2. 「译」JUnit 5 系列:条件测试

    原文地址:http://blog.codefx.org/libraries/junit-5-conditions/ 原文日期:08, May, 2016 译文首发:Linesh 的博客:「译」JUni ...

  3. 「译」JUnit 5 系列:扩展模型(Extension Model)

    原文地址:http://blog.codefx.org/design/architecture/junit-5-extension-model/ 原文日期:11, Apr, 2016 译文首发:Lin ...

  4. JavaScript OOP 之「创建对象」

    工厂模式 工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象了创建具体对象的过程.工厂模式虽然解决了创建多个相似对象的问题,但却没有解决对象识别的问题. function createPers ...

  5. 「C++」理解智能指针

    维基百科上面对于「智能指针」是这样描述的: 智能指针(英语:Smart pointer)是一种抽象的数据类型.在程序设计中,它通常是经由类型模板(class template)来实做,借由模板(tem ...

  6. 「JavaScript」四种跨域方式详解

    超详细并且带 Demo 的 JavaScript 跨域指南来了! 本文基于你了解 JavaScript 的同源策略,并且了解使用跨域跨域的理由. 1. JSONP 首先要介绍的跨域方法必然是 JSON ...

  7. 「2014-5-31」Z-Stack - Modification of Zigbee Device Object for better network access management

    写一份赏心悦目的工程文档,是很困难的事情.若想写得完善,不仅得用对工具(use the right tools),注重文笔,还得投入大把时间,真心是一件难度颇高的事情.但,若是真写好了,也是善莫大焉: ...

  8. 「2014-3-18」multi-pattern string match using aho-corasick

    我是擅(倾)长(向)把一篇文章写成杂文的.毕竟,写博客记录生活点滴,比不得发 paper,要求字斟句酌八股结构到位:风格偏杂文一点,也是没人拒稿的.这么说来,arxiv 就好比是 paper 世界的博 ...

  9. 「2014-3-17」C pointer again …

    记录一个比较基础的东东-- C 语言的指针,一直让人又爱又恨,爱它的人觉得它既灵活又强大,恨它的人觉得它太过于灵活太过于强大以至于容易将人绕晕.最早接触 C 语言,还是在刚进入大学的时候,算起来有好些 ...

随机推荐

  1. Delphi+MySQL:TADOQuery使用插入中文乱码解决方法

    Delphi+MySQL:TADOQuery使用插入中文乱码解决方法 with adoquery dobeginclose;sql.clear;sql.text:=' insert into test ...

  2. 【Java】NIO中Selector的select方法源码分析

    该篇博客的有些内容和在之前介绍过了,在这里再次涉及到的就不详细说了,如果有不理解请看[Java]NIO中Channel的注册源码分析, [Java]NIO中Selector的创建源码分析 Select ...

  3. 洛谷P1352 没有上司的舞会

    题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数Ri, ...

  4. Spring实战Day4

    profile与项目环境 使用profile根据环境创建bean,常用的情景是数据库的配置.一.配置方式1.在JavaConfig中配置 1.1在类上配置,生产环境不是"dev"的 ...

  5. kafka-0.8.1.1总结

    文件夹 一.         基础篇 1.     开篇说明 2.     概念说明 3.     配置说明 4.     znode分类 5.     kafka协议分类 6.     Kafka线 ...

  6. easyui datagrid client搜索、分页、排序

    easyui datagrid的排序默认是server端排序.能够用sorter实现client排序[2].client分页可用filter实现[3].client搜索相同能够用filter实现. 不 ...

  7. v-if v-else-if v-else

    1.代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...

  8. 九度OJ #1437 To Fill or Not to Fil

    题目描写叙述: With highways available, driving a car from Hangzhou to any other city is easy. But since th ...

  9. XMLHTTPRequest DEMO(发送测试)

    对于其中的HTTP状态,我们知道200-299表明访问成功:300-399表明需要客户端 反应来满足请求:400-499和500-599表明客户端和服务器出错:其中常用的如404表示资源没找到,403 ...

  10. JAVA WEB学习笔记(二):Tomcat服务器的安装及配置

    一.Tomcat的下载及安装. 前往Tomcat官网下载安装包或者免安装压缩包.链接http://tomcat.apache.org/ 这里,我选择的是Tomcat8.0,而不是最新的Tomcat9. ...