Codeforces Round #669 (Div. 2)
那天晚上和同学打球打的有点晚,结果就鸽了,现在来补一下
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、j
和j、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)相关推荐
- Codeforces Round #669 (Div. 2)B. Big Vova
#include<cstring> #include<iostream> #include<algorithm> using namespace std; cons ...
- Codeforces Round #506 (Div. 3)
Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...
- 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 ...
- 构造 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 的例子可以 ...
- Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解(每日训练 Day.16 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解 比赛链接:h ...
- Codeforces Round #712 Div.2(A ~ F) 超高质量题解(每日训练 Day.15 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #712 Div.2(A ~ F) 题解 比赛链接:https:// ...
- Codeforces Round #701 (Div. 2) A ~ F ,6题全,超高质量良心题解【每日亿题】2021/2/13
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Add and Divide B - Replace and Keep Sorted C ...
- Codeforces Round #700 (Div. 2) D2 Painting the Array II(最通俗易懂的贪心策略讲解)看不懂来打我 ~
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 整场比赛的A ~ E 6题全,全部题目超高质量题解链接: Codeforces Round #700 ...
- Codeforces Round #699 (Div. 2) F - AB Tree(贪心、树上DP)超级清晰,良心题解,看不懂来打我 ~
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) F - AB Tree Problem ...
最新文章
- 免费学习AI公开课:打卡、冲击排行榜,还有福利领取
- 声音大小与振幅的关系_原来声音的属性有这三种!
- @Query注解的用法(Spring Data JPA)
- 打包成单独的HTML文件,【WEBPACK】分离css单独打包
- 【微信小程序企业级开发教程】订阅消息功能
- JSBinding+SharpKit / 菜单介绍
- 全球及中国软磁镍合金行业供需前景与投资策略研究报告2022版
- BugkuCTF-Misc:多种方法解决
- Struts1 生成Action请求的几种方式分析
- JAMA:Java矩阵包
- Android自定义控件之TextView
- VirtualBox安装的Mac虚拟机,安装增强功能失败,应该是版本太新
- pc端微信二维码支付流程及问题排查
- linux手动rpm升级glibc,升级glibc库到glibc-2.14.1
- 黑马程序员_常见的几个运行时异常
- lora网关以太网传输
- 从iRedMail 创建web服务学习Nginx
- 微信 语音转文字 java,微信语音转文字怎么操作?手把手教你,一秒钟搞定!
- 对称矩阵标准化以后不是对称矩阵的原因和解决办法
- 设计模式03 - 装饰者模式
热门文章
- java对象实例_深入理解Java对象实例生成的例子!(转)
- python获取系统时间函数_简单记录python的时间函数操作
- ccs加载out文件_类加载流程、类加载机制及自定义类加载器详解
- linux退出lftp命令,lftp命令使用
- java 配置参数_给你的JAVA程序配置参数(Properties的使用)
- JS中this的应用场景,再了解下apply、call和bind!
- [mybatis]动态sql_内置参数_parameter_databaseid
- Subset POJ - 3977(折半枚举+二分+二进制枚举)
- 分析linux相关日志文件,Linux日志系统与分析.pdf
- 反转字符串中的单词 III leetcode