HDU 全国多校第四场 题解
题解
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 全国多校第四场 题解的更多相关文章
- HDU 多校第四场题解
对于 D 题的原题意,出题人和验题人赛前都没有发现标算存在的问题,导致了许多选手的疑惑和时间的浪费,在此表示真诚的歉意! 预计难度分布: Easy - DJKL, Medium - ABCEG, Ha ...
- 2019HDU多校第四场题解
1001.AND Minimum Spanning Tree 传送门:HDU6614 题意:给你一个又n个点的完全图,点编号从1~n,每条边的权值为被连接的两点编号按位与后的值.现在要你找到最小生成树 ...
- HDU 4635 多校第四场 1004 强联通
我还有什么好说,还有什么好说...... 我是SBSBSBSBSBSBSBSBSBSBSBSBBSBSBSBSBSBSBSBSBS........................ 题意 思路什么的都不 ...
- HDU暑假多校第四场J-Let Sudoku Rotate
一.题意 Sudoku is a logic-based, combinatorial number-placement puzzle, which is popular around the wor ...
- 2018 HDU多校第四场赛后补题
2018 HDU多校第四场赛后补题 自己学校出的毒瘤场..吃枣药丸 hdu中的题号是6332 - 6343. K. Expression in Memories 题意: 判断一个简化版的算术表达式是否 ...
- 牛客多校第四场sequence C (线段树+单调栈)
牛客多校第四场sequence C (线段树+单调栈) 传送门:https://ac.nowcoder.com/acm/contest/884/C 题意: 求一个$\max {1 \leq l \le ...
- HDU 5768Lucky7(多校第四场)容斥+中国剩余定理(扩展欧几里德求逆元的)+快速乘法
地址:http://acm.hdu.edu.cn/showproblem.php?pid=5768 Lucky7 Time Limit: 2000/1000 MS (Java/Others) M ...
- [2019HDU多校第四场][HDU 6617][D. Enveloping Convex]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6617 题目大意:给出一凸包\(P\),求最小的与\(P\)相似且对应边平行的多边形,使得题目给出的\( ...
- 【HDU】4092 Nice boat(多校第四场1006) ——线段树 懒惰标记
Nice boat Time Limit: 30000/15000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) To ...
随机推荐
- Master原理
1.主备切换机制原理剖析与源码分析 2.注册机制原理剖析与源码分析 3.状态改变处理机制源码分析 4.资源调度机制源码分析(schedule(),两种资源调度算法)(核心) 一.主备切换机制原理 1. ...
- java高级——反射
慕课网<反射——Java高级开发必须懂的>听课笔记 一.class类的使用 class ClassDemo { public static void main(String[] args) ...
- 【python测试开发栈】python基础语法大盘点
周边很多同学在用python,但是偶尔会发现有人对python的基础语法还不是特别了解,所以帮大家梳理了python的基础语法(文中的介绍以python3为例).如果你已然是python大牛,可以跳过 ...
- 页面加载和图片加载loading
准备放假了!也是闲着了 ,就来整理之前学到或用到的一下知识点和使用内容,这次记录的是关于加载的友好性loading!!!这里记录一下两种加载方法 1.页面加载的方法,它需要用到js里面两个方法 doc ...
- 【2018寒假集训Day 1】【位运算】生成字符串
生成字符串(strs) [问题描述] 假设字符串只由字符“0”,“1”,“”组成,其中字符“”表示该字符可由 字符“0”或“1”替代. 现有一些字符串,根据这些字符串生成所有可生成的字符串.如: {1 ...
- 宋宝华:关于ARM Linux原子操作的实现
本文系转载,著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者: 宋宝华 来源: 微信公众号linux阅码场(id: linuxdev) 竞态无所不在 首先我们要理解竞态(ra ...
- MySql分库分表与分区的区别和思考
一.分分合合 说过很多次,不要拘泥于某一个技术的一点,技术是相通的.重要的是编程思想,思想是最重要的.当数据量大的时候,需要具有分的思想去细化粒度.当数据量太碎片的时候,需要具有合的思想来粗化粒度. ...
- day 42 JavaScript 基础知识部分
一. JavaScript存放位置 <script type="text/javascript" src="JavaScript文件路径">< ...
- 用IDCNN和CRF做端到端的中文实体识别
实体识别和关系抽取是例如构建知识图谱等上层自然语言处理应用的基础.实体识别可以简单理解为一个序列标注问题:给定一个句子,为句子序列中的每一个字做标注.因为同是序列标注问题,除去实体识别之外,相同的技术 ...
- 解决WebUploader 上传按钮按F12 才行的问题
遇到了 WebUploader 插件的上传按钮点击无效(此时鼠标在按钮任何位置时,按钮都没变化).按F12 之后才有反应(此时鼠标在按钮任何位置时,按钮颜色都会变深) 的问题,网上查到一些答案,找到了 ...