题目列表

A.most unstable array
题号
题意
n个非负正数和为m,求所有相邻两数绝对值之和,即
分析
选择其中一个数为m本身,其他都取0。
为便于分析,分为两种情况来看。
如果n为奇数,取法有很多种。
只需要排列的开头和结尾都是0,并且非零数以0为间隔,这样的差的绝对值最大。每个非零数aia_iai​与其两边的零相差绝对值为2*aia_iai​,然后进行累加,结果就是2m。举例,5个数和为7,则可以取[0,3,0,4,0],相邻两数差的绝对值之和为3+3+4+4=14=27=2m;或者取[0,1,0,6,0],相邻两数差的绝对值之和为1+1+6+6=14=27=2m,或者取[0,7,0,0,0]=7+7=14=2m
当然这是奇数的情况。
如果n为偶数,只能[0,m,0,0,…]这样来做。

综上,最简单的做法如下:
n= =1时,排列为[m]结果为0
n==2时,排列为[m,0]结果为m
n>=3时,排列为[0,m,0,0,0](其中n-1个0),结果为2m

ac代码

#include<iostream>using namespace std;int t;
long long n,m;
int main(){cin>>t;while(t--){cin>>n>>m;if(n==1){cout<<0<<endl;continue; } if(n==2){cout<<m<<endl;continue;}cout<<m*2<<endl;}
}

B.Two Arrays And Swaps
题号280477B - 12
题意
给定两个等长的序列a和b,允许两个序列交换数字,但是给定交换次数的最大值k。要求在不超过k次交换使得a序列元素之和变得最大

分析
a从小到大排序,b从大到小排序,b中最大的与a中最小的交换。
当然需要分情况讨论
【1】交换次数==0,直接输出sum
【2】a所有数字都比b中的大,不需要交换,直接输出sum
【3】a中所有数字都比b中的小,那么交换k次。
【4】b中部分数字比a中部分数字大,两个指针来比较

         int p1=0,p2=0;//p1是a中的指针,p2是b中的指针while(p1!=n&&p2!=n&&k!=0){//a和b没遍历完,交换次数没用完if(b[p2]>a[p1]){//b中的元素大于a中的元素,交换sum+=b[p2]-a[p1];k--;//交换次数用掉一次p2++;//此数已交换,b的指针后移}p1++; //a的指针后移}

ac代码
ac代码链接代码和原题

