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 ...
随机推荐
- 你能说说Java中Comparable和Comparator的区别吗
之前面试中被问到这个问题,当时不屑(会)回答,下来特意查了查,整理如下. Java 中为我们提供了两种比较机制:Comparable 和 Comparator,二者都是用来实现对象的比较.排序. 下面 ...
- PHP中跳出循环break,continue,return,exit的区别
1. return 语句的作用 (1) return 从当前的方法中退出,返回到该调用的方法的语句处,继续执行. (2) return 返回一个值给调用该方法的语句,返回值的数 ...
- 使用JSP脚本在页面输出九九乘法表
<% int i,j; for(i=1;i<10;i++) { for(j=1;j<=i;j++) { out.println(i+"*"+j+"=&q ...
- Java编程思想——第14章 类型信息(二)反射
六.反射:运行时的类信息 我们已经知道了,在编译时,编译器必须知道所有要通过RTTI来处理的类.而反射提供了一种机制——用来检查可用的方法,并返回方法名.区别就在于RTTI是处理已知类的,而反射用于处 ...
- 关于 “'sqlite3' 不是内部或外部命令.....”问题
学习django 按书上的 执行 manage.py dbshell 时, 报“'sqlite3' 不是内部或外部命令,也不是可运行的程序 或批处理文件.” 也就是指,环境变量中没有“sqlite3 ...
- SQLite性能 - 它不是内存数据库,不要对IN-MEMORY望文生意。
SQLite创建的数据库有一种模式IN-MEMORY,但是它并不表示SQLite就成了一个内存数据库.IN-MEMORY模式可以简单地理解为,本来创建的数据库文件是基于磁盘的,现在整个文件使用内存空间 ...
- (四十)golang--单元测试
传统的测试: package main import ( "fmt" ) func addUpper(n int) int { res := ; i <= n; i++ { ...
- NN入门,手把手教你用Numpy手撕NN(三)
NN入门,手把手教你用Numpy手撕NN(3) 这是一篇包含极少数学的CNN入门文章 上篇文章中简单介绍了NN的反向传播,并利用反向传播实现了一个简单的NN,在这篇文章中将介绍一下CNN. CNN C ...
- odoo12 修行基础篇之 添加字段 (一)
本人刚刚接触odoo12,大概有2个多月的时间,这两天有点时间,就集中写下博客. 本来是打算整理成笔记,想到这段时间的开发经历,着实感觉网上有关odoo的资料太少,学习资料也不多,既然与odoo有缘, ...
- 2019-9-9:渗透测试,docker下载dvwa,使用报错型sql注入dvwa
docker下载dvwa镜像,报错型注入dvwa,low级 一,安装并配置docker 1,更新源,apt-get update && apt-get upgrade &&am ...