一道模拟题目

对于所有0 还是 1 我们都可以想象做均为 0 的状态

v[i]表示原来的值

但是对于原来为1的要加上其所在的值作为初始值

然后转化后 a[i] = -v[i]  , 如果原来为0 , 那就直接赋值

我们总是希望将尽可能大的值先加 ,所以将a由大到小排个序 ,  一直加到负数的时候需要考虑这个负数取不取,其实我们最多取一个负数,因为当加了

第一个负数若后面还为负数,那么我们可以将那个负数倒转又加回来即可

但第一个负数取不取也要看它的绝对值是不是比前一个数大,如果大,说明宁可将前一个数再变一次颜色后舍去也不需要加后一个负数

最后我们就确定实际上使用的数了,如果操作数大于这个数,说明超过范围只是不断的将最小的数不断改变颜色

 #include <cstdio>
#include <algorithm>
using namespace std; const int N = ;
int col[N] , v[N] , a[N]; bool cmp(int a , int b)
{
return a>b;
} int main()
{
// freopen("a.in" , "r" , stdin);
int n , m;
while(scanf("%d%d" , &n , &m) == )
{
for(int i = ; i<n ; i++)
scanf("%d" , col+i);
for(int i = ; i<n ; i++)
scanf("%d" , v+i); int val = ;
for(int i= ; i<n ; i++)
if(col[i]){
val += v[i];
a[i] = -v[i];
}
else{
a[i] = v[i];
}
sort(a , a+n , cmp);
for(int i = ; i<n ; i++){
if(a[i] < ){
if(i == ){
n = ;
break;
}
if(-a[i] > a[i-]) n = i;
else n = i+;
break;
}
}
if(m<=n){
for(int i = ; i<m ; i++)
val += a[i];
}
else{
for(int i = ; i<n ; i++){
val += a[i];
}
if((m-n)&) val -= a[n-];
}
printf("%d\n" , val);
}
return ;
}

COJ 1156 Switching bulbs的更多相关文章

  1. Disable the screen switching about VI

    If you want to disable the screen switching, and you don't want tochange your termcap, you can add t ...

  2. Multiprotocol Label Switching (MPLS)

    Posted by: Margaret Rouse WhatIs.com   Contributor(s): Robert Sturt This definition is part of our E ...

  3. ural 1156. Two Rounds

    1156. Two Rounds Time limit: 2.0 secondMemory limit: 64 MB There are two rounds in the Urals Champio ...

  4. FJNU 1156 Fat Brother’s Gorehowl(胖哥的血吼)

    FJNU 1156 Fat Brother’s Gorehowl(胖哥的血吼) Time Limit: 1000MS   Memory Limit: 257792K [Description] [题目 ...

  5. Note for Computer Networks_Circuit Switching & Packet Switching

    Packet Switching: - In a packet switched network data is transmitted in blocks(packets), typically l ...

  6. Cortex-M3 Context Switching

    http://www.embedded.com/design/embedded/4231326/Taking-advantage-of-the-Cortex-M3-s-pre-emptive-cont ...

  7. Codeforces Round #338 (Div. 2) A. Bulbs 水题

    A. Bulbs 题目连接: http://www.codeforces.com/contest/615/problem/A Description Vasya wants to turn on Ch ...

  8. HDU 5601 N*M bulbs 找规律

    N*M bulbs 题目连接: http://codeforces.com/contest/510/problem/C Description NM个灯泡排成一片,也就是排成一个NM的矩形,有些开着, ...

  9. BestCoder Round #67 (div.2) N bulbs(hdu 5600)

    N bulbs Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Su ...

随机推荐

  1. 为什么Markdown能夺得程序员的青睐

    Markdown基本情况概述 Markdown是在HTML的基础上产生的.HTML的功能已经足够强大,可以编写出漂亮的网页.HTML在没有CSS的加持上,尽管不能显示出绚丽多彩的网页,但是仍然可以达到 ...

  2. CF379F New Year Tree

    题意翻译 你是一个程序猿,现在有一棵新年树(并不是传统的带着叶子的树)--它有四个节点: 1,2,3,4. 其中2,3,4的父亲都是1. 新年里,程序猿们往往会做一些有趣的事情.你则选择以往这棵树上加 ...

  3. 最新的 xp sp3序列号(绝对可通过正版验证)-xp序列号

    windows xp激活方法一:使用windows xp激活码 以下xp系统激活码都是可用的 MRX3F-47B9T-2487J-KWKMF-RPWBY(工行版) 可用(强推此号) QC986-27D ...

  4. [转]URL最大长度问题

    本文转自:http://www.cnblogs.com/henryhappier/archive/2010/10/09/1846554.html 今天在测试Email Ticket的时候发现在进行Ma ...

  5. Git命令add和commit的区别

    要想弄明白git add和git commit的区别,首先我们需要知道三个概念:工作区(Working Directory).版本库(Repository).暂存区(Stage or index). ...

  6. ARP劫持处理指令集

    第一组(据传xp有效,未实验) arp -a arp -d arp -s IP地址 MAC地址 第二组(windows2008R2有效,已实验) netsh i i show in (记住其中本地连接 ...

  7. Java 基础入门随笔(8) JavaSE版——静态static

    面向对象(2) this:代表对象.代表哪个对象呢?当前对象. 当成员变量和局部变量重名,可以用关键字this来区分. this就是所在函数所属对象的引用.(简单说:哪个对象调用了this所在的函数, ...

  8. linux环境下为php7装phpredis扩展

    phpredis在php7.php5下都有不同的版本,装岔了可能会编译报错,所以在安装之前请先看下自己的php是啥版本. 我的redis装的是redis3.2.3版本. 用phpinfo()查看安装的 ...

  9. flipt 一个基于golang 的特性工具开发类库

    以前介绍过一个Flagr 的基于golang 的特性功能开发类库(技术雷达推荐),今天看到一个类似也很不错的方案flipt 参考架构 包含的特性 快速,使用golang 编写,同时进行了性能优化 运行 ...

  10. 荷兰国旗问题、快排以及BFPRT算法

    荷兰国旗问题 给定一个数组arr,和一个数num,请把小于num的数放数组的左边,等于num的数放在数组的中间,大于num的数放在数组的右边.要求额外空间复杂度O(1),时间复杂度O(N). 这个问题 ...