场上场下各种TLE到怀疑人生。。。经过大佬指点之后才知道要用fread才能过,一般的快读不行。。。

题意:一个剑客打小怪兽,有n头小怪兽,剑客和小怪兽有m个属性。只有剑客的m个属性都大于等于某个小怪兽的属性,才能击杀这个小怪兽(即属性全方位碾压才能击杀),每击杀一个小怪兽可以获得属性的加成,问最终击杀的小怪兽数量和最终的属性值。

思路:最终可以击杀的数量与击杀顺序无关(因为能击杀的早晚都会击杀),可以对小怪兽的m个属性排序,从小往大扫描,到剑客的该属性值停止,记录小怪兽出现的次数。如果某个小怪兽出现了m次,说明可以击杀,放入队列。每次循环开始时加上击杀小怪兽的增幅效果,队列为空时为最终答案。

fread! fread! fread! 重要的事情说3遍。

#include<bits/stdc++.h>
using namespace std;
const int maxn=100010;
typedef long long ll;
pair<int,int> b[6][maxn];
int a[6],c[6][maxn],n,m,s[6],cnt[maxn];
int pos,len;
char buf[1005]; int xchar()
{
if (pos == len)
pos = 0, len = fread(buf, 1, 1005, stdin);
return buf[pos++];
} int readint()
{
int x=0,s=1,c=xchar();
while (c <= 32)
c = xchar();
if (c == '-')
s = -1, c = xchar();
for (; isdigit(c); c = xchar())
x = x*10+c-'0';
return x*s;
} void add(int pos){
for(int i=1;i<=m;i++)
a[i]+=c[i][pos];
}
queue<int> q;
int main(){
// freopen("1.txt","r",stdin);
int T,ans=0;
// scanf("%d",&T);
T=readint();
while(T--){
ans=0;
memset(cnt,0,sizeof(cnt));
// scanf("%d%d",&n,&m);
n=readint(),m=readint();
for(int i=1;i<=m;i++){
a[i]=readint();
}
// scanf("%d",&a[i]);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
// scanf("%d",&b[j][i].first);
b[j][i].first=readint();
b[j][i].second=i;
}
for(int j=1;j<=m;j++){
// scanf("%d",&c[j][i]);
c[j][i]=readint();
}
}
for(int i=1;i<=m;i++)
sort(b[i]+1,b[i]+1+n);
for(int i=1;i<=m;i++){
s[i]=1;
}
for(int i=1,j;i<=m;i++){
for(j=s[i];b[i][j].first<=a[i]&&j<=n;j++){
cnt[b[i][j].second]++;
if(cnt[b[i][j].second]==m)
q.push(b[i][j].second);
}
s[i]=j;
}
while(!q.empty()){
add(q.front());
q.pop();
ans++;
for(int i=1,j;i<=m;i++){
for(j=s[i];b[i][j].first<=a[i]&&j<=n;j++){
cnt[b[i][j].second]++;
if(cnt[b[i][j].second]==m)
q.push(b[i][j].second);
}
s[i]=j;
}
}
printf("%d\n%d",ans,a[1]);
for(int i=2;i<=m;i++)
printf(" %d",a[i]);
printf("\n");
}
}

  

