牛客原题,出题人zb背锅。

题意:关于魔法阵问题,选择最小的代价并且满足题目所需的要求;

思路: 从小到大枚举每个能量大小,计算出破坏魔法阵需要的代价,取最小的就好了,因为所需要的魔法币最多只有200,所以开两个大小为200的数组暴力枚举代价就好了。详细过程看代码注释。

#include <ctime>
#include <map>
#include <set>
#include <list>
#include <cmath>
#include <stack>
#include <queue>
#include <vector>
#include <string>
#include <cstdio>
#include <bitset>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#define lson rt << 1,l,m
#define rson rt << 1 | 1 ,m + 1, r
#define accept return 0
#define  mes(a, b)  memset(a, b, sizeof a)
typedef unsigned long long int ull;
typedef long long int ll;
const int    maxn = 1e6 + 10;
const int    maxm = 1e5 + 10;
// const int    mod  = 1e9 + 7;
const ll     INF  = 1e18 + 100;
const int    inf  = 0x3f3f3f3f;
const double pi   = acos(-1.0);
const double eps  = 1e-8;
using namespace std;
ll need[300],nneed[300];
ll cost = 0;
ll minn,n;struct node{ll h,w,n;bool operator <(const node & a)const{return h < a.h;//按能量大小排序}
}t[maxn];void solve(){mes(need,0);mes(nneed,0);sort(t + 1 , t + 1 + n);ll nown = 0;minn = INF;ll ans = 0;ll nowin = 0;for(int i = 1;i <= n;i++){   //从小到大枚举能量ans = 0;nneed[t[i].w] += t[i].n; //nneed数组存储当前拥有的魔法棒的所有能量的数量nown += t[i].n;    //当前拥有的所有的魔法棒的数量nowin += t[i].n;    //当前能量的魔法棒的数量cost -= t[i].n * t[i].w;  //破坏比当前魔法棒能量大的魔法棒所需的总花费if(t[i].h != t[i + 1].h){ans += cost;if(nown - (nowin * 2 - 1) > 0){ll left = nown - (nowin * 2 - 1);  //当前能量魔法棒数量严格大于当前拥有的所有魔法棒for(int j = 1;j <= 200;j++){if(left > need[j]) {ans += j * need[j]; left -= need[j];} //减去比当前魔法棒能量小的魔法棒的最小花费的魔法棒else{ans += j * left;break;}}}minn = min(minn,ans);for(int j = 1;j <= 200;j++) need[j] = nneed[j];nowin = 0;}}printf("%lld\n",minn);
}int main(){while(cin >> n){cost = 0;for(int i = 1;i <= n;i++) {cin >> t[i].h >> t[i].w >> t[i].n;cost += t[i].w * t[i].n; //预处理最大的能量花费}solve();}
}

FJUT 2019暑假第三次周赛 C - 郭先生的魔法阵相关推荐

  1. 2019暑假第三周总结

    (一)本周工作内容: 本周对java语言进行了更深入的学习了解了其与所学的c语言,c++语言的异同 如这三种语言的顺序,选择,循环方式所对应的代码大体相似,而在c中的函数在java中则 被叫做方法.同 ...

  2. 2018年暑假第四次周赛-图论部分题解

    2018年暑假第四次周赛-图论部分题解 A.信我啊,这是签到题 这题是签到题 数据出锅,多组后来补的,后来直接删除了一整个文本.纯属意外. 出签到题难啊,本意是一道题教会17一个模型的.说没学过不该出 ...

  3. 将2019拆分成三个整数的平方和

    早上看到译友铁冰在朋友圈里发了一条消息,说2019真是个神奇的数字. 将2019拆分成三个整数的平方和.只给了6个,我问他:"遍历完了吗?" 他回答:"完了!" ...

  4. 2019软件工程第三次作业

    2019软件工程第三次作业 数独游戏 戳这里进入Github项目 第一眼看到要做数独的时候,脑海里的第一反应就是用深搜.现在好了,确定了算法,接下来就是要去实现它,可是对于将近半年没写过深搜的我要写一 ...

  5. 江西职业中学高三的三校生计算机考试,2019年江西省“三校生”对口升学考试高等职业学校高考语文试题及答案.pdf...

    准考证号 姓名 绝密 ★ 启用前 (在此卷上答题无效) 2019年江西省 "三校生"对口升学考试 语 文 第Ⅰ卷 选择题 本卷共15 小题,每小题3分,共45分.在每小题给出的四个 ...

  6. 2019暑假起集训实录

    欢迎 2019暑假集训实录 7.6 Codeforces #Round572补题,UVA820最大流,UVA12093树形dp,完成POJ1077优先队列bfs(A*),完成HDU1667-The R ...

  7. 古董电脑室:2019日记簿(三)

    古董电脑室:2019日记簿(三) 蓬岸 Dr.Quest 电脑博物馆 www.DNBWG.com 站长 40 人赞同了该文章 2019年1月2号 喜大奔普,GitHub私有仓库免费开放,为了私有仓库我 ...

  8. Rimini Street公布2019年第三财季财务业绩

    季度营收6,900万美元,同比增长10.1% 季度毛利润率为62.4%,较去年同期的64.5%有所下滑 2019年9月30日活跃用户达到了2,032名,同比增长17.3% 拉斯维加斯--(美国商业资讯 ...

  9. 【年终总结】2019年有三AI NLP做了什么,明年要做什么?

    时间不紧不慢的,从2019年6月中旬有三AI公众号开始发布自然语言处理(NLP)相关的文章以来,已是半年有余. 回头看看,NLP系列文章基本维持在了一周一到两篇的更新频率,基本上覆盖了NLP所需要聊到 ...

最新文章

  1. Inception GoogLeNet
  2. python excel绘图-Python excel 画图
  3. 构建javaweb项目
  4. Ubuntu14.04 更新源 方法 提升更新的下载速度
  5. 轻松完成Birt报告
  6. 内置的常用协议实现模版
  7. 登陆代码 寻找更好的
  8. Forrester报告:人工智能将取代6%的工作岗位
  9. [转载] 机器学习之主成分分析PCA(Python实现)
  10. 详细剖析ANSYS有限元分析这个软件
  11. 编辑为什么建议转投_编辑回信解读 —“建议转投子刊”实例
  12. GlobalMaxPooling1D和MaxPooling1D的区别
  13. Atom必不可少插件推荐【转】
  14. 小学生计算机特训营,杭州小学生军事特训营
  15. gitbook 插件 主题
  16. ARM 指令 LDR
  17. 使用GPU版PYtorch,踩过的坑(PYtorch版本和GPU版本不对应问题)
  18. html页面编码规则,HTML:网站通用代码规范
  19. android 多用户 设置权限管理,Android 多用户模式原理和实现介绍
  20. 如何利用裂变工具为公众号涨粉?

热门文章

  1. 爬虫:Xpath定位
  2. java获取过去12个月日期
  3. Racket编程指南——21 运行和创建可执行文件
  4. 大数据与Hadoop系列之分布式文件系统(一)
  5. 读书笔记:杨绛《我们仨》
  6. 015、移动WEB开发基础
  7. Markdown文件关机没保存,怎么恢复
  8. 解决Post请求中文乱码问题
  9. python3刷新监控网页_python - 如何不刷新网页而监控网页变化?
  10. python-货币转换