HDOj 4544
题目链接 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相关推荐
- hdoj 4544 贪心
贪心+优先队列维护 先将所有的兔子排序...再将所有的箭按伤害排序... 做的时候从血量大的兔子往血量小的做...每次找能杀死这只兔子并且所需消耗最小的箭... 直接做...超时..并且不好维护... ...
- 并查集 HDOJ 1232 畅通工程
题目传送门 1 /* 2 并查集(Union-Find)裸题 3 并查集三个函数:初始化Init,寻找根节点Find,连通Union 4 考察:连通边数问题 5 */ 6 #include <c ...
- 【HDOJ 3652】B-number
[HDOJ 3652]B-number 给一整数n 找<=n的整数中能被13整除且含有13的 数位dp 记忆化! . 一入记忆化深似海. ..再也不想用递推了...发现真的非常好想 仅仅要保证满 ...
- 【HDOJ】4343 Interval query
最大不相交集合的数量. 思路是dp[i][j]表示已经有i个不相交集合下一个不相交集合的最右边界. 离散化后,通过贪心解. 1 /* 4343 */ 2 #include <iostream&g ...
- 【HDOJ】4579 Random Walk
1. 题目描述 一个人沿着一条长度为n个链行走,给出了每秒钟由i到j的概率($i,j \in [1,n]$).求从1开始走到n个时间的期望. 2. 基本思路 显然是个DP.公式推导也相当容易.不妨设$ ...
- AC自动机 HDOJ 5384 Danganronpa
题目传送门 1 /* 2 题意:多个文本串,多个模式串在每个文本串出现的次数 3 AC自动机:这就是一道模板题,杭电有道类似的题目 4 */ 5 /************************** ...
- 构造 HDOJ 5400 Arithmetic Sequence
题目传送门 题意:问有多少个区间,其中存在j使得ai + d1 == ai+1(i<j) && ai + d2 == ai+1 (i>j) 构造:用c1[i], c2[i] ...
- Kruskal HDOJ 1233 还是畅通工程
题目传送门 1 /* 2 最小生成树之kruskal算法--并查集(数据结构)实现 3 建立一个结构体,记录两点和它们的距离,依照距离升序排序 4 不连通就累加距离,即为最小生成树的长度 5 */ 6 ...
- HDOJ 5373 The shortest problem 【数论】
HDOJ 5373 The shortest problem [数论] 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5373 题目给一个初始数据和重复 ...
最新文章
- docker常用命令详解
- Linux下的Memcache安装(含libevent的安装)
- python opencv 投影变换 黑边
- jsp图片墙_JS实现的非常漂亮的3D立体照片墙显示效果
- linux nslookup脚本,Linux中nslookup命令起什么作用呢?
- MySQL实验四数据库的查询_MySQL数据库实验四:嵌套查询
- input不可编辑属性_谁不喜欢图文并茂呢:基于多模态信息的属性抽取
- 前端上传数据-按解析顺序
- amplify color_如何使用Amplify监视Nginx
- MATLAB 风玫瑰图 wind_rose.m
- lm75b 读取温度 c语言,STC单片机读取LM75A温度的代码,以及ADC读取电压。给大家分享一下把...
- 计算机连接不上蓝牙鼠标,蓝牙鼠标怎么连接到笔记本电脑?
- 【Qualcomm】浏览器无法登录高通网站的修改方法
- 基于python的租房网站
- 新鲜出炉2010笑话集锦,我竟然一个都没听过
- 在 Windows 下用 GCC 编译器练习 C/C++ 的简单教程
- WIN32 opengl环境搭建
- 雅居乐陈卓林第二人生业主文化节收官,记录下这些天的温情与感动
- python 爬取豆瓣的美剧
- html标签中文字换行