1001.AND Minimum Spanning Tree

传送门:HDU6614

题意:给你一个又n个点的完全图,点编号从1~n,每条边的权值为被连接的两点编号按位与后的值。现在要你找到最小生成树,输出这个最小生成树的值 和 从2~n每个点相连的点(要求字典序最小)。

题解:因为是进行二进制操作,我们把数写成二进制形式可以发现,对于一个数x我们找到其从最低位开始第一个0位i,&上只有这一位是1其他位为0的数时与的结果为0。显然,只有n为2的次方-1时最小生成树的值为1,其他情况下每个点都能找到按位与后结果为0的点相连。

代码:

#include <cstdio>
using namespace std;
int a[]={};
int main() {
int T,n;
for (int i = ; i < ; i++)
a[i] = a[i-]*;
for (scanf("%d",&T);T--;) {
scanf("%d",&n);
int fg = ;
for (int i = ; i < ; i++)
if (n+ == a[i]) {
fg = ;
break;
}
printf("%d\n", fg);
for (int i = ; i <= n; i++) {
int x = i,cnt = ;
while(x) {
if (x% == ) break;
x>>=;
cnt<<=;
}
printf("%d%c",cnt>n?:cnt,i==n?'\n':' ');
}
}
return ;
}

1003.Divide the Stones

传送门:HDU6616

题意:有n个石子,编号和重量都是1~n,现在要把这n个石子分成k组,要求每组数量和总重量相同,判断是否能分成k组,可以的话输出每组有哪些石子。

题解:待补

代码:

1007.Just an Old Puzzle

传送门:HDU6620

题意:给你一个4*4的矩阵,问你120步内是否能复原。

题解:奇数码可达性问题。我们判断将空格移到最后之后前15个数逆序对个数是否为偶数个即可。

代码:

#include <cstdio>
using namespace std;
const int N = + ;
int a[][],b[N];
int main() {
int T,n;
for (scanf("%d",&T);T--;) {
int k=,x=;
for (int i = ; i <= ; i++)
for (int j = ; j <= ; j++)
scanf("%d",&a[i][j]);
for (int i = ; i <= ; i++) {
for (int j = ; j <= ; j++) {
if (i+j!=&&!a[i][j]) {
for (int yy = j; yy < ; yy++)
a[i][yy] = a[i][yy+];
for (int xx = i; xx < ; xx++)
a[xx][] = a[xx+][];
}
b[++k] = a[i][j];
}
}
for(int i=;i<;i++)
for(int j=;j<i;j++)
if(b[i]<b[j]) x++;
if (x%==) printf("Yes\n");
else printf("No\n");
}
return ;
}

1008.K-th Closest Distance

传送门:HDU6621

题意:你有一个长度为n的数组,有q次查询,每次询问[l,r]区间中p到ai第k大的距离是多少。

题解:区间第k大,第一反应是主席树。我们可以二分距离mid,当(p-mid,p+mid)中元素个数有k个时,mid为答案。注意边界。

代码:

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 1e5 + ;
const int M = 1e6;
struct node{
int l,r,val;
}T[N*];
int a[N],root[N],cnt;
void update(int l,int r,int &x,int y,int pos) {
T[++cnt] = T[y],T[cnt].val++,x = cnt;
if (l == r) return;
int mid = (l+r)>>;
if (mid >= pos) update(l,mid,T[x].l,T[y].l,pos);
else update(mid+,r,T[x].r,T[y].r,pos);
}
int query(int l,int r,int x,int y,int pl,int pr) {
if (pl <= l && pr >= r) return T[y].val - T[x].val;
int mid = (l+r)>>;
int ans = ;
if (pl <= mid) ans += query(l,mid,T[x].l,T[y].l,pl,pr);
if (pr > mid) ans += query(mid+,r,T[x].r,T[y].r,pl,pr);
return ans;
}
int main() {
int t,n,m;
for (scanf("%d",&t);t--;) {
scanf("%d%d",&n,&m);
cnt = ;
T[].l = ;
T[].r = ;
T[].val = ;
for (int i = ; i <= n; i++) {
scanf("%d",&a[i]);
update(,M,root[i],root[i-],a[i]);
}
int X = ;
while(m--) {
int l,r,p,k,L=,R=M;
scanf("%d%d%d%d",&l,&r,&p,&k);
l^=X,r^=X,p^=X,k^=X;
while(L<=R) {
int mid = (L+R) >> ;
if (query(,M,root[l-],root[r],max(,p-mid),min(M,p+mid))>=k){
X = mid;
R = mid - ;
}else L = mid + ;
}
printf("%d\n", X);
}
}
return ;
}

1010.Minimal Power of Prime

传送门:HDU6623

题意:给你一个大于一的正整数n,它可以写成不同质因子的幂的乘积的形式,现在问这些质因子的幂中,最小的幂是多少。

