题解


A AND Minimum Spanning Tree

参考代码:

#include<bits/stdc++.h>
#define maxl 200010
using namespace std; int n,ans1;
int mi[];
int ans[maxl]; inline void prework()
{
scanf("%d",&n);
} inline int find(int x)
{
for(int j=;j<=;j++)
if((x&mi[j])==)
return mi[j];
} inline void mainwork()
{
ans1=;int x;
for(int i=;i<=n;i++)
{
if(i&)
{
x=find(i);
if(x<=n)
ans[i]=x;
else
ans1++,ans[i]=;
}
else
ans[i]=;
}
} inline void print()
{
printf("%d\n",ans1);
for(int i=;i<=n;i++)
printf("%d%c",ans[i],(i==n)?'\n':' ');
} int main()
{
mi[]=;
for(int i=;i<=;i++)
mi[i]=mi[i-]*;
int t;
scanf("%d",&t);
for(int i=;i<=t;i++)
{
prework();
mainwork();
print();
}
return ;
}

B Colored Tree

unsolved.

C Divide the Stones

题解:https://blog.csdn.net/liufengwei1/article/details/97970041

 #include<bits/stdc++.h>
#define maxl 100010
using namespace std; long long k,n,sum,t;
long long dy[maxl];
long long last[maxl],to[maxl];
long long tmp[maxl];
bool flag;
vector <long long> ans[maxl]; inline void prework()
{
scanf("%lld%lld",&n,&k);
sum=1ll*n*(n+)/;
for(long long i=;i<=k;i++)
ans[i].clear();
} inline void mainwork()
{
flag=false;
if(sum%k!=)
return;
sum=sum/k;
long long id;
t=n/k;
if(t%==)
{
long long id=;
for(long long i=;i<=k;i++)
{
for(long long j=;j<=t/;j++)
{
ans[i].push_back(id);
ans[i].push_back(n-id+);
id++;
}
}
flag=true;
}
else
{
if(n/k==)
{
if(n==)
{
ans[].push_back();
flag=true;
}
return;
}
for(long long i=;i<=k/+;i++)
{
dy[i]=k/+i;
to[i]=(i-)*+;
}
for(long long i=k/+;i<=k;i++)
{
dy[i]=i-(k/)-;
to[i]=(i-(k/)-)*;
}
for(long long i=;i<=k;i++)
ans[i].push_back(i),last[i]=i,tmp[i]=i;
long long num;
for(long long i=;i<n/k;i++)
{
for(long long j=;j<=k;j++)
{
num=dy[last[j]]+(i-)*k;
ans[j].push_back(num);
last[j]=to[last[j]];
tmp[j]+=num;
}
}
for(long long i=;i<=k;i++)
ans[i].push_back(sum-tmp[i]);
flag=true;
}
} inline void print()
{
if(flag)
{
puts("yes");
long long l;
for(long long i=;i<=k;i++)
{
for(long long j=;j<n/k;j++)
printf("%lld%c",ans[i][j],(j==(n/k-))?'\n':' ');
}
}
else
puts("no");
} int main()
{
long long t;
scanf("%lld",&t);
for(long long i=;i<=t;i++)
{
prework();
mainwork();
print();
}
return ;
}

D Enveloping Convex

unsolved.

E Good Numbers

unsolved.

F Horse

unsolved.

G Just an Old Puzzle

题解:百度“15难题”

参考代码

#include<bits/stdc++.h>
using namespace std; int ans;
int a[];
int x[]; inline void prework()
{
for(int i=;i<=;i++)
{
scanf("%d",&a[i]);
if(a[i]==)
{
a[i]=;
ans=x[i];
}
}
} inline void mainwork()
{
for(int i=;i<=;i++)
{
for(int j=i+;j<=;j++)
if(a[j]<a[i])
ans++;
} } inline void print()
{
if(ans&)
puts("No");
else
puts("Yes");
} int main()
{
x[]=;x[]=;x[]=;x[]=;
x[]=;x[]=;x[]=;x[]=;
int t;
scanf("%d",&t);
for(int cas=;cas<=t;cas++)
{
prework();
mainwork();
print();
}
return ;
}

H K-th Closest Distance

题解:主席树+二分 https://blog.csdn.net/liufengwei1/article/details/97948584