HDU 6396(2018多校第七场1011) Swordsman的更多相关文章

  1. HDU 6397(2018多校第8场1001) Character Encoding 容斥

    听了杜教的直播后知道了怎么做,有两种方法,一种构造函数(现在太菜了,听不懂,以后再补),一种容斥原理. 知识补充1:若x1,x2,.....xn均大于等于0,则x1+x2+...+xn=k的方案数是C ...

  2. HDU 6395(2018多校第7场1010)Sequence

    不久前做过POJ3070,所以知道这题要用矩阵快速幂优化,但是这个题的递推公式中有一项⌊p/n⌋,场上就不会了... 下来才知道要用分块矩阵快速幂,因为⌊p/n⌋最多有2√p块,可以对每一块使用快速幂 ...

  3. hdu多校第七场 1011 (hdu6656) Kejin Player 概率dp

    题意: 一个游戏,有许多关,到下一关要花费金钱,做出尝试,有概率成功,若成功则到达下一关,若失败则停在此关或退回到前面某关,询问第l关到第r关的期望费用 题解: 显然,第r关到第l关的费用是dp[r] ...

  4. hdu 5288||2015多校联合第一场1001题

    pid=5288">http://acm.hdu.edu.cn/showproblem.php?pid=5288 Problem Description OO has got a ar ...

  5. 可持久化线段树的学习(区间第k大和查询历史版本的数据)(杭电多校赛第二场1011)

    以前我们学习了线段树可以知道,线段树的每一个节点都储存的是一段区间,所以线段树可以做简单的区间查询,更改等简单的操作. 而后面再做有些题目,就可能会碰到一种回退的操作.这里的回退是指回到未做各种操作之 ...

  6. Time Zone 【模拟时区转换】(HDU暑假2018多校第一场)

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6308 Time Zone Time Limit: 2000/1000 MS (Java/Others)  ...

  7. 2018多校第十场 HDU 6430 (线段树合并)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6430 题意:一棵树上每个节点权值为v[i],每个节点的heard值是:以它为LCA的两个节点的GCD的 ...

  8. 2014多校第七场1005 || HDU 4939 Stupid Tower Defense (DP)

    题目链接 题意 :长度n单位,从头走到尾,经过每个单位长度需要花费t秒,有三种塔: 红塔 :经过该塔所在单位时,每秒会受到x点伤害. 绿塔 : 经过该塔所在单位之后的每个单位长度时每秒都会经受y点伤害 ...

  9. 2014多校第七场1003 || HDU 4937 Lucky Number

    题目链接 题意 : 给定一个十进制n,让你转化成某个进制的数,让这个数只包含3 4 5 6这些数字,这个进制就成为n的幸运数字,输出有多少幸运数字,例如19,5进制表示是34,所以5是19的一个幸运数 ...

随机推荐

  1. vue配置stylus

    首先Vue-init webapck 随便一个name vue项目创建好之后 cnpm i  (利用淘宝镜像) cnpm i stylus stylus-loader -D 进行安装和配置 styl常 ...

  2. redis_学习_01_redis的安装

    一.windows下的安装 1.下载地址 https://github.com/MicrosoftArchive/redis/releases 下载:Redis-x64-3.2.100.zip 2.安 ...

  3. LeetCode OJ:Minimum Depth of Binary Tree(二叉树的最小深度)

    Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shor ...

  4. 微服务:Eureka配置集群环境

    一.注册中心编码 1.使用idea创建一个spring boot项目,pom如下: <?xml version="1.0" encoding="UTF-8" ...

  5. 浅学soap--------1

    无wsdl文件: Clint.php //客户端 <?php $soap = new SoapClient(null,array('uri'=>'server','location'=&g ...

  6. CodeForces - 156C:Cipher (不错的DP)

    Sherlock Holmes found a mysterious correspondence of two VIPs and made up his mind to read it. But t ...

  7. linux下查找命令两则

    由于本人不会阅读man手册,因此需要几下两个常用的查找命令: (1)在某个目录及其子目录查找某个文件并打印完整路径: find ./ -name "assertions.h" -e ...

  8. Visualforce入门第二篇_2017.3.1

    代码实现类似Html的表单(Form) <apex:page sidebar="false" standardController="Account"&g ...

  9. es6变量的解构赋值学习笔记

    1. 解构赋值的规则是,只要等号右边的值不是对象,就先将其转为对象.由于undefined和null无法转为对象,所以对它们进行解构赋值,都会报错. let { prop: x } = undefin ...

  10. hl7消息中和时间有关的字段的格式

    hl7消息中有许多segment(段)包含时间类型的Field.常用的MSH, EVN, PID中的时间字段及其格式为: 1. MSH-7, Date/time Of Message为yyyyMMdd ...