HDU 6396(2018多校第七场1011) Swordsman
场上场下各种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的更多相关文章
- HDU 6397(2018多校第8场1001) Character Encoding 容斥
听了杜教的直播后知道了怎么做,有两种方法,一种构造函数(现在太菜了,听不懂,以后再补),一种容斥原理. 知识补充1:若x1,x2,.....xn均大于等于0,则x1+x2+...+xn=k的方案数是C ...
- HDU 6395(2018多校第7场1010)Sequence
不久前做过POJ3070,所以知道这题要用矩阵快速幂优化,但是这个题的递推公式中有一项⌊p/n⌋,场上就不会了... 下来才知道要用分块矩阵快速幂,因为⌊p/n⌋最多有2√p块,可以对每一块使用快速幂 ...
- hdu多校第七场 1011 (hdu6656) Kejin Player 概率dp
题意: 一个游戏,有许多关,到下一关要花费金钱,做出尝试,有概率成功,若成功则到达下一关,若失败则停在此关或退回到前面某关,询问第l关到第r关的期望费用 题解: 显然,第r关到第l关的费用是dp[r] ...
- hdu 5288||2015多校联合第一场1001题
pid=5288">http://acm.hdu.edu.cn/showproblem.php?pid=5288 Problem Description OO has got a ar ...
- 可持久化线段树的学习(区间第k大和查询历史版本的数据)(杭电多校赛第二场1011)
以前我们学习了线段树可以知道,线段树的每一个节点都储存的是一段区间,所以线段树可以做简单的区间查询,更改等简单的操作. 而后面再做有些题目,就可能会碰到一种回退的操作.这里的回退是指回到未做各种操作之 ...
- Time Zone 【模拟时区转换】(HDU暑假2018多校第一场)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6308 Time Zone Time Limit: 2000/1000 MS (Java/Others) ...
- 2018多校第十场 HDU 6430 (线段树合并)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6430 题意:一棵树上每个节点权值为v[i],每个节点的heard值是:以它为LCA的两个节点的GCD的 ...
- 2014多校第七场1005 || HDU 4939 Stupid Tower Defense (DP)
题目链接 题意 :长度n单位,从头走到尾,经过每个单位长度需要花费t秒,有三种塔: 红塔 :经过该塔所在单位时,每秒会受到x点伤害. 绿塔 : 经过该塔所在单位之后的每个单位长度时每秒都会经受y点伤害 ...
- 2014多校第七场1003 || HDU 4937 Lucky Number
题目链接 题意 : 给定一个十进制n,让你转化成某个进制的数,让这个数只包含3 4 5 6这些数字,这个进制就成为n的幸运数字,输出有多少幸运数字,例如19,5进制表示是34,所以5是19的一个幸运数 ...
随机推荐
- 详解 Android 通信
详解 Android 通信 :http://www.androidchina.net/5028.html
- BZOJ- 3142:数列 (数学)
题意:给出N,K,M,P.求有多少长度为K的序列A,满足:(1)首项为正整数:(2)递增数列:(3)相邻两项的差小于等于m:(4)最后一个数小于等于N. 思路:根据差分来算数量. #include&l ...
- IntelliJ IDEA 代码检查规范QAPlug
转自:http://blog.csdn.net/jizi7618937/article/details/51500725 Avoid Array Loops 数组之间的拷贝使用System.array ...
- Laser
Petya is the most responsible worker in the Research Institute. So he was asked to make a very impor ...
- 使用sort&awk实现文件内容块排序
源文件为: [root@luo5 wangxx]# cat -v luo.txt J LuoSoutth jfsaNanjing,china Y ZhangVictory UniversityNejf ...
- 学习动态性能表(20)--v$waitstat
学习动态性能表 第20篇--V$WAITSTAT 2007.6.15 本视图保持自实例启动所有的等待事件统计信息.常用于当你发现系统存在大量的"buffer busy waits" ...
- mysql之 mysql数据库压力测试工具(mysqlslap)
mysqlslap是从MySQL的5.1.4版开始就开始官方提供的压力测试工具.通过模拟多个并发客户端并发访问MySQL来执行压力测试,同时提供了较详细的SQL执行数据性能报告,并且能很好的对比多个存 ...
- Sqoop--Free-form Query Imports 自由查询模式下$CONDITIONS关键字的作用
Scoop是用来实现HDFS文件系统和关系型数据库如MySQL之间数据传输和转换的工具. 从MySQL导出到HDFS可以通过--table, --columns and --where等设置数据抽出的 ...
- Operating System-进程/线程内部通信-临界区(Critical Regions)
上一篇文章讲述了进程之间的竞争条件:多个进程同时进入一个共享区域,导致了数据的不一致,本文主要介绍如何解决这个问题. 一.临界区介绍 解决这个问题就是阻止多个进程同时进入这个共享区域,换句话说,进程之 ...
- c#的日志插件NLog基本使用
本文介绍c#的日志插件NLog 安装插件 创建logger 日志级别 书写日志信息 配置 包装器 布局 安装插件 直接下载插件包 Install-Package NLog.Config 创建logge ...