CF175C Geometry Horse 题解
“日拱一卒,功不唐捐”
写在前面
本人因为没开long long而被迫参考楼下思路重构代码,最后发现这个问题加了long long才得以AC
进入正题
题面大家应该很清晰了,
这个水题(我也就交了七遍)的主要做法是 模拟+一点贪心+小学二年级数学
我们不难想到,把价值高的放在最后摧毁会更优
直接上一个sort
但是,问题来了:
1、可能将这一类物品摧毁一部分后,就直接进入下一阶段
2、可能将这一类物品全部摧毁后,还不能满足下一阶段
3、可能将这一类物品全部摧毁后,会横跨好几个阶段
4、可能到达最后一个阶段,还有许多物品没有被摧毁
其实让我们用代码直接模拟这个过程即可
如果遇到我们上述问题,多特判几下
具体解释在下面代码中
注:变量名zsf,lkp,lzx都是我的学姐长, (显然,lkp没用(到))
1 /*
2 Work by: Suzt_ilymtics
3 */
4 #include<iostream>
5 #include<cstdio>
6 #include<algorithm>
7 using namespace std;
8 struct node{
9 long long num , c;
10 bool operator < (const node & b) const {return c < b.c; }
11 }a[110];
12 int n,t,zsf = 1;//zsf贡献因子
13 long long p[110], lzx = 0, wz = 1;//lkp摧毁物品数,lzx与下一个阶段的差距
14 long long ans = 0;
15 int max(int x,int y){return x > y ? x : y ;}
16 int main()
17 {
18 scanf("%d",&n);
19 for(int i=1;i<=n;++i) scanf("%d%d",&a[i].num,&a[i].c);
20 scanf("%d",&t);
21 for(int i=1;i<=t;++i) scanf("%lld",&p[i]);
22 sort(a+1,a+1+n);
23 int i = 1;
24 lzx = p[zsf];//算一下差距
25 while(i<=n){
26 if(a[i].num >= 0 && a[i].num - lzx < 0){//如果当前物品数不够
27 ans += a[i].c * zsf * a[i].num;//先加上当前价值*贡献因子*剩余的数量
28 lzx -= a[i].num;//差距要减掉a[i].num
29 a[i].num = 0;//减完之后还剩0个
30 i++; //换下一个物品
31 }
32 else{//如果够
33 ans += a[i].c * zsf * lzx;//直接加上当前价值*贡献因子*差距的数量
34 a[i].num -= lzx;//当前物品的数量要减去差距
35 if(zsf > t) {
36 lzx = max(a[i].num,1);
37 continue;//如果 贡献因子超过第t个数,则贡献因子达到最大值
38 }
39 zsf++;//贡献因子++
40 if(zsf > t) continue;
41 lzx = p[zsf] - p[zsf-1];//更新差距
42 }
43 }
44 printf("%lld",ans);
45 return 0;
46 }
为了卡我自己的而手造的样例:
//cin:
1
5 1
2
2 3
//cout:
//10
The end
如果您有什么疑问的地方,尽管来骚扰我
CF175C Geometry Horse 题解的更多相关文章
- CF175C Geometry Horse(贪心)
CF175C 贪心,注意有不少细节,很容易死循环TLE 贪心是显而易见的,每次枚举价值最小的物品,进行销毁操作 朴素的枚举每一件物品复杂度为\(O(\sum k_i)\),明显超时 我们注意到朴素的+ ...
- ZOJ 4082 Little Sub and his Geometry Problem题解
题意 f(u,v):x小于等于u且y小于等于v的点才对f有贡献,每个这样的点贡献(u-x)+() 思路 =f(u_2,v_2)" class="mathcode" src ...
- Hdoj 1086.You can Solve a Geometry Problem too 题解
Problem Description Many geometry(几何)problems were designed in the ACM/ICPC. And now, I also prepare ...
- FJNU 1151 Fat Brother And Geometry(胖哥与几何)
FJNU 1151 Fat Brother And Geometry(胖哥与几何) Time Limit: 1000MS Memory Limit: 257792K [Description] [ ...
- CodeForces 689E Mike and Geometry Problem (离散化+组合数)
Mike and Geometry Problem 题目链接: http://acm.hust.edu.cn/vjudge/contest/121333#problem/I Description M ...
- BestCoder Round #68 (div.2) geometry(hdu 5605)
geometry Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Su ...
- Codeforces Gym 100338B Geometry Problem 计算几何
Problem B. Geometry ProblemTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudg ...
- geometry(简单数学题)
geometry Accepts: 324 Submissions: 622 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 6553 ...
- HDU题解索引
HDU 1000 A + B Problem I/O HDU 1001 Sum Problem 数学 HDU 1002 A + B Problem II 高精度加法 HDU 1003 Maxsu ...
随机推荐
- 远程调用post请求和get请求
/** * 获取用户 */ @RequestMapping("getUserMassages") public Map<String,Object> getuserMa ...
- react脚手架抽离webpack报错解决
我们在写react项目的时候,可能原有的webpack配置不满足我们的需求,需要自己去配置,可是你在创建脚手架的时候并不能在外部找到webpack文件,脚手架的webpack文件在node_modul ...
- C++雾中风景16:std::make_index_sequence, 来试一试新的黑魔法吧
C++14在标准库里添加了一个很有意思的元函数: std::integer_sequence.并且通过它衍生出了一系列的帮助模板: std::make_integer_sequence, std::m ...
- 详解Redis中两种持久化机制RDB和AOF(面试常问,工作常用)
redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失.幸好Redis还为我们提供了持久化的机制,分别是RDB(Redis DataBase)和AOF(Ap ...
- 面试官:数据库自增ID用完了会怎么样?
看到这个问题,我想起当初玩魔兽世界的时候,25H难度的脑残吼的血量已经超过了21亿,所以那时候副本的BOSS都设计成了转阶段.回血的模式,因为魔兽的血量是int型,不能超过2^32大小. 估计暴雪的设 ...
- TurtleBot3使用课程-第四节(北京智能佳)
目录 1.机器学习 2 1.1 机器学习一 2 1.1.1 目标 2 1.1.2 操作环境 2 1.1.3 设置 2 1.1.4运行(它需要超过几秒取决于PC) 3 1.1.5运行屏幕 3 1.1.6 ...
- Nginx+FFmpeg实现RTSP转RTMP
RTSP转RTMP 本次转流采用Centos+Nginx+FFmpeg实现,具体实现如下: 1. 安装Ngxin 安装详细略(可以选择安装阿里的Tengine,官方[下载路径](Download - ...
- 【Java基础】反射
反射 反射的概述 反射(Reflection)是被视为动态语言的关键,反射机制允许程序在执行期借助 Reflection API 取得任何类的内部信息,并能直接操作任意对象的内部属性和方法. 加载完类 ...
- 搭乘“AI大数据”快车,肌肤管家,助力美业数字化发展
经过疫情的发酵,加速推动各行各业进入数据时代的步伐.美业,一个通过自身技术.产品让用户变美的行业,在AI大数据的加持下表现尤为突出. 对于美妆护肤企业来说,一边是进入存量市场,一边是疫后的复苏期,一边 ...
- 面试官:Netty的线程模型可不只是主从多Reactor这么简单
笔者看来Netty的内核主要包括如下图三个部分: 其各个核心模块主要的职责如下: 内存管理 主要提高高效的内存管理,包含内存分配,内存回收. 网通通道 复制网络通信,例如实现对NIO.OIO等底层JA ...