你方有 \(n\) 个人,攻击力和血量都是 \(1\)。对方有 \(a\) 个普通人, \(b\) 个只有盾的,\(c\) 个只有嘲讽的,\(d\) 个有盾又有嘲讽的,他们的攻击力和血量都是无穷大。有盾的可以抵挡一次攻击,有嘲讽的必须先被杀掉,才能杀没有嘲讽的。

你方的 \(n\) 个人排成一排,从左向右依次出击,你知道它们每个是否有剧毒属性(即攻击力为无穷大)。

每次出击选定的对方是被色子控制的。问你能打败多少个对方人,求最大值和最小值。

数据组数 \(\leq 100\),所有数据 \(\leq 1000\)

Solution

考虑暴力模拟题意,开四个计数器记录四类对手分别剩下几个,然后从左到右读取己方序列,按规则选取攻击对象。在任何情况下,我们可以把有嘲讽的和没有嘲讽的分开处理。先处理有嘲讽的,等到有嘲讽的处理完毕以后再去处理没有嘲讽的。在接下来的讨论中,我们忽略嘲讽这一属性。

容易发现,己方的剧毒者既可以杀盾,也可以杀人;而己方的普通人只能杀盾。

如果要使得答案最大

  • 如果这一次派出的是普通人,就让它杀掉一个盾,将它转化为一个普通人
  • 如果这一次派出的是剧毒者,看是否还有普通人,如果有就杀人,否则就杀盾

如果要使得答案最小

  • 如果这一次派出的是普通人,若还有普通人,什么也不做,否则去破盾(一开始想成这里直接什么也不做了)
  • 如果这一次派出的是剧毒者,看是否还有盾,如果有就杀掉一个盾,否则才杀人
#include <bits/stdc++.h>
using namespace std; const int N = 1005;
int n,a,b,c,d;
char s[N]; int solve1(int a,int b,int c,int d) {
int ans=0;
for(int i=1;i<=n;i++) {
if(c+d>0) {
if(s[i]=='0') {
if(d>0) --d,++c;
}
else {
if(c>0) --c,++ans;
else if(d>0) --d,++c;
}
}
else {
if(s[i]=='0') {
if(b>0) --b,++a;
}
else {
if(a>0) --a,++ans;
else if(b>0) --b,++a;
}
}
}
return ans;
} int solve2(int a,int b,int c,int d) {
int ans=0;
for(int i=1;i<=n;i++) {
if(c+d>0) {
if(s[i]=='1') {
if(d>0) --d,++c;
else if(c>0) --c,++ans;
}
else {
if(c==0) if(d>0) --d,++c;
}
}
else {
if(s[i]=='1') {
if(b>0) --b,++a;
else if(a>0) --a,++ans;
}
else {
if(a==0) if(b>0) --b,++a;
}
}
}
return ans;
} signed main() {
int t;
cin>>t;
while(t--) {
cin>>n>>a>>b>>c>>d>>s+1;
cout<<solve1(a,b,c,d)<<" "<<solve2(a,b,c,d)<<endl;
}
}

