【牛客 - 303D第十五届浙江大学宁波理工学院程序设计大赛(同步赛)】Campaign(二进制枚举,位运算,暴力,思维)

题干:

星际争霸(StarCraft)单人战役模式中有很多供人游玩的任务关卡。

tokitsukaze新开始了一关单人战役模式下的任务。在这场战役中,你要作为指挥官指挥克鲁普星区的艾伦人类(Terran)来防御人类的敌人——邪恶异虫(Zerg)的袭击。

这一次,作为指挥官,你的任务目标是尽可能多的保全人类方所拥有的7个基地。你在这次任务中拥有n个人口单位的兵力。为了防御异虫的攻击,每个基地都有一个能够抵挡异虫攻击的最小兵力需求L[i],同时每个基地因为有固定的人口上限,分配给该基地的兵力也不得大于上限R[i]。

你需要在任务一开始就为这7个基地做好兵力分配,每个兵都应该分配给一个基地,即不应该有空闲兵力。如果任何一个基地被异虫攻破(分配的兵力大于0,且小于最小兵力需求,导致兵力白白葬送牺牲),或者某个基地的人口超过了人口上限,兵力大于R[i],任务都会直接失败。

为了避免任务失败,tokitsukaze决定从一开始就放弃一些基地(即不对这些基地派出兵力)。

请问保证任务成功的条件下,tokitsukaze最多留下多少个基地?特别的,如果任务失败这种情况下请输出"0",不含引号。

由于tokitsukaze的星际操作十分流弊,你可以认为如果能够至少能够保留一个基地,任务就一定能够成功。

输入描述:

第一行输入一个T(T≤50000),表示T组数据。对于每组数据:
输入一个正整数n(1≤n≤10^9)表示需要分配的兵力总人口。
接下来7行,每行两个正整数L,R(1≤L≤R≤10^9),分别表示该基地够抵挡异虫攻击的最小兵力需求与该基地的人口上限。

输出描述:

对于每组数据,输出tokitsukaze最多能够留下几个基地,每组数据占一行。

 

示例1

输入

复制

4
50
1 1
1 1
1 1
1 1
1 1
1 1
1 1
50
1 1
20 30
20 30
20 30
1 1
20 30
20 30
70
19 19
10 10
10 10
10 10
10 10
10 10
1 1
2
1 1
3 3
3 3
3 3
3 3
3 3
3 3

输出

复制

0
4
7
0

说明

第一个样例,无论tokitsukaze怎么取舍,都不能满足条件。在这种特殊情况下你应该输出0。第二个样例,tokitsukaze选择第一个第二个第三个和第五个基地,分别分配1,20,28,1的兵力即可满足既能完全分配兵力,同时这4个基地既能防御异虫的攻击,也不超过每个基地的人口上限。第三个样例,tokitsukaze分别分配19,10,10,10,10,10,1给7个基地就能保证既能完全分配兵力,同时这7个基地既能防御异虫的攻击,也不超过每个基地的人口上限。第四个样例,tokitsukaze如果只选择1号基地,那么要么无法将所有的兵力完全分配,要么该基地的人口总数将会大于上限,所以任务会直接失败,而如果选择其他基地,那么由于不能达到防御的最小下界。所以也会导致任务失败。不论怎么取舍任务都会失败,所以这种情况下应该输出0。

解题报告:

   就是个枚举答案,,实在不行就7层循环、、然后维护一个可行的l,r,当可行的l,r包含了输入的数的时候,就是满足条件的,然后从所有答案中选出最大的就行。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define ll long long
#define pb push_back
#define pm make_pair
#define fi first
#define se second
using namespace std;
const int MAX = 2e5 + 5;
ll n;
ll low[15],up[15];
bool fit(ll i,int j) {if((i>>j)&1) return 1;else return 0 ;
}
int get(ll i) {int cnt = 0;while(i) {if(i&1) cnt++;i>>=1; }return cnt;
}
int main()
{int t;cin>>t;while(t--) {scanf("%lld",&n);int ans = 0;for(int i = 1; i<=7; i++) {scanf("%lld%lld",low+i,up+i);}ll minn = 0,maxx = 0;for(ll i = 0; i<(1<<7); i++) {minn=maxx=0;for(int j = 1; j<=7; j++) {if(fit(i,j-1)) minn+=low[j],maxx+=up[j];}if(minn<=n && maxx>=n) ans = max(ans,get(i));}printf("%d\n",ans);}return 0 ;}

%%%Qls:

