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 ...
随机推荐
- 使用maven创建java项目是,jdk的版本默认为1.5,如何修改为1.8
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> ...
- [leetcode]75.Sort Color三指针
import java.util.Arrays; /** * Given an array with n objects colored red,white or blue, * sort them ...
- 有两张表;使用SQL查询,查询所有的客户订单日期最新的前五条订单记录。
客户信息表(c CUSTOM)有以下字段:id.name.mobile 客户订单表(C_ORDER)有以下字段:id.custom_id.commodity.count.order _date Sel ...
- JavaDailyReports10_17
学习JavaWeb第一天 输出我的第一个HelloWorld! 1 <%@ page language="java" import="java.util.*&quo ...
- 异步技巧之CompletableFuture
摘自--https://juejin.im/post/5b4622df5188251ac9766f47 异步技巧之CompletableFuture 1.Future接口 1.1 什么是Future? ...
- 聊一聊这个总下载量3603w的xss库,是如何工作的?
上篇文章这一次,彻底理解XSS攻击讲解了XSS攻击的类型和预防方式,本篇文章我们来看这个36039K的XSS-NPM库(你没有看错就是3603W次, 36039K次,36,039,651次,数据来自h ...
- 第十九章节 BJROBOT 安卓手机 APP 导航【ROS全开源阿克曼转向智能网联无人驾驶车】
导航前说明:一定要确保你小车在构建好地图的基础上进行! 1.把小车平放在你想要构建地图区域的地板上,打开资料里的虚拟机,打开一个终端, ssh 过去主控端启动roslaunch znjrobot br ...
- 4.简单的 GNU 汇编语法
芯片启动时很多设备没有初始化,需要汇编语言进行准备. 简单的GNU汇编语法: 1 label: instruction @ comment label :标号,类似于外号,为所在位置做标号,可以通过这 ...
- Java安全之Weblogic 2016-3510 分析
Java安全之Weblogic 2016-3510 分析 首发安全客:Java安全之Weblogic 2016-3510 分析 0x00 前言 续前面两篇文章的T3漏洞分析文章,继续来分析CVE-20 ...
- python -c 妙用
前言 python -c 命令还是有用的哈 正文 python的 -c 可以在命令行中调用 python 代码, 实际上 -c 就是 command 的意思 官方文档中解释为(节选自: python ...