Wannafly Winter Camp 2020 Day 6C 酒馆战棋 - 贪心的更多相关文章

  1. Wannafly Winter Camp 2020 Day 7E 上升下降子序列 - 数学

    神奇公式 #include <bits/stdc++.h> using namespace std; #define int long long int n,mod,c[205][205] ...

  2. Wannafly Winter Camp 2020 Day 7D 方阵的行列式 - 数学

    于是去弄了个板子来 #include <bits/stdc++.h> using namespace std; #define int long long const int mod = ...

  3. Wannafly Winter Camp 2020 Day 7A 序列 - 树状数组

    给定一个全排列,对于它的每一个子序列 \(s[1..p]\),对于每一个 \(i \in [1,p-1]\),给 \(s[i],s[i+1]\) 间的每一个值对应的桶 \(+1\),求最终每个桶的值. ...

  4. Wannafly Winter Camp 2020 Day 6J K重排列 - dp

    求 \(K\) 是多少个 \(n\) 元置换的周期.\(T\leq 100, n\leq 50, K \leq 10^{18}\) Solution 置换可以被试做若干个环组成的有向图,于是考虑 dp ...

  5. Wannafly Winter Camp 2020 Day 6I 变大! - dp

    给定一个序列,可以执行 \(k\) 次操作,每次选择连续的三个位置,将他们都变成他们的最大值,最大化 \(\sum a_i\) 需要对每一个 \(k=i\) 输出答案 \(n \leq 50, a_i ...

  6. Wannafly Winter Camp 2020 Day 6H 异或询问 - 二分

    给定一个长 \(n\) 的序列 \(a_1,\dots,a_n\),定义 \(f(x)\) 为有多少个 \(a_i \leq x\) 有 \(q\) 次询问,每次给定 \(l,r,x\),求 \(\s ...

  7. Wannafly Winter Camp 2020 Day 6G 单调栈 - 贪心

    对于排列 \(p\),它的单调栈 \(f\) 定义为,\(f_i\) 是以 \(p_i\) 结尾的最长上升子序列的长度 先给定 \(f\) 中一些位置的值,求字典序最小的 \(p\) 使得它满足这些值 ...

  8. Wannafly Winter Camp 2020 Day 6D 递增递增 - dp,组合数学

    给定两个常为 \(n\) 的序列 \(l_i,r_i\),问夹在它们之间 ( \(\forall i, l_i \leq a_i \leq r_i\) ) 的不降序列的元素总和. Solution 先 ...

  9. Wannafly Winter Camp 2020 Day 6A Convolution - NTT

    求 \(\sum_{i=1}^n \sum_{j=1}^n 2^{a_ia_j}\) Solution 化简一下 \[ 2^{a_ia_j} = p^{(a_i+a_j)^2-a_i^2-a_j^2} ...

随机推荐

  1. reload重载配置文件的真相

    02检查配置文件语法也就是说在重载nginx配置文件之前,不是必须使用nginx -t检查语法 03修改配置文件,新开启端口,比如443,所以需要打开新的监听端口 04使用新配置启动新的worker子 ...

  2. BZOJ 1046 [HAOI2007]上升序列(LIS + 贪心)

    题意: m次询问,问下标最小字典序的长度为x的LIS是什么 n<=10000, m<=1000 思路: 先nlogn求出f[i]为以a[i]开头的LIS长度 然后贪心即可,复杂度nm 我们 ...

  3. Ceph 13.2.8 三节点部署

    bs-k8s-ceph eth1 mon osd mgr deploy 2c2g sdb sdc sdd 各20G bs-hk-hk01 eth1 mon osd mgr 2c2g sdb sdc s ...

  4. num05---装饰模式

    当系统需要新的功能的时候,一般都是向旧的类中添加新的代码.比如一个人这个类,需要新增穿衣的功能,那么就会在人这个类中去添加对应的穿衣方法代码,用来增强人这个类的行为功能.但是这样做,会因为新加入的字段 ...

  5. mongodb 配置文件解释(转)

    Mongodb 3.x配置说明,本文内容忽略了Enterprise版和一些不常用的配置. 一.配置说明 在Mongod安装包中,包含2个进程启动文件:mongod和mongos:其中mongd是核心基 ...

  6. 什么?接口中方法可以不是抽象的「JDK8接口新语法的深度思考」

    先赞后看,养成习惯 文本已收录至GitHub开源仓库 Lu_JavaNodes 码云仓库地址Lu_JavaNodes,包含教程涉及所有思维导图,案例代码和后续讲解视频,欢迎Star增砖添瓦. 前言 在 ...

  7. 使用jQuery的插件jquery.corner.js来实现圆角效果-详解

    jquery.corner.js可以实现各种块级元素的角效果,以下为演示,详见jquery_corner.html中的注释部分,并附百度盘下载 jquery_corner.html代码如下: < ...

  8. springboot 日志 logback输出

    1.首先在 application,yaml中添加 logging: config: classpath:logback-spring.xml 2.之后在resources中添加 logback-sp ...

  9. XLNet:运行机制及和Bert的异同比较

    这两天,XLNet貌似也引起了NLP圈的极大关注,从实验数据看,在某些场景下,确实XLNet相对Bert有很大幅度的提升.就像我们之前说的,感觉Bert打开两阶段模式的魔法盒开关后,在这条路上,会有越 ...

  10. lwip 2.0.2 snmp mib ipv6

    1.3.6.1.2.1 - SNMP MIB-2 Submitted by Harald.T.Alvestrand at uninett.no from host aun.uninett.no (12 ...