题解:先暴力打出一万以内的素数,算出这些素数中最小的幂是多少,如果得到最小的幂为1或者n为1了则表示找出了最小幂,否则的话分类讨论。因为我们打了一万以内的素数,那么剩下的数最大也只能是一个素数的4次方,我们依次判断是否为某个数的4次方,3次方,2次方,都不是的话n应该是个素数答案为1 。(看到有人说先判断4次方再判断2次方然后判断3次方,好像顺序关系不大~

代码:

#include <cstdio>
#include <cmath>
#include <algorithm>
#define ll long long
using namespace std;
const int N = 1e4 + ;
const int INF = 0x3f3f3f3f;
int prime[N];
bool vis[N];
int main(){
int cnt = ,T;
for (int i = ; i < N; i++) {
if (!vis[i]) prime[cnt++] = i;
for (int j = ; i * j < N; j++)
vis[i*j] = ;
}
for (scanf("%d",&T);T--;) {
ll n;
scanf("%lld",&n);
int ans = INF;
for (int i = ; i < cnt; i++) {
if(n%prime[i] == ) {
int num = ;
while(n%prime[i]==) {
num++;
n/=prime[i];
}
ans = min(ans,num);
if (ans == ) break;
}
}
if (ans == || n == ) {
printf("%d\n", ans);
continue;
}
ll x = pow(n,0.25);
if (pow(x,) == n)
ans = min(ans,);
else if (pow(x+,) == n) ans = min(ans,);
else {
x = pow(n,1.0/3.0);
if (pow(x,) == n) ans = min(ans,);
else if (pow(x+,) == n) ans = min(ans,);
else {
x = pow(n,0.5);
if (pow(x,) == n) ans = min(ans,);
else if (pow(x+,) == n) ans = min(ans,);
else ans = min(ans,);
}
}
printf("%d\n", ans);
}
return ;
}

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

  1. HDU 全国多校第四场 题解

    题解 A AND Minimum Spanning Tree 参考代码: #include<bits/stdc++.h> #define maxl 200010 using namespa ...

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

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

  3. 2019HDU多校第四场 K-th Closest Distance ——主席树&&二分

    题意 给定 $n$ 个数,接下来有 $q$ 次询问,每个询问的 $l, r, p, k$ 要异或上一次的答案,才是真正的值(也就是强制在线).每次询问,输出 $[l, r]$ 内第 $k$ 小的 $| ...

  4. 2019HDU多校第四场 Just an Old Puzzle ——八数码有解条件

    理论基础 轮换与对换 概念:把 $S$ 中的元素 $i_1$ 变成 $i_2$,$i_2$ 变成 $i_3$ ... $i_k$ 又变成 $i_1$,并使 $S$ 中的其余元素保持不变的置换称为循环, ...

  5. HDU 多校第四场题解

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

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

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

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

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

  8. 2019牛客多校第四场B xor(线性基求交)题解

    题意: 传送门 给\(n\)个集合,每个集合有一些数.给出\(m\)个询问,再给出\(l\)和\(r\)和一个数\(v\),问你任意的\(i \in[l,r]\)的集合,能不能找出子集异或为\(v\) ...

  9. 2016多校第六场题解(hdu5793&hdu5794&hdu5795&hdu5800&hdu5802)

    这场就做出一道题,怎么会有窝这么辣鸡的人呢? 1001 A Boring Question(hdu 5793) 很复杂的公式,打表找的规律,最后是m^0+m^1+...+m^n,题解直接是(m^(n+ ...

随机推荐

  1. background背景色

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 2019-8-15-win10-edge-打开闪退问题

    title author date CreateTime categories win10 edge 打开闪退问题 lindexi 2019-08-15 08:53:22 +0800 2019-8-1 ...

  3. Java语言中的正则表达式

    正则表达式是什么? 正则表达式是一种强大而灵活的文本处理工具.初学正则表达式时,其语法是一个难点,但它确实是一种简洁.动态的语言.正则表达式提供了一种完全通用的方式,能够解决各种字符串处理相关的问题: ...

  4. 高并发WEB服务的演变

    一.越来越多的并发连接数 现在的Web系统面对的并发连接数在近几年呈现指数增长,高并发成为了一种常态,给Web系统带来不小的挑战.以最简单粗暴的方式解决,就是增加 Web系统的机器和升级硬件配置.虽然 ...

  5. vue-learning:1 - 为什么选择vue

    为什么选择Vue 通过一个对比,展示vue框架的优势: 需求:根据请求后端接口返回的数据列表,渲染在页面中. 传统上我们使用jQuery的Ajax发送http请求,获取数据.判断列表数据是否存在,如果 ...

  6. 纯CSS绘制的图形一览

    整理网上一些使用纯CSS绘制的图形示例~~纯属抄袭,哈哈...仅仅是为了自己以后查看! Square(正方形) #square { width: 100px; height: 100px; backg ...

  7. 乐视X3-40S智能电视的简化系统刷机

    步骤 USB2.0-U盘一个. 先把letv原厂包里的.bin文件放入U盘刷入电视 (U盘插在电视上方的USB2.0插口处,在电视待机状态下用遥控器依次按下[3].[6].[9].[5].[开机]键, ...

  8. DP刷题记录(持续更新)

    DP刷题记录 (本文例题目前大多数都选自算法竞赛进阶指南) TYVJ1071 求两个序列的最长公共上升子序列 设\(f_{i,j}\)表示a中的\(1-i\)与b中色\(1-j\)匹配时所能构成的以\ ...

  9. 托管exe文件的加载和执行

    托管exe文件被启动的时候,首先被PE Loader载入.PE Loader载入exe文件之后,会分析PE文件头的data directory table,如果CLR_Header内的值不为0,表示该 ...

  10. C#使用SmtpClient发送邮件解决授权码配置问题

    授权码,(新版邮箱在开启smtp权限设置时,会生成授权码)如果不做配置,客户端是不能发送邮件的 //指定邮箱账号和密码,需要注意的是,这个密码是你在QQ邮箱设置里开启服务的时候给你的那个授权码 Smt ...