题解


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. html5自动横屏的方法

    html5自动横屏的方法<pre>var evt = "onorientationchange" in window ? "orientationchange ...

  2. linux-mysql8的安装步骤详解及需要注意的坑

    (本文由言念小文原创,转载请注明出处) 前言 最近安装mysql8时,遇到了一些问题,记录下来作为以后操作指导资料. Linux上mysql安装方法个人目前使用的有两种: 一种是基于rpm安装: 另一 ...

  3. java property 配置文件管理工具框架,避免写入 property 乱序

    property property 是 java 实现的 property 框架. 特点 优雅地进行属性文件的读取和更新 写入属性文件后属性不乱序 灵活定义编码信息 使用 OO 的方式操作 prope ...

  4. 100天搞定机器学习|Day56 随机森林工作原理及调参实战(信用卡欺诈预测)

    本文是对100天搞定机器学习|Day33-34 随机森林的补充 前文对随机森林的概念.工作原理.使用方法做了简单介绍,并提供了分类和回归的实例. 本期我们重点讲一下: 1.集成学习.Bagging和随 ...

  5. linux网络测试命令

    一.ping 它通过向目标主机发送一个个数据包以及接受数据包的回应来判断主机和目标主机之间网络连接情况.ping的两个功能:判断网络是否可达.网络性能统计. ping使用的是网络层的ICMP协议. p ...

  6. mysql 导出 导入

    一.导出 windows下 切换到mysql安装目录bin目录下 导出 数据库lz_garden 下的 所有表结构 到d盘并命名为lz_garden.sql: D:\dev\MySQL\MySQL S ...

  7. Redux中间件Redux-thunk的配置

    当做固定写法吧 截图里少一个括号,已代码为主 import {createStore,applyMiddleware,compose} from 'redux' import thunk from ' ...

  8. Google Chrome浏览器的编码格式的修改步骤

    Chrome  Charset插件 大二萌新正在学JavaEE,当学到TomCat时,用到浏览器,但是呢,出现了中文乱码的情况,而又用的是Google,可烦恼了,由于Google Chrome的更新, ...

  9. dom4j的测试例子和源码详解(重点对比和DOM、SAX的区别)

    目录 简介 DOM.SAX.JAXP和DOM4J xerces解释器 SAX DOM JAXP DOM解析器 获取SAX解析器 DOM4j 项目环境 工程环境 创建项目 引入依赖 使用例子--生成xm ...

  10. Spring中常见的设计模式——原型模式

    1.原型模式应用场景 当遇到大量耗费劳动力的 get,set赋值场景时,如下: public class SetGetParam { public void setParam(UserDto user ...