原题地址:

打怪升级 一开始有N个怪物;主角有K个能力;只有K个能力都击败怪物才能斩杀怪物并获得K个能力的增值;问最多能杀几个怪物;

做法:

用优先队列把怪物能力装进去;能力小放前面;

最重要的是数据量要用读入挂才能过;(读入挂太神奇了!!)

 
 
代码:
  1.  
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. const ll mod=;
  5. const int maxn=1e5+;
  6. const ll inf=0x3f3f3f3f3f3f;
  7. namespace IO{
  8. #define BUF_SIZE 100000
  9. #define OUT_SIZE 100000
  10. #define ll long long
  11. //fread->read
  12.  
  13. bool IOerror=;
  14. inline char nc(){
  15. static char buf[BUF_SIZE],*p1=buf+BUF_SIZE,*pend=buf+BUF_SIZE;
  16. if (p1==pend){
  17. p1=buf; pend=buf+fread(buf,,BUF_SIZE,stdin);
  18. if (pend==p1){IOerror=;return -;}
  19. //{printf("IO error!\n");system("pause");for (;;);exit(0);}
  20. }
  21. return *p1++;
  22. }
  23. inline bool blank(char ch){return ch==' '||ch=='\n'||ch=='\r'||ch=='\t';}
  24. inline void read(int &x){
  25. bool sign=; char ch=nc(); x=;
  26. for (;blank(ch);ch=nc());
  27. if (IOerror)return;
  28. if (ch=='-')sign=,ch=nc();
  29. for (;ch>=''&&ch<='';ch=nc())x=x*+ch-'';
  30. if (sign)x=-x;
  31. }
  32. inline void read(ll &x){
  33. bool sign=; char ch=nc(); x=;
  34. for (;blank(ch);ch=nc());
  35. if (IOerror)return;
  36. if (ch=='-')sign=,ch=nc();
  37. for (;ch>=''&&ch<='';ch=nc())x=x*+ch-'';
  38. if (sign)x=-x;
  39. }
  40. inline void read(double &x){
  41. bool sign=; char ch=nc(); x=;
  42. for (;blank(ch);ch=nc());
  43. if (IOerror)return;
  44. if (ch=='-')sign=,ch=nc();
  45. for (;ch>=''&&ch<='';ch=nc())x=x*+ch-'';
  46. if (ch=='.'){
  47. double tmp=; ch=nc();
  48. for (;ch>=''&&ch<='';ch=nc())tmp/=10.0,x+=tmp*(ch-'');
  49. }
  50. if (sign)x=-x;
  51. }
  52. inline void read(char *s){
  53. char ch=nc();
  54. for (;blank(ch);ch=nc());
  55. if (IOerror)return;
  56. for (;!blank(ch)&&!IOerror;ch=nc())*s++=ch;
  57. *s=;
  58. }
  59. inline void read(char &c){
  60. for (c=nc();blank(c);c=nc());
  61. if (IOerror){c=-;return;}
  62. }
  63. //fwrite->write
  64. struct Ostream_fwrite{
  65. char *buf,*p1,*pend;
  66. Ostream_fwrite(){buf=new char[BUF_SIZE];p1=buf;pend=buf+BUF_SIZE;}
  67. void out(char ch){
  68. if (p1==pend){
  69. fwrite(buf,,BUF_SIZE,stdout);p1=buf;
  70. }
  71. *p1++=ch;
  72. }
  73. void print(int x){
  74. static char s[],*s1;s1=s;
  75. if (!x)*s1++='';if (x<)out('-'),x=-x;
  76. while(x)*s1++=x%+'',x/=;
  77. while(s1--!=s)out(*s1);
  78. }
  79. void println(int x){
  80. static char s[],*s1;s1=s;
  81. if (!x)*s1++='';if (x<)out('-'),x=-x;
  82. while(x)*s1++=x%+'',x/=;
  83. while(s1--!=s)out(*s1); out('\n');
  84. }
  85. void print(ll x){
  86. static char s[],*s1;s1=s;
  87. if (!x)*s1++='';if (x<)out('-'),x=-x;
  88. while(x)*s1++=x%+'',x/=;
  89. while(s1--!=s)out(*s1);
  90. }
  91. void println(ll x){
  92. static char s[],*s1;s1=s;
  93. if (!x)*s1++='';if (x<)out('-'),x=-x;
  94. while(x)*s1++=x%+'',x/=;
  95. while(s1--!=s)out(*s1); out('\n');
  96. }
  97. void print(double x,int y){
  98. static ll mul[]={,,,,,,,,,
  99. ,10000000000LL,100000000000LL,1000000000000LL,10000000000000LL,
  100. 100000000000000LL,1000000000000000LL,10000000000000000LL,100000000000000000LL};
  101. if (x<-1e-)out('-'),x=-x;x*=mul[y];
  102. ll x1=(ll)floor(x); if (x-floor(x)>=0.5)++x1;
  103. ll x2=x1/mul[y],x3=x1-x2*mul[y]; print(x2);
  104. if (y>){out('.'); for (size_t i=;i<y&&x3*mul[i]<mul[y];out(''),++i); print(x3);}
  105. }
  106. void println(double x,int y){print(x,y);out('\n');}
  107. void print(char *s){while (*s)out(*s++);}
  108. void println(char *s){while (*s)out(*s++);out('\n');}
  109. void flush(){if (p1!=buf){fwrite(buf,,p1-buf,stdout);p1=buf;}}
  110. ~Ostream_fwrite(){flush();}
  111. }Ostream;
  112. inline void print(int x){Ostream.print(x);}
  113. inline void println(int x){Ostream.println(x);}
  114. inline void print(char x){Ostream.out(x);}
  115. inline void println(char x){Ostream.out(x);Ostream.out('\n');}
  116. inline void print(ll x){Ostream.print(x);}
  117. inline void println(ll x){Ostream.println(x);}
  118. inline void print(double x,int y){Ostream.print(x,y);}
  119. inline void println(double x,int y){Ostream.println(x,y);}
  120. inline void print(char *s){Ostream.print(s);}
  121. inline void println(char *s){Ostream.println(s);}
  122. inline void println(){Ostream.out('\n');}
  123. inline void flush(){Ostream.flush();}
  124. #undef ll
  125. #undef OUT_SIZE
  126. #undef BUF_SIZE
  127. };
  128.  
  129. int v[];
  130. int value[maxn][];
  131. int b[maxn][];
  132. struct node{
  133. int id;
  134. int num;
  135. node(int id,int num){this->id=id;this->num=num;}
  136. bool friend operator<(node a,node b){
  137. return a.num>b.num;
  138. }
  139. };
  140. priority_queue<node>pq[];
  141. void init(){
  142. for(int i=;i<=;i++){
  143. while(!pq[i].empty())pq[i].pop();
  144. }
  145. }
  146. int n,k,t;
  147. int main()
  148. {
  149. // std::ios::sync_with_stdio(false);
  150. //std::cin.tie(0);
  151. IO::read(t);
  152. while(t--){
  153. init();
  154. IO::read(n);IO::read(k);
  155. for(int i=;i<=k;i++)IO::read(v[i]);
  156. for(int i=;i<=n;i++){
  157. for(int j=;j<=k;j++){
  158. IO::read(value[i][j]);
  159. }
  160. pq[].push(node(i,value[i][]));
  161. for(int j=;j<=k;j++)IO::read(b[i][j]);
  162. }
  163. int ans=,ans1=-;
  164. while(ans!=ans1){
  165. ans1=ans;
  166. for(int i=;i<k;i++){
  167. while(!pq[i].empty()&&pq[i].top().num<=v[i]){
  168. int now=pq[i].top().id;
  169. pq[i].pop();
  170. pq[i+].push(node(now,value[now][i+]));
  171. }
  172. }
  173. while(!pq[k].empty()&&pq[k].top().num<=v[k]){
  174. ans++;
  175. int now=pq[k].top().id;
  176. pq[k].pop();
  177. for(int i=;i<=k;i++)v[i]+=b[now][i];
  178. }
  179. }
  180. IO::println(ans);
  181. for(int i=;i<=k;i++){
  182. if(i!=)IO::print(' ');
  183. IO::print(v[i]);
  184. }
  185. IO::print('\n');
  186. }
  187. return ;
  188. }
  1.  
  1.  

