codeforces 355C - Vasya and Robot

时间:2023-02-13 23:45:15

因为在允许的情况下,必然是左右手交替进行,这样不会增加多余的无谓的能量。

然后根据不同的分界点,肯定会产生左手或右手重复使用的情况,这是就要加上Qr/Ql * 次数。

一开始的想法,很直接,枚举每个分界点,计算出总共要用的能量,取最小的那个即是答案:

 #include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
int n,l,r,Q_l,Q_r,w[+];
scanf("%d%d%d%d%d",&n,&l,&r,&Q_l,&Q_r);
for(int i=;i<=n;i++) scanf("%d",&w[i]); int ans=,left_enegry_sum,right_enegry_sum;
for(int m=;m<=n;m++) //边界在m右边
{
left_enegry_sum=,right_enegry_sum=;
for(int i=;i<=m;i++) left_enegry_sum+=w[i]*l;
for(int i=n;i>m;i--) right_enegry_sum+=w[i]*r;
if(m < n-m) //右手拿的东西多
right_enegry_sum += ( (n-m) - m - ) * Q_r;
else if(m > n-m) //左手拿的东西多
left_enegry_sum += ( m - (n-m) - ) * Q_l;
ans=min(ans , left_enegry_sum + right_enegry_sum);
//printf("now:\n\tleft_enegry_sum=%d\tright_enegry_sum=%d\tenegry_sum=%d\n",left_enegry_sum,right_enegry_sum,ans);
}
printf("%d\n",ans);
}

但是在数据来那个很大的情况下会超时。

所以考虑到我们的枚举分界点方向是从左到右,那么我们不需要每次枚举分界点都O(n)地去计算左右手拿物品的能量

 #include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
int n,l,r,Q_l,Q_r,w[+];
scanf("%d%d%d%d%d",&n,&l,&r,&Q_l,&Q_r);
for(int i=;i<=n;i++) scanf("%d",&w[i]); w[]=; int ans=,left_energy_sum=,right_energy_sum=;
for(int i=;i<=n;i++) right_energy_sum+=w[i]*r;
for(int m=;m<=n;m++) //边界在m右边
{
left_energy_sum+=w[m]*l; //分界点右移一位,left_enrgy_sum增加新增的那一个物品消耗的能量即可
right_energy_sum-=w[m]*r; //分界点右移一位,right_enrgy_sum减少那一个物品消耗的能量即可
if(m < n-m) //右手拿的东西多
ans=min(ans , left_energy_sum + right_energy_sum + ( (n-m) - m - ) * Q_r);
else if(m > n-m) //左手拿的东西多
ans=min(ans , left_energy_sum + ( m - (n-m) - ) * Q_l + right_energy_sum);
else //两只手拿的一样多
ans=min(ans , left_energy_sum + right_energy_sum);
//printf("now:\n\tleft_energy_sum=%d\tright_energy_sum=%d\tenergy_sum=%d\n",left_energy_sum,right_energy_sum,ans);
}
printf("%d\n",ans);
}

codeforces 355C - Vasya and Robot