参考代码

#include<bits/stdc++.h>
#define maxl 100010
using namespace std; const int nn=1e6; int n,m,tot,ans;
int rt[maxl],a[maxl];
struct node
{
int ls,rs,sum;
}tree[maxl**]; inline void insert(int num,int &x,int l,int r)
{
tree[++tot]=tree[x];x=tot;
++tree[x].sum;
if(l==r) return;
int mid=(l+r)>>;
if(num<=mid)
insert(num,tree[x].ls,l,mid);
else
insert(num,tree[x].rs,mid+,r);
} inline void prework()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
tree[].ls=tree[].rs=tree[].sum=;
rt[]=;
tot=;
for(int i=;i<=n;i++)
{
rt[i]=rt[i-];
insert(a[i],rt[i],,nn);
}
} inline int query(int i,int j,int l,int r,int i1,int j1)
{
if(i1==l && j1==r)
return tree[j].sum-tree[i].sum;
int mid=(i1+j1)>>,ret;
if(r<=mid)
ret=query(tree[i].ls,tree[j].ls,l,r,i1,mid);
else if(l>mid)
ret=query(tree[i].rs,tree[j].rs,l,r,mid+,j1);
else
{
ret=query(tree[i].ls,tree[j].ls,l,mid,i1,mid);
ret+=query(tree[i].rs,tree[j].rs,mid+,r,mid+,j1);
}
return ret;
} inline bool jug(int l,int r,int mid,int p,int k)
{
int up=min(p+mid,nn),lo=max(,p-mid);
int sum=query(rt[l-],rt[r],lo,up,,nn);
if(sum<k)
return false;
else
return true;
} inline void mainwork()
{
ans=;int up,lo,p,k,l,r,mid;
for(int i=;i<=m;i++)
{
scanf("%d%d%d%d",&lo,&up,&p,&k);
lo^=ans;up^=ans;p^=ans;k^=ans;
l=;r=nn;
while(l+<r)
{
mid=(l+r)>>;
if(!jug(lo,up,mid,p,k))// <k
l=mid;
else
r=mid;
}
if(jug(lo,up,l,p,k))
ans=l;
else
ans=l+;
printf("%d\n",ans);
}
} inline void print(){} int main()
{
int t;
scanf("%d",&t);
for(int i=;i<=t;i++)
{
prework();
mainwork();
print();
}
return ;
}

I Linear Functions

unsolved.

J Minimal Power of Prime

参考代码

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int size=1e6+;
double eps=1e-;
int p[size];bool prime[size];
int mpri[size];
int tot=;
void init()
{
for(int i=;i<size;i++) prime[i]=true;
for(int i=;i<size;i++)
{
if(prime[i])
{
p[++tot]=i;
mpri[i]=i;
}
for(int j=;j<=tot&&p[j]*i<size;j++)
{
prime[i*p[j]]=false;mpri[i*p[j]]=p[j];
if(i%p[j]==) break;
}
}
}
int main()
{
init();
int t;
long long x;
scanf("%d",&t);
while(t--)
{
scanf("%lld",&x);
int cnt=;
int ans=;
if(x<size){
int ps=mpri[x];
while(x!=)
{
do x/=ps,cnt++;
while(mpri[x]==ps);
ps=mpri[x];
ans=min(ans,cnt);
}
printf("%d\n",ans);
continue;
}
bool flag=false;
for(int i=;i<=tot;i++)
{
cnt=;
if(x%p[i]==)
{
do x/=p[i],cnt++;
while(x%p[i]==);
}
if(cnt==)
{
puts("");
flag=true;
break;
}
}
if(flag) continue;
LL sq=sqrt(x)+eps;
if(sq*sq==x)
{
printf("2\n");
}
else
{
puts("");
}
}
}

