A. Be Positive

题意:给出一个数组 每个树去除以d(d!=0)使得数组中大于0的数 大于ceil(n/2) 求任意d

思路:数据小 直接暴力就完事了

 #include<bits/stdc++.h>
using namespace std;
const int maxn=;
double a[maxn];
int main(){
int n;
scanf("%d",&n);
for(int i=;i<n;i++){
scanf("%lf",&a[i]);
}
int temp=ceil(n*1.0/);
for(int i=-1e3;i<=1e3;i++){
if(i==)continue;
int flag=;
for(int j=;j<n;j++){
if(a[j]/i>){
flag++; }
}
if(flag>=temp){
printf("%d\n",i);
return ;
}
}
printf("0\n");
return ;
}

B. Two Cakes

题意:给出一个1-n的数组 每个数字都出现两编  两个人 每个人从1--n开始按大小选择数字(代价为数组上走多远距离)  每个数字只能选择一次  问最少要走多久

思路:把每个数的位置记一下 然后直接算上一个位置到下一个位置的最小和是多少 例如 要算2 的 直接算2个1分别到两个2的两种情况即可,因为这是无后效性的

枚举到哪个数字 当前时刻两个人肯定在上一个位置 例如要到n时两个人肯定在n-1出发

 #include<bits/stdc++.h>
using namespace std;
const int maxn=;
double a[maxn];
int main(){
int n;
scanf("%d",&n);
for(int i=;i<n;i++){
scanf("%lf",&a[i]);
}
int temp=ceil(n*1.0/);
for(int i=-1e3;i<=1e3;i++){
if(i==)continue;
int flag=;
for(int j=;j<n;j++){
if(a[j]/i>){
flag++; }
}
if(flag>=temp){
printf("%d\n",i);
return ;
}
}
printf("0\n");
return ;
}

C. Connect

题意:给出一张图 可以在不同连通快之间做通道 但是会消耗 算术距离的代价 问最小代价是多少

思路: 图很小 只有50*50 所以直接把起点和终点的连通的快的坐标记下来 然后暴力求最小代价即可

 #include<bits/stdc++.h>
using namespace std;
const int maxn=;
int n;
char mp[maxn][maxn];
int vis[maxn][maxn];
struct Node{
int x,y;
}s1[maxn*maxn],s2[maxn*maxn];
int dy[]={
,-,,
};
int dx[]={
,,-,
};
void dfs(int x,int y,int num){
vis[x][y]=num;
for(int i=;i<;i++){
int tx=x+dx[i],ty=y+dy[i];
if(tx<||tx>n||ty<||ty>n)continue;
if(vis[tx][ty]!=||mp[tx][ty]=='')continue;
dfs(tx,ty,num);
}
} int dist(int x1,int y1,int x2,int y2){
return (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
}
int main(){ scanf("%d",&n);
int sx,sy,tx,ty;
scanf("%d%d%d%d",&sx,&sy,&tx,&ty);
for(int i=;i<=n;i++){
scanf("%s",mp[i]+);
} int temp=;
memset(vis,,sizeof(vis));
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
if(vis[i][j]==&&mp[i][j]==''){dfs(i,j,temp);temp++;}
}
}
if(vis[sx][sy]==vis[tx][ty]){
printf("0\n");
return ;
}
int num1=,num2=;
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
if(vis[i][j]==vis[sx][sy]){
s1[num1].x=i,s1[num1++].y=j;
}
if(vis[i][j]==vis[tx][ty]){
s2[num2].x=i,s2[num2++].y=j;
}
}
}
int ans=maxn*maxn*;
for(int i=;i<num1;i++){
for(int j=;j<num2;j++)
{
ans=min(ans,dist(s1[i].x,s1[i].y,s2[j].x,s2[j].y));
}
}
cout<<ans<<endl;
return ;
}

D2. Toy Train

题意:一个1-n的圈 火车在这个圈上顺时针旋转 每个点有 任务:把该点的糖果送到 另外一个点去    在一个点上只能往上装一个糖果,但是可以卸下任意个

问从每个点出发 所需要的最短时间    直接把每个点从1号出发所需要的最长时间预处理一下 然后从1号点枚举 这样每个点的时间就是 最长时间减去  枚举到的起点和1之间的距离

思路: 对于一个点x假设有k个任务  那么 当前点最少需要走 完整圈(k-1)圈 然后走剩下的那个点

time=  (k-1) *n +  dist(start,x) +dist(x,最后一个要送的点)

所以起点选择和x点相同 最后一个点在顺时针方向上离x点最近 可以得到最小时间

暴力每个点即可

 #include<bits/stdc++.h>
