Solution Set -「ARC 111」
「ARC 111A」Simple Math 2
Link.
\(\lfloor \frac{10^N - kM^2}{M} \rfloor \equiv \lfloor \frac{10^N}{M} - kM \rfloor \equiv \lfloor \frac{10^N}{M} \rfloor - kM \equiv \lfloor \frac{10^N}{M} \rfloor \pmod M (k \in \mathbb{Z})\)
#include <iostream>
using i64 = long long;
int cpow ( int bas, i64 idx, const int p ) {
int res = 1;
while ( idx ) {
if ( idx & 1 ) res = ( i64 )res * bas % p;
bas = ( i64 )bas * bas % p, idx >>= 1;
}
return res;
}
int main () {
std::ios::sync_with_stdio ( 0 ); std::cin.tie ( 0 ); std::cout.tie ( 0 );
i64 n; int m; std::cin >> n >> m;
std::cout << ( cpow ( 10, n, m * m ) / m ) % m << '\n';
return 0;
}
「ARC 111B」Reversible Cards
Link.
nowcoder 原题。
#include<cstdio>
int n,cab[400010],fa[400010],a,b,ans;
int findset(int x)
{
if(fa[x]) return fa[x]=findset(fa[x]);
else return x;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;++i)
{
scanf("%d%d",&a,&b);
a=findset(a);
b=findset(b);
if((a^b)&&(!cab[a]||!cab[b]))
{
fa[a]=b;
cab[b]|=cab[a];
ans++;
}
else if(!cab[a])
{
cab[a]=1;
ans++;
}
}
printf("%d\n",ans);
return 0;
}
「ARC 111C」Too Heavy
Link.
构造出一个操作序列。
先不考虑最小,只考虑构造出来。
参考某道 ABC D 题,直接连边。
\(i\rightarrow p_{i}\rightarrow p_{p_{i}}\rightarrow\cdots\rightarrow i\)。