HDU 全国多校第四场 题解的更多相关文章

  1. HDU 多校第四场题解

    对于 D 题的原题意,出题人和验题人赛前都没有发现标算存在的问题,导致了许多选手的疑惑和时间的浪费,在此表示真诚的歉意! 预计难度分布: Easy - DJKL, Medium - ABCEG, Ha ...

  2. 2019HDU多校第四场题解

    1001.AND Minimum Spanning Tree 传送门:HDU6614 题意:给你一个又n个点的完全图,点编号从1~n,每条边的权值为被连接的两点编号按位与后的值.现在要你找到最小生成树 ...

  3. HDU 4635 多校第四场 1004 强联通

    我还有什么好说,还有什么好说...... 我是SBSBSBSBSBSBSBSBSBSBSBSBBSBSBSBSBSBSBSBSBS........................ 题意 思路什么的都不 ...

  4. HDU暑假多校第四场J-Let Sudoku Rotate

    一.题意 Sudoku is a logic-based, combinatorial number-placement puzzle, which is popular around the wor ...

  5. 2018 HDU多校第四场赛后补题

    2018 HDU多校第四场赛后补题 自己学校出的毒瘤场..吃枣药丸 hdu中的题号是6332 - 6343. K. Expression in Memories 题意: 判断一个简化版的算术表达式是否 ...

  6. 牛客多校第四场sequence C (线段树+单调栈)

    牛客多校第四场sequence C (线段树+单调栈) 传送门:https://ac.nowcoder.com/acm/contest/884/C 题意: 求一个$\max {1 \leq l \le ...

  7. HDU 5768Lucky7(多校第四场)容斥+中国剩余定理(扩展欧几里德求逆元的)+快速乘法

    地址:http://acm.hdu.edu.cn/showproblem.php?pid=5768 Lucky7 Time Limit: 2000/1000 MS (Java/Others)    M ...

  8. [2019HDU多校第四场][HDU 6617][D. Enveloping Convex]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6617 题目大意:给出一凸包\(P\),求最小的与\(P\)相似且对应边平行的多边形,使得题目给出的\( ...

  9. 【HDU】4092 Nice boat(多校第四场1006) ——线段树 懒惰标记

    Nice boat Time Limit: 30000/15000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) To ...

随机推荐

  1. php查询字符串的函数

    /* 查找一个字符串在另一个字符串的第一次出现,并返回其余部分(strstr别名) */ var_dump(strchr("hello world hello", "wo ...

  2. 领扣(LeetCode)单词模式 个人题解

    给定一种 pattern(模式) 和一个字符串 str ,判断 str 是否遵循相同的模式. 这里的遵循指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向 ...

  3. 图解Elasticsearch的核心概念

    本文讲解大纲,分8个核心概念讲解说明: NRT Cluster Node Document&Field Index Type Shard Replica Near Realtime(NRT)近 ...

  4. MySql 表索引设计原则

    索引的优点 1.加快数据的检索速度,这是创建索引的最主要的原因; 2.通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性; 3.加速表和表之间的连接; 4.在使用分组和排序子句进行数据检索时,可 ...

  5. day20191012笔记

    课程默写笔记: 1.程序架构 C/S 客户端/服务器端 B/S 浏览器/服务器端 2.Tomcat应用服务器 tomcat默认端口号是80:tomcat配置文件中通常端口的定义是8080: 3.使用开 ...

  6. .NET Core应用框架AA介绍(二)

    AA的开源地址 https://github.com/ChengLab/AAFrameWork AA框架是一个基础应用框架,是建立在众多大家熟知的流行工具之上并与之集成.比如:ASP.NET Core ...

  7. 大白话OSI七层协议

    目录 一.物理层 二.数据链路层 2.1 以太网协议 2.2 Mac地址 2.3 广播地址 三.网络层 3.1 IP协议详解 3.1.1 IP地址的两部分 3.2 子网掩码详解 3.3 IP数据包详解 ...

  8. Qt的安装

    由于之前用的vs2017是集成c++环境的,加之dev c++ 编码管理起来不是很方便,Mytc (win10不支持) ,所以转而向Qt 开发工具,以下是大概安装过程 下载地址 清华源:https:/ ...

  9. Spring之junit测试集成

    简介 Spring提供spring-test-5.2.1.RELEASE.jar 可以整合junit. 优势:可以简化测试代码(不需要手动创建上下文,即手动创建spring容器) 使用spring和j ...

  10. java基础(3)--详解String

    java基础(3)--详解String 其实与八大基本数据类型一样,String也是我们日常中使用非常频繁的对象,但知其然更要知其所以然,现在就去阅读源码深入了解一下String类对象,并解决一些我由 ...