#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=40;
int t,n,k,a[maxn],b[maxn];
int main(){cin>>t;while(t--){cin>>n>>k;long long sum=0;for(int i=0;i<n;i++){cin>>a[i];sum+=a[i];//求和   }   for(int i=0;i<n;i++){cin>>b[i]; }   if(k==0){//没有交换 cout<<sum<<endl;continue;}sort(a,a+n);//从小到大 sort(b,b+n,greater<int>());//从大到小 if(b[0]<=a[0]){//b全都小 cout<<sum<<endl;continue;}else if(b[n-1]>=a[n-1]){//b全都大for(int i=0;i<k;i++){sum+=b[i]-a[i];} } else{//有大有小 int p1=0,p2=0;while(p1!=n&&p2!=n&&k!=0){if(b[p2]>a[p1]){sum+=b[p2]-a[p1];k--;p2++;}p1++; }}cout<<sum<<endl;sum=0;}return 0;
}

D.
需要采用优先队列,每次按照区间长度排序,区间长度相同则做左端点小的优先级高。

bfs+二分赋值即可
bfs模板中的队列改为优先队列priority_queue,每次取出长度最大的连续为0的区间,然后取中点赋值,如果长度相等,则取区间左端点靠前的区间来取中点赋值。

#include<iostream>
#include<queue>//priority_queue
#include<cstring> using namespace std;
const int maxn=2e5+10;int t,n,a[maxn];struct seg{int l;int r;int len;bool operator<(const seg&s2)const{if(s2.len==len)//长度相同,左端点小者优先 return l>s2.l;elsereturn len<s2.len;//长度大者优先 }
};seg start,tmp,tmp2;int main(){cin>>t;while(t--){priority_queue<seg> pq;memset(a,0,sizeof(a));cin>>n;//bfsstart.l=1;//起点start.r=n;start.len=n;pq.push(start);//起点入队int cnt=0;while(!pq.empty()){tmp=pq.top();//取点pq.pop();//出队,防止死循环cnt++;//待赋值的数int mid=(tmp.l+tmp.r)/2;//取中点if(a[mid]==0){a[mid]=cnt;}//二分放进来if(tmp.l<=mid-1){tmp2.l=tmp.l;tmp2.r=mid-1;tmp2.len=tmp2.r-tmp2.l+1;pq.push(tmp2); }if(mid+1<=tmp.r){tmp2.l=mid+1;tmp2.r=tmp.r;tmp2.len=tmp2.r-tmp2.l+1;pq.push(tmp2);}}for(int i=1;i<=n;i++){cout<<a[i]<<" ";}cout<<endl;}}

codeforce训练2总结相关推荐

  1. 奔波真是辛苦啊,然而生命终将逝去,只希望当一切都结束的时候,能够没有遗憾吧。

    周一就打算写篇心灵随笔,奈何又到了周日(就当做还是周日吧). 也许是突然有所感触,也许顿悟,也许只是无病呻吟,庸者自唉. 说来自从大三下从uestc-acm集训队退役之后,除了少数时间段充满热情外,大 ...

  2. 一名普通学生的大一总结【不知我等是愚是狂,唯知一路向前奔驰】

    时间过的真快呀,仿佛高考的百日誓师的场景还在昨天,军训时喊口号的声音还在我的耳边回荡,我的大一,一转眼就过去了,这一年,有泪水,有苦涩,但我坚信,这一路上,我所吃过的苦,所流过的泪,都将沉淀为我人生的 ...

  3. 「日常训练」Skills(Codeforce Round #339 Div.2 D)

    题意(CodeForces 614D) 每个人有\(n(n\le 10^5)\)个技能,技能等级都在\([0,10^9]\)的范围,每个技能有一个当前等级,所有技能的最高等级都为A.一个人的力量被记做 ...

  4. ckpt下载 deeplabv3_tensorflow语义分割api使用(deeplab训练cityscapes)

    遇到的坑: 1. 环境: - tensorflow1.8+CUDA9.0+cudnn7.0+annaconda3+py3.5 - 使用最新的tensorflow1.12或者1.10都不行,报错:报错不 ...

  5. 自己动手实现20G中文预训练语言模型示例

    起初,我和大部分人一样,使用的是像Google这样的大公司提供的Pre-training Language Model.用起来也确实方便,随便接个下游任务,都比自己使用Embedding lookup ...

  6. 显卡不够时,如何训练大型网络

    https://mp.weixin.qq.com/s?__biz=MzIwNzc2NTk0NQ%3D%3D&chksm=970c2143a07ba855562ca86bfa19b78a26fe ...

  7. ELECTRA 超过bert预训练NLP模型

    论文:ELECTRA: Pre-training Text Encoders As Discriminators Rather Then Generators 本文目前在ICLR 2020盲审中,前几 ...

  8. python实现glove,gensim.word2vec模型训练实例

    20210331 https://blog.csdn.net/sinat_26917383/article/details/83029140 glove实例 https://dumps.wikimed ...

  9. 分布式训练使用手册-paddle 数据并行

    分布式训练使用手册¶ 分布式训练基本思想¶ 分布式深度学习训练通常分为两种并行化方法:数据并行,模型并行,参考下图: 在模型并行方式下,模型的层和参数将被分布在多个节点上,模型在一个mini-batc ...

最新文章

  1. windows核心编程-第一章 对程序错误的处理
  2. verilog中wire和reg的区别,什么时候用wire?什么时候用reg?
  3. Centos7 虚拟机复制后网卡问题 Job for network.service failed
  4. 硬核,这个充电宝居然烧煤气!
  5. java 并发编程多线程_多线程(一)java并发编程基础知识
  6. 论文浅尝 | BoxE:一种基于Box的知识图谱表示学习模型
  7. javascript for循环 日期 select
  8. 检测c/c++中内存泄露
  9. 南阳理工学院计算机acm,南阳理工学院计算机学院ACM队成员获奖情况[荣誉记]
  10. 解压缩 tar命令详解
  11. 关于while循环终止循环的三种方式
  12. Centos7设置开机自动运行脚本
  13. 分享几款交互UI设计软件用法,了解后再选择
  14. 技校学计算机当兵,学员(部分)作业选登:《两年计划》读完技校,考上中专,然后去当兵(图)...
  15. 基于功能的差异化战略
  16. Tensorflow Python API 翻译(array_ops)
  17. linux vi 看下一页,linux中的vi命令(2)
  18. 微信小程序CMS系统开发教程开发初级
  19. 【Unity】监听编辑器聚焦/激活状态OnEditorFocus
  20. Monkey测试基础+ADB命令

热门文章

  1. 电磁学讲义2:库仑定律
  2. Angular.js 最强学习资源合集
  3. 和菜鸟一起学证券投资之股市常见概念公式1
  4. 用共振频率去进行图片分类的尝试
  5. java 序列化概念和作用_结合代码详细解读Java序列化与反序列化概念理解
  6. 虚拟化四路服务器,专为虚拟化设计 戴尔R905四路服务器评测
  7. Ardino基础教程 23_步进电机
  8. android:persistent属性
  9. FPGA篇(六)关于Modelsim仿真时不能编译`include文件解决办法【Verilog】【Modelsim】(转)
  10. 超声相控阵合成孔径成像FPGA设计介绍