ZOJ 3508 (the war)
来源:互联网 发布:淘宝三唑仑网上什么卖 编辑:程序博客网 时间:2024/05/01 13:12
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3508
注意:题意:有N个士兵,其中第 Ni 个士兵能拿起武器重量的范围为(w-Min, w-Max), 然后又给出了M件武器,重量分别为Mi(i=1,2,3,...),因为有武器的士兵的人数越多,战争越容易胜利,所以求最多可以有多少个士兵能配武器。
#include<string.h>#include<stdio.h>#include<algorithm>using namespace std;struct node{ int l, r;}ss[3000], temp;//int cmp(int a,int b)//{ // return a<b;//}int main(){ int n, m, cnt, i, j, t; int a[100000]; while(scanf("%d %d", &n, &m)!=EOF) { cnt = 0; memset(a, 0, sizeof(a)); for(i=0; i<n; i++) scanf("%d %d", &ss[i].l, &ss[i].r); // 实现区间由小到大排序,以右区间为准进行排序, 如果右区间相同,则以左区间进行由大到小的排序。 for(i=0; i<n-1; i++) for(j=i+1; j<n; j++) { if(ss[i].r > ss[j].r) { temp = ss[i]; ss[i] = ss[j]; ss[j] = temp; } if(ss[i].r == ss[j].r) { if(ss[i].l > ss[j].l) { temp = ss[i]; ss[i] = ss[j]; ss[j] = temp; } } }//哈希,存一下武器的数量 for(i=0; i<m; i++) { scanf("%d", &t); a[t]++; } // sort(a, a+m, cmp); for(i=0; i<n; i++) { int ll=ss[i].l, rr=ss[i].r; for(j=ll; j<=rr; j++) { if(a[j])//如果在此区间里存在可配备武器的士兵,则计数变量cnt++,然后对应的下表的武器数减 1 。 { a[j]--; cnt++; break; } } } printf("%d\n", cnt); } return 0;}
0 0
- ZOJ 3508 (the war)
- zoj 3508 the war
- ZOJ 3508 The War
- The War(Zoj 3508)
- ZOJ-3508-The War
- ZOJ 3508 The War(贪心)
- ZOJ-#3508 The War(贪心)
- ZOJ 3508 The War 贪心
- ZOJ 3508 The War 贪心
- ZOJ 3508 The War(贪心)
- zoj 3508 The War 贪心
- ZOJ 3508 ——The War 贪心
- ZOJ——3508 The War
- ZOJ 3058 The War(简单贪心)
- zoj 3500 The War
- ZOJ Monthly, May 2011 - I The War
- The War
- zoj 3468 Dice War
- Java Thread&Concurrency(15): 深入理解ScheduledThreadPoolExecutor及其实现原理
- 全面介绍Windows内存管理机制及C++内存分配实例(二):内存状态查询
- Unix/Linux环境C编程入门教程(40) 初识文件操作
- POJ 3041--Asteroids
- 全面介绍Windows内存管理机制及C++内存分配实例(三):虚拟内存
- ZOJ 3508 (the war)
- 队列实现 (双向循环链表 C++)
- 当有超过64个逻辑cpu时,Windows 下Oracle db 实例启动(startup)时会hang(挂起)
- 字符串相关操作、问题及算法提纲
- 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
- hdu2546
- 付电话费过几个房间工行卡
- 如何让IE9或IE8打开多个网页时只保留一个IEXPLORE.EXE进程
- Java程序员应该掌握哪些技术?