Codeforces Round #669 (Div. 2)A-C题解
A. Ahahahahahahahaha
题目:http://codeforces.com/contest/1407/problem/A
题解:最多进行n/2的操作次数,我们统计这n个数中1的个数,是否过半,如果没有代表0过半,因此输出剩余的0的个数即可
如果1的个数过半,则考虑1的个数是奇数还是偶数,若为奇数,则再减去一个输出;若为偶数个,则直接输出。
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll; int main()
{
int t,n,i,j;
cin>>t;
while(t--)
{
cin>>n;
int num=;
for(i=;i<=n;i++)
{
int x;
cin>>x;
if(x==)
num++;
}
if(num<=n/)
{
cout<<n/<<endl;
for(int j=;j<=n/;j++)
cout<<""<<" ";
cout<<endl;
}
else
{
if(num%==)
{
cout<<num<<endl;
for(int j=;j<=num;j++)
cout<<""<<" ";
cout<<endl;
}
else
{
cout<<num-<<endl;
for(int j=;j<=num-;j++)
cout<<""<<" ";
cout<<endl;
}
}
}
return ;
}
B. Big Vova
题目:http://codeforces.com/contest/1407/problem/B
题解:首先挑选出最大的作为第一个,将其与第一个数互换位置,然后开始从第二位一直到第n位,遍历求出当前最大的gcd,并记录相应的下标,然后和第二到第n位交换位置,最多执行n-1次。
最后输出数组即可。
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll; int t,n,a[];
int gcd(int a,int b)
{
return b==?a:gcd(b,a%b);
} int main()
{
int i,j,maxn;
cin>>t;
while(t--)
{
cin>>n;
int f;
int maxn=-;
for(i=;i<n;i++)
{
cin>>a[i];
if(a[i]>maxn)
{
maxn=a[i];
f=i;
}
}
swap(a[f],a[]);
int cnt=;
while(cnt<n)
{
int maxgcd=-;
int p;
for(i=cnt;i<n;i++)
{
if(gcd(maxn,a[i])>maxgcd)
{
maxgcd=gcd(maxn,a[i]);
p=i;
}
}
swap(a[cnt],a[p]);
maxn=maxgcd;
cnt++;
}
for(i=;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
return ;
}
C. Chocolate Bunny
题目:http://codeforces.com/contest/1407/problem/C
题解:这是一道交互题,以前没碰到过,也好理解。
可以询问 2×n2×n 次,每次给出两个不同的索引 i 和 j,会返回 ai%aj的值。
询问i和j,假设ai>aj,那结果为ai%aj=x<aj
再询问j和i,结果为aj%ai=y=aj
因此aj=y;并将y这个值用map标记,mp[y]=1
反之,若ai<aj,询问i和j,结果为ai%aj=x=ai
再询问j和i,结果为aj%ai=y<ai
因此ai=x,并将x用map标记,mp[x]=1;
最后遍历完整个数组后,还剩下一个,遍历数组找到mp还未标记的那个数,即为最终的a[f]的值
最后输出数组即可。
代码:
#include<bits/stdc++.h>
using namespace std; const int N=;
int x,y,n;
int a[N];
map<int,int>mp;
int main()
{
int i,j;
cin>>n;
int f=;
for(i=;i<=n;i++)
{
cout<<"? "<<f<<" "<<i<<endl;
cin>>x;
cout<<"? "<<i<<" "<<f<<endl;
cin>>y;
if(x>y)
{
a[f]=x;
mp[x]=;
f=i;
}
else
{
a[i]=y;
mp[y]=;
}
}
for(i=;i<=n;i++)
{
if(mp[i]==)
continue;
a[f]=i;
break;
}
cout<<"!";
for(i=;i<=n;i++)
cout<<" "<<a[i];
return ;
}
Codeforces Round #669 (Div. 2)A-C题解的更多相关文章
- Codeforces Round #612 (Div. 2) 前四题题解
这场比赛的出题人挺有意思,全部magic成了青色. 还有题目中的图片特别有趣. 晚上没打,开virtual contest打的,就会前三道,我太菜了. 最后看着题解补了第四道. 比赛传送门 A. An ...
- Codeforces Round #198 (Div. 2)A,B题解
Codeforces Round #198 (Div. 2) 昨天看到奋斗群的群赛,好奇的去做了一下, 大概花了3个小时Ak,我大概可以退役了吧 那下面来稍微总结一下 A. The Wall Iahu ...
- Codeforces Round #672 (Div. 2) A - C1题解
[Codeforces Round #672 (Div. 2) A - C1 ] 题目链接# A. Cubes Sorting 思路: " If Wheatley needs more th ...
- Codeforces Round #669 (Div. 2) C. Chocolate Bunny 题解(交互)
题目链接 题目大意 有一个长度为n的全排列,你可以询问2n次,要你经过这个2n次的询问后,求出这个全排列 询问定义为:输入"? i j"输出\(p_{i} mod p_{j}\) ...
- Codeforces Round #614 (Div. 2) A-E简要题解
链接:https://codeforces.com/contest/1293 A. ConneR and the A.R.C. Markland-N 题意:略 思路:上下枚举1000次扫一遍,比较一下 ...
- Codeforces Round #610 (Div. 2) A-E简要题解
contest链接: https://codeforces.com/contest/1282 A. Temporarily unavailable 题意: 给一个区间L,R通有网络,有个点x,在x+r ...
- Codeforces Round #611 (Div. 3) A-F简要题解
contest链接:https://codeforces.com/contest/1283 A. Minutes Before the New Year 题意:给一个当前时间,输出离第二天差多少分钟 ...
- Codeforces Round #499 (Div. 2) D. Rocket题解
题目: http://codeforces.com/contest/1011/problem/D This is an interactive problem. Natasha is going to ...
- Codeforces Round #499 (Div. 2) C Fly题解
题目 http://codeforces.com/contest/1011/problem/C Natasha is going to fly on a rocket to Mars and retu ...
随机推荐
- Spring学习之——手写Spring源码V2.0(实现IOC、D、MVC、AOP)
前言 在上一篇<Spring学习之——手写Spring源码(V1.0)>中,我实现了一个Mini版本的Spring框架,在这几天,博主又看了不少关于Spring源码解析的视频,受益匪浅,也 ...
- Spring Boot 项目几种启动方式
Spring Boot 项目几种启动方式 1. 使用 main 启动 jar xxxx.jar 2. 使用 mvn 启动 mvn spring-boot:run 3. 使用 Spring Boot c ...
- 来自灵魂的拷问——知道什么是SQL执行计划吗?
面试官说:工作这么久了,应该知道sql执行计划吧,讲讲Sql的执行计划吧! 看了看面试官手臂上纹的大花臂和一串看不懂的韩文,吞了吞口水,暗示自己镇定点,整理了一下思绪缓缓的对面试官说:我不会 面试官: ...
- C#LeetCode刷题-二分查找
二分查找篇 # 题名 刷题 通过率 难度 4 两个排序数组的中位数 C#LeetCode刷题之#4-两个排序数组的中位数(Median of Two Sorted Arrays)-该题未达最优解 30 ...
- asp.netcore 3.1 program、Startup 类详解
Program类 public class Program { /// <summary> /// 应用程序入口 /// 1.asp.netcore 本质上是控制台程序 /// </ ...
- Js~对键值对操作
键值对主要是面向对象语言里的字典,或者叫哈希表,它通过键(key)可以直接访问到值(value),所以它查找的时间复杂度是O(1),即一次查找即可找到目标:在.net里有Dictionary,而在ja ...
- JavaScript在HTML中的基础用法总结
网页主要由三部分组成,分别为html.CSS和Javascript.如果说HTML是肉身,CSS是皮相,那Javascript就是灵魂.因此,三者的联系与融合则至关重要.本文就来为大家讲解一下Java ...
- unity探索者之protobuf的序列化和反序列化导致unity崩溃的问题研究
版权声明:本文为原创文章,转载请声明http://www.cnblogs.com/unityExplorer/p/7574569.html 这两天博主在接微信支付SDK的时候碰到一个非常恶心又诡异的问 ...
- leetcode刷题记录——哈希表
1.两数之和 可以先对数组进行排序,然后使用双指针方法或者二分查找方法.这样做的时间复杂度为 O(NlogN),空间复杂度为 O(1). 用 HashMap 存储数组元素和索引的映射,在访问到 num ...
- 为什么LinkedList不建议使用for循环遍历,而使用iterator方式进行遍历,但ArrayList建议使用for循环进行遍历呢?
如果使用for循环方式遍历链表,由于链表中元素是通过指针连接彼此的,不存在索引的概念,如果使用for循环方式遍历LinkedList,依次传入索引值,则就相当于每次都要将链表撸一遍. 如:在下面的这个 ...