那天晚上和同学打球打的有点晚,结果就鸽了,现在来补一下

A - Ahahahahahahahaha

直接看原数组中0的个数cnt0和1的个数cnt1,谁多留谁即可,注意留1的时候要留偶数个。

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=1010;
int a[N];
int n;
int main()
{IO;int T=1;cin>>T;while(T--){cin>>n;for(int i=1;i<=n;i++) cin>>a[i];int cnt0=0,cnt1=0;for(int i=1;i<=n;i++){if(a[i]) cnt1++;else cnt0++;}if(cnt1<=n/2){cout<<cnt0<<'\n';for(int i=1;i<=cnt0;i++) cout<<0<<' ';cout<<'\n';}else{if(cnt1&1) cnt1--;cout<<cnt1<<'\n';for(int i=1;i<=cnt1;i++) cout<<1<<' ';cout<<'\n';}}return 0;
}

B - Big Vova

直接暴力,从第一位开始每次选一个目前使c[i]最大的数即可,维护d使之为d=gcd(b1,b2…bi)d=gcd(b_1,b_2\dots b_i)d=gcd(b1​,b2​…bi​)
时间复杂度O(n2logn)O(n^2logn)O(n2logn)

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1010;
int a[N],b[N],n;
int gcd(int a,int b)
{return b?gcd(b,a%b):a;
}
int main()
{IO;int T=1;cin>>T;while(T--){cin>>n;int d=0;for(int i=1;i<=n;i++){cin>>a[i];d=max(a[i],d);}for(int i=1;i<=n;i++){int mx=0;int p=-1;for(int j=1;j<=n;j++){if(a[j]==0) continue;//之前选过if(mx<gcd(d,a[j])){mx=gcd(d,a[j]);p=j;}}b[i]=a[p];d=gcd(d,b[i]);a[p]=0;}for(int i=1;i<=n;i++) cout<<b[i]<<' ';cout<<'\n';}return 0;
}

C - Chocolate Bunny

交互题,第一次做什么东西啊
每次选择没有确定的两个位置i,j,询问i、jj、i。分析可知这样一定能确定一个位置的数。总询问次数为2n−22n-22n−2次,即可原序列。
如果ai>aja_i>a_jai​>aj​,已知ai%aj=xa_i \%a_j= xai​%aj​=x和aj%ai=ya_j \%a_i= yaj​%ai​=y,分析可知a[j]=ya[j]=ya[j]=y即确定了一个位置的数。
如果ai<aja_i<a_jai​<aj​,已知ai%aj=xa_i \%a_j= xai​%aj​=x和aj%ai=ya_j \%a_i= yaj​%ai​=y,分析可知a[i]=xa[i]=xa[i]=x也能能够确定一个位置的数。

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
const int N=10010;
int a[N],n;
bool st[N];
int main()
{IO;int T=1;//cin>>T;while(T--){cin>>n;int x,y,now=1;for(int i=2;i<=n;i++){cout<<"? "<<now<<' '<<i<<'\n';cout.flush();cin>>x;cout<<"? "<<i<<' '<<now<<'\n';cout.flush();cin>>y;if(x>y){a[now]=x;st[x]=1;now=i;}else{a[i]=y;st[y]=1;}}for(int i=1;i<=n;i++)if(!st[i]) a[now]=i;cout<<"! ";for(int i=1;i<=n;i++) cout<<a[i]<<' ';cout<<'\n';}return 0;
}

D - Discrete Centrifugal Jumps

f[i]=min(f[i],f[k]+1)f[i]=min(f[i],f[k]+1)f[i]=min(f[i],f[k]+1) 对于h[k+1…i−1]h[k+1\dots i-1]h[k+1…i−1]满足题目条件即可

// O(n^2)
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=300010;
int h[N],n;
int f[N];
int main()
{IO;int T=1;//cin>>T;while(T--){cin>>n;for(int i=1;i<=n;i++) cin>>h[i];memset(f,0x3f,sizeof f);f[1]=0;for(int i=1;i<=n;i++){int maxh=0,minh=0x3f3f3f3f;for(int j=i-1;j;j--){if(minh>max(h[i],h[j])||maxh<min(h[i],h[j]))f[i]=min(f[i],f[j]+1);minh=min(minh,h[j]);maxh=max(maxh,h[j]);}}cout<<f[n]<<endl;}return 0;
}

尝试采用单调栈维护一个单调序列不妨先考虑一种情况即max(hi+1,…,hj−1)<min(hi,hj)max(h_{i+1},…,h_{j−1})<min(h_i,h_j)max(hi+1​,…,hj−1​)<min(hi​,hj​),维护严格单调上升的序列,对于第iii个山峰考虑合法转移:对于单调栈中的元素如果第一个大于hih_ihi​中的下标是pospospos那么f[pos−1]…f[tt]f[pos-1]\dots f[tt]f[pos−1]…f[tt]都可以更新f[i]f[i]f[i],在维护有序栈的同时更新不断更新答案即可

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
const int N=300010;
int h[N],n;
int q1[N],tt1;
int q2[N],tt2;
int f[N];
int main()
{IO;int T=1;//cin>>T;while(T--){cin>>n;for(int i=1;i<=n;i++) cin>>h[i];q1[++tt1]=1,q2[++tt2]=1;for(int i=2;i<=n;i++){f[i]=f[i-1]+1;while(tt1&&h[q1[tt1]]>h[i])f[i]=min(f[q1[tt1--]]+1,f[i]);if(tt1) f[i]=min(f[q1[tt1]]+1,f[i]);while(tt1&&h[q1[tt1]]==h[i]) tt1--;q1[++tt1]=i;while(tt2&&h[q2[tt2]]<h[i])f[i]=min(f[q2[tt2--]]+1,f[i]);if(tt2) f[i]=min(f[q2[tt2]]+1,f[i]);while(tt2&&h[q2[tt2]]==h[i]) tt2--;q2[++tt2]=i;}cout<<f[n]<<'\n';}return 0;
}

要加油哦~

Codeforces Round #669 (Div. 2)相关推荐

  1. Codeforces Round #669 (Div. 2)B. Big Vova

    #include<cstring> #include<iostream> #include<algorithm> using namespace std; cons ...

  2. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

  3. Codeforces Round #563 (Div. 2)/CF1174

    Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...

  4. 构造 Codeforces Round #302 (Div. 2) B Sea and Islands

    题目传送门 1 /* 2 题意:在n^n的海洋里是否有k块陆地 3 构造算法:按奇偶性来判断,k小于等于所有点数的一半,交叉输出L/S 4 输出完k个L后,之后全部输出S:) 5 5 10 的例子可以 ...

  5. Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解 比赛链接:h ...

  6. Codeforces Round #712 Div.2(A ~ F) 超高质量题解(每日训练 Day.15 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #712 Div.2(A ~ F) 题解 比赛链接:https:// ...

  7. Codeforces Round #701 (Div. 2) A ~ F ,6题全,超高质量良心题解【每日亿题】2021/2/13

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Add and Divide B - Replace and Keep Sorted C ...

  8. Codeforces Round #700 (Div. 2) D2 Painting the Array II(最通俗易懂的贪心策略讲解)看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 整场比赛的A ~ E 6题全,全部题目超高质量题解链接: Codeforces Round #700 ...

  9. Codeforces Round #699 (Div. 2) F - AB Tree(贪心、树上DP)超级清晰,良心题解,看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) F - AB Tree Problem ...

最新文章

  1. 免费学习AI公开课:打卡、冲击排行榜,还有福利领取
  2. 声音大小与振幅的关系_原来声音的属性有这三种!
  3. @Query注解的用法(Spring Data JPA)
  4. 打包成单独的HTML文件,【WEBPACK】分离css单独打包
  5. 【微信小程序企业级开发教程】订阅消息功能
  6. JSBinding+SharpKit / 菜单介绍
  7. 全球及中国软磁镍合金行业供需前景与投资策略研究报告2022版
  8. BugkuCTF-Misc:多种方法解决
  9. Struts1 生成Action请求的几种方式分析
  10. JAMA:Java矩阵包
  11. Android自定义控件之TextView
  12. VirtualBox安装的Mac虚拟机,安装增强功能失败,应该是版本太新
  13. pc端微信二维码支付流程及问题排查
  14. linux手动rpm升级glibc,升级glibc库到glibc-2.14.1
  15. 黑马程序员_常见的几个运行时异常
  16. lora网关以太网传输
  17. 从iRedMail 创建web服务学习Nginx
  18. 微信 语音转文字 java,微信语音转文字怎么操作?手把手教你,一秒钟搞定!
  19. 对称矩阵标准化以后不是对称矩阵的原因和解决办法
  20. 设计模式03 - 装饰者模式

热门文章

  1. java对象实例_深入理解Java对象实例生成的例子!(转)
  2. python获取系统时间函数_简单记录python的时间函数操作
  3. ccs加载out文件_类加载流程、类加载机制及自定义类加载器详解
  4. linux退出lftp命令,lftp命令使用
  5. java 配置参数_给你的JAVA程序配置参数(Properties的使用)
  6. JS中this的应用场景,再了解下apply、call和bind!
  7. [mybatis]动态sql_内置参数_parameter_databaseid
  8. Subset POJ - 3977(折半枚举+二分+二进制枚举)
  9. 分析linux相关日志文件,Linux日志系统与分析.pdf
  10. 反转字符串中的单词 III leetcode