#include<bits/stdc++.h>
using namespace std;typedef long long ll;ll l[15],r[15];int main()
{int T;scanf("%d",&T);while(T--){int n;scanf("%d",&n);for(int i=0;i<7;i++)scanf("%lld%lld",&l[i],&r[i]);int res=0;for(int i=0;i<(1<<7);i++){ll mi=0,mx=0;for(int j=0;j<7;j++)if(i>>j&1)mi+=l[j],mx+=r[j];if(mi<=n && n<=mx)res=max(res,__builtin_popcount(i));}printf("%d\n",res);}return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/441029.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle mssql 实例,oracle,mysql,SqlServer三种数据库的分页查询的实例

MySql&#xff1a;MySQL数据库实现分页比较简单&#xff0c;提供了 LIMIT函数。一般只需要直接写到sql语句后面就行了。LIMIT子 句可以用来限制由SELECT语句返回过来的数据数量&#xff0c;它有一个或两个参数&#xff0c;如果给出两个参数&#xff0c; 第一个参数指定返回的第…

【牛客 - 303H第十五届浙江大学宁波理工学院程序设计大赛(同步赛)】Protoss and Zerg(快速幂取模,组合数学)

题干&#xff1a; 1v1&#xff0c;是星际争霸(StarCraft)中最常见的竞技模式。 tokitsukaze进行了n场1v1。在每一场的1v1中&#xff0c;她都有星灵(Protoss)和异虫(Zerg)两个种族可以选择&#xff0c;分别有a个单位和b个单位。因为tokitsukaze不太擅长玩人类(Terran)&#x…

oracle 控制文件冗余,Oracle 添加冗余控制文件 for RAC On Linux

萌哒萌哒的分割线注&#xff1a;添加冗余控制文件期间需要有关库操作&#xff0c;需注意&#xff01;&#xff01;&#xff01;备份控制文件SQL> alter session set tracefile_identifier‘backupctrl‘;Session altered.SQL> alter database backup controlfile to trac…

【牛客 - 303B第十五届浙江大学宁波理工学院程序设计大赛(同步赛)】Fibonacci and Counting(Fib数性质,gcd辗转相除法性质)

题干&#xff1a; 我们这样定义斐波那契数列&#xff0c;F[1]1,F[2]1&#xff0c;当n>2时F[n]F[n-1]F[n-2]。 斐波那契数列的前10项为&#xff1a;1,1,2,3,5,8,13,21,34,55。 欧几里得算法求解两个数的最大公约数。我们记gcd(a,b)为整数a与b的最大公约数。 当b0时&…

【牛客 - 303K第十五届浙江大学宁波理工学院程序设计大赛(同步赛)】Technology Tree(树形dp,tricks)

题干&#xff1a; 在星际争霸(StarCraft)中&#xff0c;有3个种族。对于任意一个种族&#xff0c;他们的建筑建造都是有一个顺序的。这个顺序正好是一个树形结构&#xff0c;我们称之为"科技树"(Technology tree)。 在科技树中&#xff0c;只有一个建筑是不需要前…

oracle基表恢复,查找V$PARAMETER 基表 – 专业Oracle数据库恢复,或许是您恢复数据的最后机会@phone:13429648788 - 专业Oracle数据库恢复技术支持...

1、使用trace查找show parameter执行语句alter session set events 10046 trace name context forever,level 12;show parameter process;alter session set events 10046 trace name context off;2、查找trace文件SELECT d.VALUE|| /|| LOWER (RTRIM (i.INSTANCE, CHR (0)))||…

【HDU - 1599】find the mincost route (Floyd最小环,最短路问题)

题干&#xff1a; 杭州有N个景区&#xff0c;景区之间有一些双向的路来连接&#xff0c;现在8600想找一条旅游路线&#xff0c;这个路线从A点出发并且最后回到A点&#xff0c;假设经过的路线为V1,V2,....VK,V1,那么必须满足K>2,就是说至除了出发点以外至少要经过2个其他不同…

linux中创建目录树,如何在C++/Linux中创建目录树?

Jonathan Lef..58这是一个可以用C编译器编译的C函数./*(#)File: $RCSfile: mkpath.c,v $(#)Version: $Revision: 1.13 $(#)Last changed: $Date: 2012/07/15 00:40:37 $(#)Purpose: Create all directories in path(#)Author: J Leffler(#)Copyright: (C) JLSS 1990-91,1997-98…

linux socket bind 内核详解,Socket与系统调用深度分析(示例代码)

1、 什么是系统调用操作系统通过系统调用为运行于其上的进程提供服务。当用户态进程发起一个系统调用&#xff0c; CPU 将切换到 内核态 并开始执行一个 内核函数 。 内核函数负责响应应用程序的要求&#xff0c;例如操作文件、进行网络通讯或者申请内存资源等。在Linux中系统调…

【UVA - 11729】Commando War (贪心,时间调度问题)

题干&#xff1a;&#xff08;Uva不放题干了&#xff09; 题目大意&#xff1a;&#xff08;实在是自己懒得写网上找了一个&#xff09; 解题报告&#xff1a; 调度问题&#xff0c;直接贪心出完成任务需要的时间最长的那个人排序&#xff0c;就行了。 方法正确性的证明以前也…

【UVA - 1335】Beijing Guards (贪心,二分)

题干&#xff1a; 题目大意&#xff1a; 有n个人为成一个圈&#xff0c;其中第i个人想要r[i]种不同的礼物&#xff0c;相邻的两个人可以聊天&#xff0c;炫耀自己的礼物。如果两个相邻的人拥有同一种礼物&#xff0c;则双方都会很不高兴&#xff0c;问最少需要多少种不同的礼…

linux两个命令一起,paste命令 – 合并两个文件

paste命令会把每个文件以列对列的方式&#xff0c;一列列地加以合并 &#xff0c;他就是相当于把两个不同的文件内容粘贴在一起&#xff0c;形成新的文件。注意&#xff1a;paste默认粘贴方式以列的方式粘贴&#xff0c;但是并不是不能以行的方式粘贴&#xff0c;加上-s选项就可…

【UVA - 11292】Dragon of Loowater (贪心,水题,模拟,twopointer双指针)

题干&#xff1a; 题目大意&#xff1a; n条恶龙&#xff0c;m个勇士&#xff0c;用勇士来杀恶龙。一个勇士只能杀一个恶龙。而且勇士只能杀直径不超过自己能力值的恶龙。每个勇士需要支付能力值一样的金币。问杀掉所有恶龙需要花费的最少金币。 解题报告&#xff1a; twopo…

linux 命令pg,linux下操作PostgreSQL的常用命令

一般性&#xff1a;\copyright 显示PostgreSQL的使用和发行许可条款\g [文件] or; 执行查询 (并把结果写入文件或 |管道)\h [名称] SQL命令语法上的说明&#xff0c;用*显示全部命令的语法说明\q 退出 psql查询缓存区\e [FILE] [LINE] 使用外部编辑器编辑查询缓存区(或文件)\ef…

【UVA - 10037】Bridge(过河问题,经典贪心)

题干&#xff1a; 题目大意&#xff1a; 有N个人要过桥&#xff0c;每个人速度不同&#xff0c;只有一个手电筒&#xff0c;每次最多只能过去两个人&#xff0c;问所有人最短的过桥时间为多少 解题报告&#xff1a; 首先让最快的两个人最后过&#xff0c;然后我们分奇偶考虑…

linux系统键盘记录器,可截获到 QQ 密码 键盘记录器源码

由于 QQ 密码做了特殊的保护&#xff0c;所以通过远程注入得到密码框内容以及通过钩子来得到键盘消息均不能探测到 QQ 的密码&#xff0c;但是通过对键盘驱动的过滤却是可以记录下 QQ 密码输入期间的内容&#xff0c;附上源码。#define DBG 1#include #include #include "…

【牛客 - 2B】树(思维,dp,有坑)

题干&#xff1a; shy有一颗树&#xff0c;树有n个结点。有k种不同颜色的染料给树染色。一个染色方案是合法的&#xff0c;当且仅当对于所有相同颜色的点对(x,y)&#xff0c;x到y的路径上的所有点的颜色都要与x和y相同。请统计方案数。 输入描述: 第一行两个整数n&#xf…

linux安装后启动mysql,linux安装完mysql后启动错误

redhat as 4,使用rpm包安装完mysql的server 跟client后执行以下命令出错。[rootftp etc]# /usr/bin/mysqladmin -u root password new-password/usr/bin/mysqladmin: connect to server at localhost failederror: Cant connect to local MySQL server through socket /var/lib…

linux exchange邮件客户端,Linux中使用Hiri邮件客户端访问Exchange帐户

大家都知道 Microsoft Exchange 是企业级邮件市场占有率第一的产品&#xff0c;早已成为 Top 500 企业首选的邮件服务器和客户端标准配备。随着 Office 365 服务在全球的铺开&#xff0c;Exchange 的市场占有率更是越来越高&#xff0c;不少中小企业甚至个人用户都已经开始使用…

【CodeForces - 1084C】The Fair Nut and String(思维,组合数学)

题干&#xff1a; The Fair Nut found a string ss. The string consists of lowercase Latin letters. The Nut is a curious guy, so he wants to find the number of strictly increasing sequences p1,p2,…,pkp1,p2,…,pk, such that: For each ii (1≤i≤k1≤i≤k), sp…