codeforces 355C - Vasya and Robot的更多相关文章

  1. Codeforces 1073C Vasya and Robot 【二分】

    <题目链接> 题目大意: 一个机器人从(0,0)出发,输入一段指令字符串,和机器人需要在指定步数后到达的终点,问如果机器人需要在指定步数内到达终点,那么需要对原指令字符串做出怎样的改变,假 ...

  2. Educational Codeforces Round 53 &lpar;Rated for Div&period; 2&rpar; C&period; Vasya and Robot 【二分 &plus; 尺取】

    任意门:http://codeforces.com/contest/1073/problem/C C. Vasya and Robot time limit per test 1 second mem ...

  3. Codeforces 1073C:Vasya and Robot(二分)

    C. Vasya and Robot time limit per test: 1 secondmemory limit per test: 256 megabytesinput: standard ...

  4. Codeforces Round &num;115 A&period; Robot Bicorn Attack 暴力

    A. Robot Bicorn Attack Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/17 ...

  5. CF 1073C Vasya and Robot(二分答案)

    C. Vasya and Robot time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  6. CodeForces - 837E - Vasya&&num;39&semi;s Function &vert; Educational Codeforces Round 26

    /* CodeForces - 837E - Vasya's Function [ 数论 ] | Educational Codeforces Round 26 题意: f(a, 0) = 0; f( ...

  7. Educational Codeforces Round 53 &lpar;Rated for Div&period; 2&rpar; C&period; Vasya and Robot

    题意:给出一段操作序列 和目的地 问修改(只可以更改 不可以删除或添加)该序列使得最后到达终点时  所进行的修改代价最小是多少 其中代价的定义是  终点序号-起点序号-1 思路:因为代价是终点序号减去 ...

  8. Educational Codeforces Round 53 &lpar;Rated for Div&period; 2&rpar; C&period; Vasya and Robot(二分或者尺取)

    题目哦 题意:给出一个序列,序列有四个字母组成,U:y+1,D:y-1 , L:x-1 , R:x+1;   这是规则 . 给出(x,y) 问可不可以经过最小的变化这个序列可以由(0,0) 变到(x, ...

  9. Educational Codeforces Round 53 &lpar;Rated for Div&period; 2&rpar; C Vasya and Robot 二分

    题目:题目链接 思路:对于x方向距离与y方向距离之和大于n的情况是肯定不能到达的,另外,如果n比abs(x) + abs(y)大,那么我们总可以用UD或者LR来抵消多余的大小,所以只要abs(x) + ...

随机推荐

  1. C&num;异常处理的几个原则

    转载来自:http://www.oecp.cn/hi/LiuBP/blog/2312 在开发应用程序的时候,异常处理是非常的重要的,我找到一些异常处理准则,将它共享出来,如有不同意见,欢迎提出来一起探 ...

  2. Moon&period;Orm版本维护及下载(跟踪报道)

    提示:最下面有最新的下载地址  历史记录: ).-- :: 支持Mysql,Sqlserver(点击下载) ).2013年9月14日,代码重构,加入oracle.复合主键功能(点击下载) )--,为d ...

  3. 先学习下一些基础的js和xpath语法

    这两个方法到底是在做什么呢?其实就是克隆了当前指令的节点,并生成子作用域.克隆的节点由transclude定义,如果你的属性是true,则克隆的是指令模板中的ng-transclude所在的DOM节点 ...

  4. Xml文件保存值不能及时更新

    今天在Xml文件中修改了一个值,调试时,发现读取的不是最新值.经过各种调试,还是不能解决.只好把文件项目给编译了一遍,在调试时,把在及时窗口,把变量值给改了一下啊,就是可以读到最新配置了.停止程序,在 ...

  5. 在Mac中安装&period;Net Core的开发环境

    在mac中部署dotnet core开发环境,我的MacOS版本号为OSX EI Capitan 10.11.6 1.安装brew homebrew官网推荐的安装命令如下: /usr/bin/ruby ...

  6. stardict词典(星际译王&rpar;

    sudo apt-get install stardict 下载词库: http://abloz.com/huzheng/stardict-dic/zh_CN/ 把下载的压缩包解压,以a为例cd /u ...

  7. C&num;抽象类应用实例

    abstract修饰符可以和类.方法.属性.索引器及事件一起使用,在类声明中使用abstract修饰符以表明这个类只能是其他类的基类. 抽象类的特性 (1)抽象类不能被实例化 (2)抽象类可以包含抽象 ...

  8. 源码解析Django CBV的本质

    Django CBV模式的源码解析 通常来说,http请求的本质就是基于Socket Django的视图函数,可以基于FBV模式,也可以基于CBV模式. 基于FBV的模式就是在Django的路由映射表 ...

  9. docker容器时间与宿主机时间不一致问题

    该问题是宿主机和容器时去不一致导致的. 把本机时区复制到宿主机即可: docker cp /etc/localtime a9c27487faf4:/etc/localtime 然后重启容器.

  10. &&num;39&semi;BAPI&lowbar;MESSAGE&lowbar;GETDETAIL&&num;39&semi; 用法

    其中message class是在se91里创建的 call function 'BAPI_MESSAGE_GETDETAIL' exporting id         = msg_class “m ...