题解


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. docker简介及安装

    Docker : 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...

  2. 使用Samba服务实现文件共享

    1.在虚拟机上安装Samba服务安装包 (在下载之前检查客户机与服务器是否能够ping通) (鼠标右击桌面,打开终端,测试和yum是否能够ping通,下面的命令行是我的yum的IP地址) [root@ ...

  3. Resources for embedded SQL engine

    1. Official Website for SQLite: http://www.sqlite.org/ 2. .Net Wrapper for SQLite (System.Data.SQLit ...

  4. 不止面试—jvm类加载面试题详解

    面试题 带着问题学习是最高效的,本次我们将尝试回答以下问题: 什么是类的加载? 哪些情况会触发类的加载? 讲一下JVM加载一个类的过程 什么时候会为变量分配内存? JVM的类加载机制是什么? 双亲委派 ...

  5. .NET Core3.0 EF 连接 MySql

    一:创建项目 添加 csproj (或者直接NuGet 引用) <ItemGroup> <PackageReference Include="Microsoft.Entit ...

  6. 用例图浅谈以及OOA再到情景分析的面向对象电梯的设计(慕课东北大学)面向对象设计思维模式

    上班初期还不太适应,平时学习进度也跟不上,节奏慢下来会有时间更新的了. Diagram  这边以学生课程报名系统为例    这就是一种简单的用例图 用例图可以给读者提供的信息非常丰富,但是缺点是都是概 ...

  7. 20191031-3 beta week 1/2 Scrum立会报告+燃尽图 01

    此作业要求参见[https://edu.cnblogs.com/campus/nenu/2019fall/homework/9911] 一.小组情况 队名:扛把子 组长:孙晓宇 组员:宋晓丽 梁梦瑶 ...

  8. 堆 堆排序 优先队列 图文详解(Golang实现)

    引入 在实际应用中,我们经常需要从一组对象中查找最大值或最小值.当然我们可以每次都先排序,然后再进行查找,但是这种做法效率很低.哪么有没有一种特殊的数据结构,可以高效率的实现我们的需求呢,答案就是堆( ...

  9. python3 之 内置函数enumerate

    python3 内置函数enumerate一.简介: 该函数在字面上是枚举.列举的意思,用于将一个可遍历的数据对象(如列表.元组或字符串)组合为一个索引序列, 同时列出数据和数据下标,一般用在 for ...

  10. 基于 HTML5 WebGL + VR 的 3D 机房数据中心可视化

    前言 在 3D 机房数据中心可视化应用中,随着视频监控联网系统的不断普及和发展, 网络摄像机更多的应用于监控系统中,尤其是高清时代的来临,更加快了网络摄像机的发展和应用. 在监控摄像机数量的不断庞大的 ...