比赛传送门:Contest Problem List (hdu.edu.cn)

1006)GCD Game

题目翻译:爱丽丝和鲍勃正在玩游戏。 他们轮流操作。有n个数字,a1,a2,...,an。每次,玩家分 3 步进行游戏。 1.任意选择一个数字ai。                                                                                    2.任意选择另一个数x(1≤x<ai)。                                                                                                    3. 用 gcd(ai,x) 替换数字 ai。

这里,gcd(u,v) 指的是 u 和 v 的最大公约数。 当玩家不能移动时,他/她就输掉了游戏。爱丽丝先走,她让你告诉她,如果两个玩家都有最佳策略,谁将赢得比赛。

样例:

2
1
1
1
2

输出:

Bob
Alice

题目分析:每次的操作都分为三步,要将其转化为自己的一个因数,那么对于某一个数字而言,它最多可操作的次数就取决于自己有多少个质因数(质数为1,合数不等比如4,可以变为2,再把2变为1,可操作两次,8可操作三次,其他同理)。因此,我们可以联想的典型的NIM函数,每个数字都可以看成一堆石子,质因数的个数可以看成是石子的数量。

解题思路:首先对数据范围之内的数字进行预处理,求出所有的数的质因数的个数,直接一个一个分解会T,这里我们采用欧拉筛(在筛的过程当中记录质因数个数),预处理完毕之后,直接采用NIM函数的结论:当a1^a2^a3^.....^an≠0的时候先手必胜,否则后手必胜。

代码如下:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e7+10;int n,m,a,cnt;
int num[N];//存每个数字的质因数个数
int prime[N];//记录素数
bool f[N];//判断过程当中的标记数组//经典欧拉筛 稍微改动
void find_prime(int n){for(int i=2;i<=n;i++){if(!f[i])prime[+cnt]=i,num[i]=1;//质数的质因数为1for(int j=1;j<=cnt&&i*prime[i]<=n;j++){f[i*prime[j]]=true;num[i*prime[j]]=num[i]+1;//记录质因子的个数if(i%prime[i]==0)break; } }
} int main(){find_prime((int)1e7);//预处理 int t;cin>>t;while(t--){cin>>n;cin>>a;int ans=num[a];//第一个数单独输入//nim结论 for(int i=2;i<=n;i++){cin>>a;ans^=num[a];}if(ans)cout<<"Alice"<<endl;else cout<<"Bob"<<endl;}return 0;
} 

1003)Ink on paper

题目翻译:鲍勃不小心把几滴墨水洒在了纸上。第 i 滴墨水的初始位置是 (xi,yi),每秒向外扩展 0.5 厘米,显示一个圆圈。 好奇的鲍勃想知道所有墨水连接起来需要多长时间。为了方便输出,请输出时间的平方。

样例输入:

2
3
0 0
1 1
0 1
5
1 1
4 5
1 4
2 6
3 10

输出:

1
17

分析:任意两滴墨水都会同时扩散,我们要找所有的墨水连成一整块所花费的时间,可以将每滴墨水看成一个点,之间的距离看做边权,那么我们要求的便是把所有的点形成联通块所需的时间,其中因为所有的点是同时开始扩散的,所以,最长的时间取决于所有联通过程当中花费时间最大的两个点。转化为了最小生成树问题,直接套板子(prim算法)即可。

代码:

#include <bits/stdc++.h>
using namespace std;//  t组数据 n个点  记录坐标  最远距离
//将该点加入集合的距离  标记数组   两点之间多条路径去取更短
long long t,n,x[5005],y[5005],ans,dis[5005],vis[5005],mind;//两点之间的距离
long long distance(int i,int j){return (x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]);
} int main(){scanf("%lld",&t);while(t--){scanf("%dll",&n);for(int i=1;i<=n;i++)scanf("%lld %lld",&x[i],&y[i]);ans=0;memset(dis,0x7f,sizeof(dis));//初始化memset(vis,0,sizeof(vis));int u;dis[1]=0;//将1作为起点开始//经典板子for(int i=1;i<=n;i++){mind=0x7fffff;for(int j=1;j<=n;j++)//没有访问过 且距离更小  选择该点 if(!vis[j]&&dis[j]<mind)mind=dis[j],u=j;vis[u]=1;//标记已经访问 ans=max(ans,dis[u]);//更新最大值//优化通过这个点可以使得路径更短的点 for(int j=1;j<=n;j++)if(!vis[j])dis[j]=min(dis[j],distance(i,j)); }printf("%lld\n",ans);        }return 0;
}

参考:杭电第八场 题解_Frank_Star的博客-CSDN博客

有什么问题还请大家指出  ^--^

2021杭电多校第八场补题相关推荐

  1. 2022 年杭电多校第八场补题记录

    A Theramore 题意:给定一个长度为 nnn 的 010101 串,每次可以选取一个奇数长度的连续子串进行位置上的翻转,问经过若干次操作能得到的字典序最小的串.n≤5×105n \leq 5\ ...

  2. 2021牛客多校第八场补题 D-OR

    链接:https://ac.nowcoder.com/acm/contest/11259/D 来源:牛客网 题目描述 There are two sequences of length n−1n-1n ...

  3. 2022杭电多校第八场题解

    2022杭电多校第八场 Theramore(思维) 题意 给定一个01字符串,每次可以将一个奇数长度的区间翻转,求操作后字典序最小的字符串. 分析 翻转奇数长度的区间,元素位置的奇偶性不变,统计奇数位 ...

  4. 思维 ---- 两两匹配问题 2021杭电多校第6场 E - Median

    题目链接 这种两两匹配问题很常见,打比赛的时候想了好久才想起来!,就要特判那个最大的集合,跟其他集合的关系 #include <bits/stdc++.h> #define mid ((l ...

  5. 2021杭电多校第3场_HDU6975_Forgiving Matching

    Forgiving Matching 今天刚拜(强)托(迫)队友把FFT原理还有FFT匹配字符串问题给我讲通了. 晚点把这题补完!!

  6. 2022杭电多校第八场

    文章目录 1001.Theramore 1007.Darnassus 1008.Orgrimmar 1011.Stormwind 1001.Theramore 易知,字符串的奇偶项之间不会互换,只需要 ...

  7. hdu 6656 2019杭电多校第7场 期望题

    设f[i]为从i升级到i+1期望需要的金钱,由于每级都是能倒退或者升级到i+1,所以询问从l,r的期望金钱可以直接前缀和,那么推导每一级升级需要的期望钱也可以用前缀和推导 设sum[i]=f[1]+f ...

  8. 2019暑假杭电多校第6场签到题-1008-TDL

    题目传送门 思路: 估计出n的范围,暴力就完事. 异或就是不进位的加法 (f(n,m) - n)^n == k, f(n,m)-n==k^n; 因为灯饰右边估计不会超过1e3,所以k^n<=1e ...

  9. 2021牛客多校第五场补题

    B-Boxes 链接:https://ac.nowcoder.com/acm/contest/11256/B 来源:牛客网 题目描述 There're nn_{}n​ boxes in front o ...

最新文章

  1. 六、OpenStack配置计算结点
  2. 吴恩达:数据集的规模和学习机制都很重要!
  3. 基于微软企业库的AOP组件(含源码)
  4. 饥荒自建服务器崩了之后没有记录了,请问一下为什么服务器建一次之后就再也成功不了了。。...
  5. java websocket netty_基于netty实现的websocket
  6. maven原型_创建自定义Maven原型
  7. 中国移动游戏趋势洞察报告
  8. ssh (安全外壳协议)Secure Shell 百度百科
  9. UA PHYS515 电磁理论I 麦克斯韦方程组基础6 说明真空中电磁波传播速度等于光速
  10. 视频接口的种类及数据类型
  11. 如何引用维基百科Wikipedia
  12. Win10电脑需要安装杀毒软件吗?
  13. 土地日度交易数据2000-2022
  14. 腾云忆想技术干货|TSF微服务治理实战系列(三)——服务限流
  15. 【官方文档】Fluent Bit 安装在 Windows
  16. 【Latex】用Acrobat剪切pdf文件中图
  17. 2023 XL软件库App后端源码 可自定义易支付 完整版
  18. IOS 个人证书的申请
  19. 栈(stack)C语言实现(有详细注释讲解)
  20. Latex 命令速查

热门文章

  1. 第三方登陆实践之基于OAuth的FACEBOOK Web Login(最新版)
  2. 使用Xmanager 7连接centos7远程桌面
  3. debian之网易云音乐的安装
  4. 在Sublime Text 2中将默认语法设置为不同的文件类型
  5. 未来可能的安全焦点:GIS地理信息系统安全问题分析
  6. 万能手机usb内窥镜软件下载_万能证件生成器手机版-万能证件生成器手机版下载 v1.0 免费版...
  7. 【专利撰写】专利类型
  8. consume(consume名词)
  9. 掌握正确的指法---击键要领、雨儿五笔打字视频
  10. 一段用c#操作datatable的代码