HDU 6396 Swordsman --------2018 Multi-University Training Contest 7 (模拟+读入挂)的更多相关文章

  1. hdu 4930 Fighting the Landlords--2014 Multi-University Training Contest 6

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4930 Fighting the Landlords Time Limit: 2000/1000 MS ...

  2. HDU 6143 - Killer Names | 2017 Multi-University Training Contest 8

    /* HDU 6143 - Killer Names [ DP ] | 2017 Multi-University Training Contest 8 题意: m个字母组成两个长为n的序列,两序列中 ...

  3. HDU 6074 - Phone Call | 2017 Multi-University Training Contest 4

    看标程的代码这么短,看我的.... 难道是静态LCA模板太长了? /* HDU 6074 - Phone Call [ LCA,并查集 ] | 2017 Multi-University Traini ...

  4. HDU 6068 - Classic Quotation | 2017 Multi-University Training Contest 4

    /* HDU 6068 - Classic Quotation [ KMP,DP ] | 2017 Multi-University Training Contest 4 题意: 给出两个字符串 S[ ...

  5. HDU 6076 - Security Check | 2017 Multi-University Training Contest 4

    /* HDU 6076 - Security Check [ DP,二分 ] | 2017 Multi-University Training Contest 4 题意: 给出两个检票序列 A[N], ...

  6. HDU 6071 - Lazy Running | 2017 Multi-University Training Contest 4

    /* HDU 6071 - Lazy Running [ 建模,最短路 ] | 2017 Multi-University Training Contest 4 题意: 四个点的环,给定相邻两点距离, ...

  7. HDU 6078 - Wavel Sequence | 2017 Multi-University Training Contest 4

    /* HDU 6078 - Wavel Sequence [ DP ] | 2017 Multi-University Training Contest 4 题意: 给定 a[N], b[M] 要求满 ...

  8. HDU 6070 - Dirt Ratio | 2017 Multi-University Training Contest 4

    比赛时会错题意+不知道怎么线段树维护分数- - 思路来自题解 /* HDU 6070 - Dirt Ratio [ 二分,线段树 ] | 2017 Multi-University Training ...

  9. HDU 6036 - Division Game | 2017 Multi-University Training Contest 1

    /* HDU 6036 - Division Game [ 组合数学,NTT ] | 2017 Multi-University Training Contest 1 题意: k堆石子围成一个圈,数量 ...

随机推荐

  1. web.xml 文件详解

    目录 1. web.xml各版本区别 2. web.xml配置详解 2.1 java web项目启动加载顺序 2.2 web.xml中定义的元素 web.xml文件是Java Web项目中的一个配置文 ...

  2. Python 基础学习篇

    注:技术尚浅,时间匆忙,如有错误或者不当之处值得商榷的,请留言,吾必思而改之. 第一篇 :Python基础- 安装/变量/输入/及循环语句使用 第二篇:  Python基础- 常用数据类型 第三篇: ...

  3. ASP NET Core ---Automapper

    官方文档:http://docs.automapper.org/en/stable/index.html 一.安装和配置: 二.使用: 1.建立 Profile文件: public class Map ...

  4. 孤荷凌寒自学python第二十七天python的datetime模块及初识datetime.date模块

    孤荷凌寒自学python第二十七天python的datetime模块及初识datetime.date模块 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.datetime模块 dateti ...

  5. 【2017】KK English

    2017/11/24 Regardless of the enormous amount of photos shared on Wechat or Face book, modern city dw ...

  6. LDA学习笔记

    线性判别分析(Linear Discriminant Analysis,简称LDA)是一种经典的线性学习方法.其思想非常朴素,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近,异类的样例的投 ...

  7. pytorch下对简单的数据进行分类(classification)

    看了Movan大佬的文字教程让我对pytorch的基本使用有了一定的了解,下面简单介绍一下二分类用pytorch的基本实现! 希望详细的注释能够对像我一样刚入门的新手来说有点帮助! import to ...

  8. CentOS修改IP地址

    一.CentOS 修改IP地址修改对应网卡的IP地址的配置文件 # vi /etc/sysconfig/network-scripts/ifcfg-eth0   电信 # vi /etc/syscon ...

  9. 用archlinux作为日常开发机的感受

    机器配置 CPU: Intel Core i5-6200U RAM: 8G Resolution: 1920x1080 我在arch下常用的软件 图形桌面环境 i3wm wifi无线管理 Networ ...

  10. redis的socket event loop

    很早之前就因为nosql就听说了redis,直到去年才真正去了解,只能说相见恨晚. 因为数据库相关,我以为这应该是个庞然大物,万万没想到,源码不到2M,所以,我不知道该说啥了... 还是来点靠谱的: ...