using namespace std;
const int maxn=+;
int len[maxn],b[maxn],ans[maxn];
vector<int>a[maxn];
multiset<int>s;
int main(){
int n,m;
scanf("%d%d",&n,&m);
int x,y;
for(int i=;i<m;i++){
scanf("%d%d",&x,&y);
if(x>y)y+=n;
a[x].push_back(y);
}
for(int i=;i<=n;i++){
if(a[i].size()==)len[i]=;
else {
sort(a[i].begin(),a[i].end());
len[i]=a[i][]+(a[i].size()-)*n;
}
s.insert(len[i]);
}
for(int i=;i<=n;i++){
ans[i]=*(--s.end())-i;
if(len[i]!=){
s.erase(s.find(len[i]));
s.insert(len[i]+n);
}
}
for(int i=;i<=n;i++)printf("%d ",ans[i]); return ;
}

Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2)的更多相关文章

  1. Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2) 题解

    Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2) 题目链接:https://codeforces.com/contest/1130 ...

  2. Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 1) C(二分+KMP)

    http://codeforces.com/contest/1129/problem/C #include<bits/stdc++.h> #define fi first #define ...

  3. Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2) A - D2

    A. Be Positive 链接:http://codeforces.com/contest/1130/problem/A 题意: 给一段序列,这段序列每个数都除一个d(−1e3≤d≤1e3)除完后 ...

  4. Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 1)C. Morse Code

    题意:给你n个01字符,每次问你前缀的所有本质不同的子串,由摩斯密码组成的方案数和. 题解:离线处理,把字符建sam,通过topo序来dp计算每个节点表示的子串方案数的和.统计答案时,把n个字符挨个匹 ...

  5. Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 1)

    A - Toy Train 很显然,一个站有多少个糖,那么就要从这个点运多少次.设第i个点有\(a_i\)个糖,那么就要转\(a_i-1\)圈,然后再走一段.很显然最后一段越小越好. 然后枚举起点后, ...

  6. Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 1) 题解

    A. Toy Train 时间限制:2 seconds 内存限制:256 megabytes 题意 有编号111~n(n≤5000)n(n\le 5000)n(n≤5000)的车站顺时针呈环排列,有m ...

  7. Codeforces Round 542 (Div. 2)

    layout: post title: Codeforces Round 542 (Div. 2) author: "luowentaoaa" catalog: true tags ...

  8. Codeforces Round #542 题解

    Codeforces Round #542 abstract I决策中的独立性, II联通块染色板子 IIIVoronoi diagram O(N^2 logN) VI环上距离分类讨论加取模,最值中的 ...

  9. int和integer;Math.round(11.5)和Math.round(-11.5)

    int是java提供的8种原始数据类型之一.Java为每个原始类型提供了封装类,Integer是java为int提供的封装类.int的默认值为0,而Integer的默认值为null,即Integer可 ...

随机推荐

  1. Win10操作系统下Oracle VM VirtualBox6.0加载磁盘提示“发现无效设置”的解决方法(包括“不能桥接网卡”问题的解决方法)

    自从电脑换成Win10操作系统后,想借助VMBox处理一些事情,但是遇到了不能桥接网卡的问题,还以为是程序坏了,于是卸载重新安装,但是不行.接着又尝试在虚拟机里重新安装操作系统,还是不行. 然后百度了 ...

  2. Mac 系统占用100g的解决办法

    Mac 关于本机-磁盘管理,如果发现系统占用超过80g以上的小伙伴们可以做以下操作只需要以下4个步骤,轻松降到30g以内!!!!!!!(仅适用于安装了Xcode的小伙伴) 打开Finder,comma ...

  3. 小程序实践(十一):showModal的使用

    显示模态对话框,确定和取消两个选择+标题+内容的对话框 . // 编辑用户性别 tapSex:function(res){ var that = this wx.showModal({ title: ...

  4. Java 8 的Lambda表达式

    第一次看到用lambda表达式写出来的Java代码时,我对这种神秘的语法感到非常不理解,认为这样的Java搞得不可读.没有专门的去学习和认识,今天花了几个小时写了示例的练习后,我开心的看到了更清晰的J ...

  5. Linux 环境 Java JDK 安装&基本配置

    索引: 目录索引 参看代码 GitHub: jdk.txt 一.Linux (DeepinOS) 环境 1.官网下载 jdk-8u112-linux-x64.tar.gz 2.创建目录 mkdir - ...

  6. ASP.NET中弹出消息框的几种常见方法

    在ASP.NET网站开发中,经常需要使用到alert消息框,尤其是在提交网页的时候,往往需要在服务器端对数据进行检验,并给出提示或警告. 这里,仅介绍几种不同的实现方法. 1.众所周知的方法是采用如下 ...

  7. 如何让EasyUI的Tree或者ComboTree节点不显示图标?

    版本:jQuery EasyUI 1.3.2 通过测试,只需把节点的state属性设置为null即可使EasyUI的Tree或者ComboTree控件的节点不显示图标.

  8. 文件操作命令(rename)

    Rename 命令: // 描述: 重命名文件或目录. // 语法: rename [<Drive>:][<Path>]<FileName1> <FileNa ...

  9. 浪潮服务器I4008/NX5480M4介绍

    浪潮I4008 / NX5480M4是一款高密度模块化服务器. I4008是机箱,NX5480M4是节点. 8个计算节点模块可以部署在标准机架4U高度机器里,具有高性能.低功耗.易维护.组管理功能.适 ...

  10. MongoDB在Linux系统下的安装与启动

    Mongodb介绍 MongoDB是一个开源文档数据库,提供高性能,高可用性和自动扩展,官方文档:https://docs.mongodb.com/manual/introduction/ Mongo ...