Solution Set -「ARC 116」(in progress)
「ARC 116A」Odd vs Even
Link.
看 \(n\) 有多少 \(2\) 因子。
// Problem: A - Odd vs Even
// Contest: AtCoder - AtCoder Regular Contest 116
// URL: https://atcoder.jp/contests/arc116/tasks/arc116_a
// Memory Limit: 1024 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int make_two(LL n){int res=0; while((n&1ll)^1ll) ++res,n>>=1; return res;}
int main()
{
int T; scanf("%d",&T);
while(T--)
{
LL n;
scanf("%lld",&n);
int one=make_two(n);
if(one==1) puts("Same");
else if(one>1) puts("Even");
else puts("Odd");
}
return 0;
}
「ARC 116B」Products of Min-Max
Link.
感觉这题很平庸很 B 题啊,不知道为什么那么多人说难……
首先排序,于是即算
\]
也就是
\]
又
\]
于是直接 \(\mathcal{O}(n)\) 算即可。智慧官方 editorial 指着这个式子说 \(\mathcal{O}(n\log_{2}n)\) 不知道在干嘛。所以爆了个没什么用的标。
// Problem: B - Products of Min-Max
// Contest: AtCoder - AtCoder Regular Contest 116
// URL: https://atcoder.jp/contests/arc116/tasks/arc116_b
// Memory Limit: 1024 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MOD=998244353;
int n,a[200010],ans,sum;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;++i) scanf("%d",&a[i]);
sort(a+1,a+n+1);
for(int i=1;i<=n;++i)
{
ans=(ans+LL(sum)*a[i]%MOD+LL(a[i])*a[i]%MOD)%MOD;
sum=((LL(sum)<<1)%MOD+a[i])%MOD;
}
printf("%d\n",ans);
return 0;
}
「ARC 116C」Multiple Sequences
Link.
我们只考虑每个序列的末尾,即 \(A_{n}=1,\cdots,m\) 的情况。我们先来想暴力。
对于每一个 \(A_{n}\) 的取值,记为 \(d\),对 \(d\) 分解质因数,\(d=\prod_{i=1}^{k}p_{i}^{c_{i}}\)。
然后对于这个 \(d\),其可以构成的序列数即 \(\prod_{i=1}^{k}\binom{n+c_{i}-1}{c_{i}}\)。
考虑非暴力,就把素数筛出来就行了。
// Problem: C - Multiple Sequences
// Contest: AtCoder - AtCoder Regular Contest 116
// URL: https://atcoder.jp/contests/arc116/tasks/arc116_c
// Memory Limit: 1024 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MOD=998244353;
vector<int> makePrime(int n)
{
vector<int> prime,tag(n+1);
tag[1]=1;
for(int i=2;i<=n;++i)
{
if(!tag[i]) prime.push_back(i);
for(int j=0;j<int(prime.size()) && i*prime[j]<=n;++j)
{
tag[i*prime[j]]=1;
if(i%prime[j]==0) break;
}
}
return prime;
}
int n,m,ans;
vector<int> fac,ifac;
void exGCD(int one,int ano,int &x,int &y)
{
if(ano==0) x=1,y=0;
else exGCD(ano,one%ano,y,x),y-=(one/ano)*x;
}
int getInv(int val){int res,w; exGCD(val,MOD,res,w); return (res+MOD)%MOD;}
int C(int n,int k){return n<k?0:LL(fac[n])*ifac[k]%MOD*ifac[n-k]%MOD;}
int main()
{
scanf("%d %d",&n,&m);
vector<int> prime=makePrime(200100);
fac.push_back(1);
for(int i=1;i<=200100;++i) fac.push_back(LL(fac.back())*i%MOD);
for(int i=0;i<=200100;++i) ifac.push_back(getInv(fac[i]));
for(int i=1;i<=m;++i)
{
int curm=i,tmp=1;
for(int j=0;j<int(prime.size()) && prime[j]<=curm;++j)
{
if(curm%prime[j]==0)
{
int ups=0;
while(curm%prime[j]==0) curm/=prime[j],++ups;
tmp=LL(tmp)*C(n+ups-1,ups)%MOD;
}
}
ans=(ans+tmp)%MOD;
}
printf("%d\n",ans);
return 0;
}
「ARC 116D」I Wanna Win The Game
Link.
这题的 DP 感觉略有点难往这方面想。
考虑这题的限制最强的是 \(\texttt{XOR}\) 和为 \(0\) 以及和恰为 \(m\)。可以大概猜测此题与 \(n\) 关系不大。
那么我们可以考虑从最低位开始做这个题。
设 \(f_{i}\) 为构造出来序列的和为 \(i\) 且 \(\texttt{XOR}\) 和为 \(0\) 的数量。
Oops, something went wrong.
「ARC 116E」Spread of Information
Link.
Oops, something went wrong.
「ARC 116F」Deque Game
Link.
Oops, something went wrong.
Solution Set -「ARC 116」(in progress)的更多相关文章
- Solution Set -「ARC 107」
「ARC 107A」Simple Math Link. 答案为: \[\frac{a(a+1)\cdot b(b+1)\cdot c(c+1)}{8} \] 「ARC 107B」Quadrup ...
- 「ARC 139F」Many Xor Optimization Problems【线性做法,踩标】
「ARC 139F」Many Xor Optimization Problems 对于一个长为 \(n\) 的序列 \(a\),我们记 \(f(a)\) 表示从 \(a\) 中选取若干数,可以得到的最 ...
- Solution -「ARC 104E」Random LIS
\(\mathcal{Description}\) Link. 给定整数序列 \(\{a_n\}\),对于整数序列 \(\{b_n\}\),\(b_i\) 在 \([1,a_i]\) 中等概率 ...
- Solution -「ARC 104C」Fair Elevator
\(\mathcal{Description}\) Link. 数轴从 \(1\sim 2n\) 的整点上有 \(n\) 个闭区间.你只知道每个区间的部分信息(可能不知道左或右端点,或者都不知 ...
- Linux 小知识翻译 - 「架构 续」(arch)
上次,从「计算机的内部构造」的角度解释了架构这个术语.这次,介绍下架构中经常提到的「i386架构」及之后的「i486」,「i586」. 安装Linux的时候,很多人即使不了解但也会经常听到i386架构 ...
- Diary / Solution Set -「WC 2022」线上冬眠做噩梦
大概只有比较有意思又不过分超出能力范围的题叭. 可是兔子的"能力范围" \(=\varnothing\) qwq. 「CF 1267G」Game Relics 任意一个 ...
- Linux 小知识翻译 - 「动态DNS」(DDNS)
这次聊聊「动态DNS」. DNS上周已经介绍过了,就是提供主机名和IP地址对应关系的结构.「动态DNS」是对主机名和IP地址的对应关系提供动态管理的结构. 以前的DNS没有考虑IP地址变化的情况.但是 ...
- 「csp-s模拟测试(9.18)」Set·Read·Race
昨天考试考得有点迷??? 一看内存限制,T1 64MB T2 16MB 当场懵比......... T1 set 考场打的背包问题和随机化,其实能randA掉,但不小心数组开小了????(长记性!!! ...
- Solution -「ARC 101D」「AT4353」Robots and Exits
\(\mathcal{Description}\) Link. 有 \(n\) 个小球,坐标为 \(x_{1..n}\):还有 \(m\) 个洞,坐标为 \(y_{1..m}\),保证上述坐标 ...
- Solution -「ARC 110D」Binomial Coefficient is Fun
\(\mathcal{Description}\) Link. 给定非负整数序列 \(\{a_n\}\),设 \(\{b_n\}\) 是一个非负整数序列且 \(\sum_{i=1}^nb_i\ ...
随机推荐
- 在 Linux 上给用户赋予指定目录的读写权限
在 Linux 上指定目录的读写权限赋予用户,有两种方法可以实现这个目标:第一种是使用 ACL (访问控制列表),第二种是创建用户组来管理文件权限,下面会一一介绍.为了完成这个教程,我们将使用以下设置 ...
- App性能测试之iTest
本文主要介绍下App性能测试工具iTest_V4.7的使用. 功能简介 1.监控Andorid系统(支持手机,平板,电视,车机等智能终端设备)以及应用app的cpu.内存.流量.电池.帧率.页面耗时等 ...
- Apikit 自学日记:如何安装 Apikit
肯定会有和我一样的小白,第一次听说 Apikit这个工具,那么我今天和大家一起学习下这个工具如何安装. Apikit 有三种客户端,你可以依据自己的情况选择.三种客户端的数据是共用的,因此你可以随时切 ...
- .NET指定图片地址下载并转换Base64字符串
需求描述 需要调用第三方图片上传接口上传图片,对方图片格式只能接收Base64字符串.所以我们需要将系统服务器的图片通过Url下载下来,然后转换成Base64字符串.接下来我们将使用HttpClien ...
- NSDI-2023 微软论文:解构有状态网络功能
本文通过chatgpt代理站(支持gpt4):gptschools.cn翻译整理 微软Azure对每个虚拟机进行了为期三个月的网络监控,获得了新建.并发.PPS等指标情况,发现: 1) 网络功能负载不 ...
- 磐舟磐基平台:基于KubeEdge的落地实践
摘要:实现统一管理.简化多集群的运维系统.减少运营成本:同时也成功将前面提到的500台鲲鹏服务器以及它上面的BC Linux for Euler集群纳入磐基PaaS平台的大家庭之中,运维效率大幅增加. ...
- Jupyter Notebook运行中内核挂掉
Jupyter Notebook运行中内核挂掉了 有人说可能是版本冲突,由于我的都是最新版本,因此更新版本并未解决该问题. 最后发现有人通过这行代码解决了 import os os.environ[& ...
- Vue基础技术之——数据绑定
Vue数据大致绑定分为两类: 1.单向数据绑定(v-bind): 数据只能从data流向页面. 2.双向数据绑定(v-model):数据不仅能从data流向页面,还能从页面流向data. 话不多说,先 ...
- 初识常量变量、字符串、ASCII编码表、转义字符表
一.常量.变量 1.枚举常量(enum) 枚举常量不能更改,枚举常量所创造出的变量可以更改 正确 错误 2.常变量 3.#define定义的标示变量 二.数组 "abc"--'a' ...
- 现代C++(Modern C++)基本用法实践:五、智能指针
概述 c++效率较高的一个原因是我们可以自己定制策略手动申请和释放内存,当然,也伴随着开发效率降低和内存泄漏的风险.为了减少手动管理内存带来的困扰,c++提出了智能指针,可以帮助我们进行内存管理,有三 ...