CF #374 (Div. 2) D. 贪心,优先队列或set
1、CF #374 (Div. 2) D. Maxim and Array
2、总结:按绝对值最小贪心下去即可
3、题意:对n个数进行+x或-x的k次操作,要使操作之后的n个数乘积最小。
(1)优先队列
- #include<bits/stdc++.h>
- #define F(i,a,b) for (int i=a;i<b;i++)
- #define FF(i,a,b) for (int i=a;i<=b;i++)
- #define mes(a,b) memset(a,b,sizeof(a))
- #define INF 0x3f3f3f3f
- #define LL long long
- using namespace std;
- const int N=,MAX=;
- struct Num
- {
- int i;
- LL val; //一开始用int,一直挖9
- bool operator <(const Num &a1)const {
- return abs(val)>abs(a1.val);
- }
- }a[N];
- int main()
- {
- int n,k,num1;
- LL x;
- while(~scanf("%d%d%lld",&n,&k,&x))
- {
- priority_queue<Num>Q;
- num1=;
- F(i,,n){
- scanf("%lld",&a[i].val);
- a[i].i=i;
- Q.push(a[i]);
- if(a[i].val<)num1++;
- }
- Num ans;
- while(k--){
- ans=Q.top();Q.pop();
- if(num1%) {
- if(ans.val==){
- ans.val+=x;
- }else if(ans.val>){
- ans.val+=x;
- }else {
- ans.val-=x;
- }
- }else {
- if(ans.val==){
- ans.val-=x;
- if(ans.val<)num1++;
- }else if(ans.val>){
- ans.val-=x;
- if(ans.val<)num1++;
- }else {
- ans.val+=x;
- if(ans.val>=)num1--;
- }
- }
- a[ans.i]=ans;
- Q.push(ans);
- }
- printf("%lld",a[].val);
- F(i,,n)printf(" %lld",a[i].val);
- puts("");
- }
- return ;
- }
(2)set
- #include<bits/stdc++.h>
- #define F(i,a,b) for (int i=a;i<b;i++)
- #define FF(i,a,b) for (int i=a;i<=b;i++)
- #define mes(a,b) memset(a,b,sizeof(a))
- #define INF 0x3f3f3f3f
- #define LL long long
- using namespace std;
- const int N=,MAX=;
- int main()
- {
- int n,k,flag;
- LL x,a[N];
- while(~scanf("%d%d%lld",&n,&k,&x))
- {
- flag=;
- set<pair<LL,int> >S;
- F(i,,n){
- scanf("%lld",&a[i]);
- if(a[i]<)flag^=;
- S.insert(make_pair(abs(a[i]),i));
- }
- while(k--){
- int pos=S.begin()->second;S.erase(S.begin());
- if(flag){
- if(a[pos]>=)a[pos]+=x;
- else a[pos]-=x;
- }else {
- if(a[pos]>=){
- a[pos]-=x;
- if(a[pos]<)flag^=;
- }
- else {
- a[pos]+=x;
- if(a[pos]>=)flag^=;
- }
- }
- S.insert(make_pair(abs(a[pos]),pos));
- }
- cout<<a[];
- F(i,,n)printf(" %lld",a[i]);
- cout<<endl;
- }
- return ;
- }
CF #374 (Div. 2) D. 贪心,优先队列或set的更多相关文章
- CF #374 (Div. 2) C. Journey dp
1.CF #374 (Div. 2) C. Journey 2.总结:好题,这一道题,WA,MLE,TLE,RE,各种姿势都来了一遍.. 3.题意:有向无环图,找出第1个点到第n个点的一条路径 ...
- Educational Codeforces Round 62 (Rated for Div. 2) C 贪心 + 优先队列 + 反向处理
https://codeforces.com/contest/1140/problem/C 题意 每首歌有\(t_i\)和\(b_i\)两个值,最多挑选m首歌,使得sum(\(t_i\))*min(\ ...
- C. Playlist Educational Codeforces Round 62 (Rated for Div. 2) 贪心+优先队列
C. Playlist time limit per test 2 seconds memory limit per test 256 megabytes input standard input o ...
- CF #376 (Div. 2) C. dfs
1.CF #376 (Div. 2) C. Socks dfs 2.题意:给袜子上色,使n天左右脚袜子都同样颜色. 3.总结:一开始用链表存图,一直TLE test 6 (1)如果需 ...
- CF #375 (Div. 2) D. bfs
1.CF #375 (Div. 2) D. Lakes in Berland 2.总结:麻烦的bfs,但其实很水.. 3.题意:n*m的陆地与水泽,水泽在边界表示连通海洋.最后要剩k个湖,总要填掉多 ...
- hihoCoder 1309:任务分配 贪心 优先队列
#1309 : 任务分配 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定 N 项任务的起至时间( S1, E1 ), ( S2, E2 ), ..., ( SN, ...
- CF #371 (Div. 2) C、map标记
1.CF #371 (Div. 2) C. Sonya and Queries map应用,也可用trie 2.总结:一开始直接用数组遍历,果断T了一发 题意:t个数,奇变1,偶变0,然后与问的 ...
- CF #365 (Div. 2) D - Mishka and Interesting sum 离线树状数组
题目链接:CF #365 (Div. 2) D - Mishka and Interesting sum 题意:给出n个数和m个询问,(1 ≤ n, m ≤ 1 000 000) ,问在每个区间里所有 ...
- CF #365 (Div. 2) D - Mishka and Interesting sum 离线树状数组(转)
转载自:http://www.cnblogs.com/icode-girl/p/5744409.html 题目链接:CF #365 (Div. 2) D - Mishka and Interestin ...
随机推荐
- AngularJS 技术总结
学习AngularJS,并且能在工作中使用到,算是很幸运了.因此本篇也会搜集各种资料,进行分享. 书籍分享 AngularJS权威指南 常用链接 AngularJS API文档 AngularJS 用 ...
- [ios基础]IOS应用程序的生命周期问题
—程序的生命周期 a.程序的生命周期是指应用程序启动到应用程序结束整个阶段的全过程 b.每一个IOS应用程序都包含一个UIApplication对象,IOS系统通过该U ...
- 个性化设置phpMyAdmin,去掉“以树形显示数据库”,禁用“发送错误报告”
个性化设置phpMyAdmin 在使用phpMyAdmin 3.5.8.2时,发现: 如果数据库有相同的前缀,左边数据库导航会把前缀合并,即所谓的“以树形显示数据库”,真的有点不习惯,如下图所示: 不 ...
- PHP变量作用域详解(二)
学过C的人用PHP的时候一般会相当顺手,而且感到PHP太方便太轻松.但在变量作用域这方面却与C有不同的地方,搞不好会相当郁闷,就找不到错误所在.昨晚就与到这么一个问题,是全局变量在函数中的问题.今天搜 ...
- git实践
撤销提交 根据–soft –mixed –hard,会对working tree和index和HEAD进行重置: git reset –mixed:此为默认方式,不带任何参数的git reset,即时 ...
- Put-Me-Down项目Postmortem2
一.设想和目标 二.计划 三.资源 四.变更管理 五.设计/实现 六.测试/发布 总结 一.设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的 ...
- 教你摸清 Linux PC 的性能底细?
导读 基准测试是一项测试或一系列测试,用来确定某个计算机硬件运行起来的状况有多好.在许多情况下,“基准测试”实际上等同于“压力测试”.通过测试硬件的极限,然后可以将测得的结果与其他硬件测得的结果作一番 ...
- python嵌套函数、闭包与decorator
1 一段代码的执行结果不光取决与代码中的符号,更多地是取决于代码中符号的意义,而运行时的意义是由名字空间决定的.名字空间是在运行时由python虚拟机动态维护的,但是有时候我们希望能将名字空间静态化. ...
- 2016年11月24日--面向对象、C#小复习
面对对象就是:把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象.对同类对象抽象出其共性,形成类.类中的大多数数据,只能用本类的方法进行处理.类通过一个简单的外部接口与外界发生关系,对象 ...
- objccn-iOS上的相机捕捉
在第一台iPhone时,在app里面整合相机的唯一方法就是使用UIImagePickerController.到了iOS4,发布了更灵活的AVFoundation框架. UIImagePickerCo ...