题目链接   http://acm.hdu.edu.cn/showproblem.php?pid=4544

#include<iostream>
#include<stdio.h>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;struct date
{int val,harm;bool operator <( const date &a )const{return val < a.val;}
}node[112345],temp;int arr[112345];struct date2
{int sum,lt,rt;
}cnt[412345];void build_tree( int lt,int rt,int t )
{cnt[t].lt = arr[lt];cnt[t].rt = arr[rt];cnt[t].sum = rt - lt + 1;if( lt == rt )return;int mid = ( lt + rt )>>1;build_tree( lt,mid,t<<1 );build_tree( mid+1,rt,t<<1|1 );
}bool query( int harm,int t )
{if( cnt[t].lt == cnt[t].rt ){ cnt[t].sum--;return true; }if( cnt[t<<1|1].sum && cnt[t<<1|1].lt <= harm ){bool fell = query( harm,t<<1|1 );if( fell ){cnt[t].sum--;return fell;}}if( cnt[t<<1].sum && cnt[t<<1].lt <= harm ){bool fell = query( harm,t<<1 );if( fell ){cnt[t].sum--;return fell;}}return false;
}int main( )
{int N,M,i,j;while( scanf("%d%d",&N,&M) != EOF ){for( i = 1; i <= N; i++ )scanf( "%d",&arr[i] );sort( &arr[1],&arr[1] + N );build_tree( 1,N,1 );for( i = 1; i <= M; i++ )scanf( "%d",&node[i].harm );for( i = 1; i <= M; i++ )scanf( "%d",&node[i].val );sort( &node[1],&node[1]+M );long long val = 0;int ans = 0;if( N > M ){printf("No\n");continue;}for( i = 1; i <= M; i++ ){if( query( node[i].harm,1 ) ){val += (long long)node[i].val;ans++;if( ans == N ) break;}}if( ans == N )printf("%I64d\n",val);else          printf("No\n");}return 0;
}

转载于:https://www.cnblogs.com/wulangzhou/archive/2013/05/03/3057370.html

HDOj 4544相关推荐

  1. hdoj 4544 贪心

    贪心+优先队列维护 先将所有的兔子排序...再将所有的箭按伤害排序... 做的时候从血量大的兔子往血量小的做...每次找能杀死这只兔子并且所需消耗最小的箭... 直接做...超时..并且不好维护... ...

  2. 并查集 HDOJ 1232 畅通工程

    题目传送门 1 /* 2 并查集(Union-Find)裸题 3 并查集三个函数:初始化Init,寻找根节点Find,连通Union 4 考察:连通边数问题 5 */ 6 #include <c ...

  3. 【HDOJ 3652】B-number

    [HDOJ 3652]B-number 给一整数n 找<=n的整数中能被13整除且含有13的 数位dp 记忆化! . 一入记忆化深似海. ..再也不想用递推了...发现真的非常好想 仅仅要保证满 ...

  4. 【HDOJ】4343 Interval query

    最大不相交集合的数量. 思路是dp[i][j]表示已经有i个不相交集合下一个不相交集合的最右边界. 离散化后,通过贪心解. 1 /* 4343 */ 2 #include <iostream&g ...

  5. 【HDOJ】4579 Random Walk

    1. 题目描述 一个人沿着一条长度为n个链行走,给出了每秒钟由i到j的概率($i,j \in [1,n]$).求从1开始走到n个时间的期望. 2. 基本思路 显然是个DP.公式推导也相当容易.不妨设$ ...

  6. AC自动机 HDOJ 5384 Danganronpa

    题目传送门 1 /* 2 题意:多个文本串,多个模式串在每个文本串出现的次数 3 AC自动机:这就是一道模板题,杭电有道类似的题目 4 */ 5 /************************** ...

  7. 构造 HDOJ 5400 Arithmetic Sequence

    题目传送门 题意:问有多少个区间,其中存在j使得ai + d1 == ai+1(i<j) && ai + d2 == ai+1 (i>j) 构造:用c1[i], c2[i] ...

  8. Kruskal HDOJ 1233 还是畅通工程

    题目传送门 1 /* 2 最小生成树之kruskal算法--并查集(数据结构)实现 3 建立一个结构体,记录两点和它们的距离,依照距离升序排序 4 不连通就累加距离,即为最小生成树的长度 5 */ 6 ...

  9. HDOJ 5373 The shortest problem 【数论】

    HDOJ 5373 The shortest problem [数论] 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5373 题目给一个初始数据和重复 ...

最新文章

  1. docker常用命令详解
  2. Linux下的Memcache安装(含libevent的安装)
  3. python opencv 投影变换 黑边
  4. jsp图片墙_JS实现的非常漂亮的3D立体照片墙显示效果
  5. linux nslookup脚本,Linux中nslookup命令起什么作用呢?
  6. MySQL实验四数据库的查询_MySQL数据库实验四:嵌套查询
  7. input不可编辑属性_谁不喜欢图文并茂呢:基于多模态信息的属性抽取
  8. 前端上传数据-按解析顺序
  9. amplify color_如何使用Amplify监视Nginx
  10. MATLAB 风玫瑰图 wind_rose.m
  11. lm75b 读取温度 c语言,STC单片机读取LM75A温度的代码,以及ADC读取电压。给大家分享一下把...
  12. 计算机连接不上蓝牙鼠标,蓝牙鼠标怎么连接到笔记本电脑?
  13. 【Qualcomm】浏览器无法登录高通网站的修改方法
  14. 基于python的租房网站
  15. 新鲜出炉2010笑话集锦,我竟然一个都没听过
  16. 在 Windows 下用 GCC 编译器练习 C/C++ 的简单教程
  17. WIN32 opengl环境搭建
  18. 雅居乐陈卓林第二人生业主文化节收官,记录下这些天的温情与感动
  19. python 爬取豆瓣的美剧
  20. html标签中文字换行

热门文章

  1. Win10下Docker使用阿里专属加速器
  2. Oracle中null值的比较
  3. 现场安装连接器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  4. 金蝶BOS开发数据集操作方法(sqloql)
  5. python二级选择题与分析(10)
  6. 转:传智播客—jbpm与OA项目(七)
  7. 智能合约--如何实现可升级的智能合约
  8. ChatGPT和DALLE-2级联后,输出效果震撼了…
  9. php 图片相似度对比算法,php比较图片相似度代码示例
  10. 离散化:两种离散化方式详解