NC21680. Campaign
描述
由于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。C++11(clang++ 3.9) 解法, 执行用时: 456ms, 内存消耗: 480K, 提交时间: 2020-02-27 16:06:35
#include<cstdio> #include<iostream> using namespace std; int minn[8],maxn[8]; int main() { int n,t,i,j,k; cin>>t; for(i=1;i<=t;i++) { int res=0; cin>>n; for(j=1;j<=7;j++) cin>>minn[j]>>maxn[j]; for(j=0;j<1<<7;j++) { int l=0,r=0,count=0; for(k=1;k<=7;k++) if((1<<(k-1))&j) l+=minn[k],r+=maxn[k],count++; if(l<=n&&n<=r) res=max(res,count); } cout<<res<<endl; } return 0; }