\(1\ 2\) 分别表示 person、baggage。
再想,相当于我们想要让,\(1\) and \(2\) 一一对应。
一个 \((u,v)\) 的 \(2\)(即 \(v\))不能被交换只在 \(a_{u}\le b_{v}\)。
所以无解就是这个环中存在 \(a_{u}\le b_{v}\)。
剩下构造,先考虑满足规则。
贪心的选一个最大的 \(a_{i}\) 进行即可。
#include<queue>
#include<cstdio>
#include<algorithm>
using namespace std;
vector<pair<int,int> > ans;
int n,a[200010],b[200010],p[200010],rev[200010],vis[200010];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;++i) scanf("%d",&a[i]);
for(int i=1;i<=n;++i) scanf("%d",&b[i]);
for(int i=1;i<=n;++i)
{
scanf("%d",&p[i]);
rev[p[i]]=i;
}
vector<int> per;
for(int i=1;i<=n;++i)
{
if(p[i]^i)
{
if(a[rev[i]]<=b[i])
{
printf("-1\n");
return 0;
}
if(!vis[i])
{
vis[i]=1;
per.clear();
per.push_back(i);
for(int j=p[i];j^i;j=p[j])
{
if(a[rev[j]]<=b[j])
{
printf("-1\n");
return 0;
}
vis[j]=1;
per.push_back(j);
}
int pos=0,val=0;
for(int j=0;j<per.size();++j)
{
if(a[per[pos]]<=a[per[j]])
{
pos=j;
val=per[j];
}
}
for(int j=pos+1;j<per.size();++j) ans.push_back(make_pair(val,per[j]));
for(int j=0;j<pos;++j) ans.push_back(make_pair(val,per[j]));
}
}
}
printf("%d\n",ans.size());
for(int i=0;i<ans.size();++i) printf("%d %d\n",ans[i].first,ans[i].second);
return 0;
}
「ARC 111D」Orientation
Link.
像个贪心?
\(c_{u}\neq c_{v}\)
- \(c_{u}>c_{v}\):\(\rightarrow\)
- \(c_{u}<c_{v}\):\(\leftarrow\)
\(c_{u}=c_{v}\)
在一个环里,深搜即可。
这 C D 放反了吧
#include<queue>
#include<cstdio>
#include<string>
#include<algorithm>
using namespace std;
vector<pair<int,int> > e[110];
vector<string> ans;
int n,m,c[110],eve[110][110],vis[110];
void dfs(int x)
{
vis[x]=1;
for(int i=1;i<=n;++i)
{
if(eve[x][i])
{
eve[i][x]=0;
if(!vis[i]) dfs(i);
}
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=m;++i)
{
int u,v;
scanf("%d%d",&u,&v);
e[u].push_back(make_pair(v,i));
}
for(int i=1;i<=n;++i) scanf("%d",&c[i]);
ans.resize(m);
for(int i=1;i<=n;++i)
{
for(int j=0;j<e[i].size();++j)
{
int y=e[i][j].first,id=e[i][j].second-1;
if(c[i]>c[y]) ans[id]="->";
else if(c[i]<c[y]) ans[id]="<-";
else eve[i][y]=eve[y][i]=1;
}
}
for(int i=1;i<=n;++i)
{
for(int j=0;j<e[i].size();++j)
{
int y=e[i][j].first,id=e[i][j].second-1;
dfs(i);
if(eve[i][y]) ans[id]="->";
else if(eve[y][i]) ans[id]="<-";
}
}
for(int i=0;i<ans.size();++i) printf("%s\n",ans[i].c_str());
return 0;
}
「ARC 111E」Simple Math 3
Link.
即求:
\]
题目说这玩意儿是 finite,然后(没加思考)跑到 U 群问成功丢人。
悲伤的故事,这告诉我们问前先思考。
原因是 \(i\) 大了 \([A+B\times i,A+C\times i]\) 的长度一定 \(\ge D\)。
具体来说是 \(i>\frac{D-2}{C-B}\) 的时候就完了。
那么式子改写为:
\]
继续分析,此时的区间 \([A+B\times i,A+C\times i]\) 的长度小于 \(D\),里面最多有一个数是 \(D\) 的 multiple。
不会了 看题解 要类欧 不会了 抄板子 过题了
这种推不复杂考板的题好草人啊。。。。
upd:
official editorial 说可以用 AC lib 的 floor_sum 直接算。
屑行为 details。
#include<cstdio>
int T;
long long a,b,c,d;
long long dfs(long long a,long long b,long long c,long long n)
{
if(a>=c||b>=c) return dfs(a%c,b%c,c,n)+(a/c)*(n+1)*n/2+(b/c)*(n+1);
else if(a==0) return 0;
else return (a*n+b)/c*n-dfs(c,c-b-1,a,(a*n+b)/c-1);
}
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
printf("%lld\n",(d-2)/(c-b)-dfs(c,a,d,(d-2)/(c-b))+dfs(b,a-1,d,(d-2)/(c-b)));
}
return 0;
}
「ARC 111A」Simple Math 2
Link.
missing。
Solution Set -「ARC 111」的更多相关文章
- 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]\) 中等概率 ...
- Diary / Solution Set -「WC 2022」线上冬眠做噩梦
大概只有比较有意思又不过分超出能力范围的题叭. 可是兔子的"能力范围" \(=\varnothing\) qwq. 「CF 1267G」Game Relics 任意一个 ...
- 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\ ...
- Solution -「ARC 124E」Pass to Next
\(\mathcal{Description}\) Link. 有 \(n\) 个人站成一个环,初始时第 \(i\) 个人手里有 \(a_i\) 个球.第 \(i\) 个人可以将自己手中任意数 ...
- Solution -「ARC 126E」Infinite Operations
\(\mathcal{Description}\) Link. 给定序列 \(\{a_n\}\),定义一次操作为: 选择 \(a_i<a_j\),以及一个 \(x\in\mathbb R ...
- Solution -「ARC 126F」Affine Sort
\(\mathcal{Description}\) Link. 给定 \(\{x_n\}\),令 \[f(k)=\left|\{(a,b,c)\mid a,b\in[0,c),c\in[1,k ...
- Solution -「ARC 125F」Tree Degree Subset Sum
\(\mathcal{Description}\) Link. 给定含有 \(n\) 个结点的树,求非负整数对 \((x,y)\) 的数量,满足存在 \(\exist S\subseteq V ...
随机推荐
- UpSetR 高级参数使用教程
在<UpSetR:多数据集绘图可视化处理利器>中我们介绍了 UpSetR 的一些概念和绘图基础参数使用,今天我们来学习一下 UpSetR 的 queries 和 attribute.plo ...
- DOS系统中EXE程序加载过程
1.在内存区中寻找一段容量足够的空闲内存区. 2.这段内存区的前256字节中,创建一个称为程序段前缀(PSP)的数据区. 3.这段内存区256字节之后,将程序装入,程序的地址被设为SA+10H : 0 ...
- 2023-06-16:给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数。 我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」。 所谓「表现良好的时间
2023-06-16:给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数. 我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」. 所谓「表现良好的时间 ...
- Windows 10 开启子系统Ubuntu
卸载原有的wsl 分发子系统 # 查看已安装的wsl子系统 wsl --list # 依次删除wsl 子系统 wsl --unregister <子系统名称> 结果 安装子系统Ubuntu ...
- 这问题巧了,SpringMVC 不同参数处理机制引发的思考
这个问题非常有趣,不是SpringMVC 的问题,是实际开发中混合使用了两种请求方式暴露出来的. 问题场景 功能模块中,提供两个 Http 服务.一个是列表查询(application/json 请求 ...
- 可视化容器管理工具-portainer.io使用
续docker日常使用指南 背景 当我们开始使用docker后,我们的机器上镜像和容器会越来越多,或者有时候我们有多台开发机的时候,单纯使用命令行去管理镜像和容器就变得麻烦了,这时,我们就可以选择一些 ...
- 2020 OC项目集成flutter
看了网上基本上都是相同套路,但是到我这就不行了,终于解决了, 主要就是profile文件编写, 1.在oc项目的同级目录项创建flutter模块 就是在oc项目的父级目录下,执行 flutter cr ...
- 生成CSV文件的方法*(LIST集合为数据和生成的文件名)
/** * 生成csv文件 * @param pointsList 组织实体 * filename 生成的文件名 * list 要生成的数据 * @return */ public void Poin ...
- 大语言模型中一个调皮的EOS token
背景 最近需要做一个微调的培训,所以不可避免地需要上手一下相关的微调,而受限于机器资源,暂时没法做全参数微调,所以就尝试了目前比较火的两种高效微调方式,分别是PTuning和LoRA.模型选择得自然是 ...
- 关于 async 和 await 两个关键字(C#)【并发编程系列】
〇.前言 对于 async 和 await 两个关键字,对于一线开发人员再熟悉不过了,到处都是它们的身影. 从 C# 5.0 时代引入 async 和 await 关键字,我们使用 async 修饰符 ...