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 ...
随机推荐
- 一次有关 DNS 解析导致 APP 慢的问题探究
目录 一.业务背景 二. 问题 三.问题排查 3.1.问题一: 基于DNS 延迟的解析 3.2.问题二:HTTPDNS侧 HTTPDNS基础理论 相关问题 四.优化方向 4.1.域名解析配置 4.2. ...
- windows服务启动时提示找不到指定路径的问题
我是自己写了一个windows服务,并且在之前一直运行良好,上周四晚上之后,竟然莫名其妙的停止了,我登上远程服务器,才发现,该服务已经停止,当我手动打开该服务时,提示我如下错误,找不到指定路径:. 一 ...
- Python爬虫(二):写一个爬取壁纸网站图片的爬虫(图片下载,词频统计,思路)
好家伙,写爬虫 代码: import requests import re import os from collections import Counter import xlwt # 创建Ex ...
- 全球开源 AI 游戏开发挑战赛,只等你来!
我们在之前的文章中 预告过 (*划重点,IP 属地法国):7 月初,我们将举办一次与 AI 游戏相关的黑客松活动,这是有史以来的首次开源游戏开发挑战赛,借助人工智能工具释放你的创造力,一起打破游戏开发 ...
- Java有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
代码如下: public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out. ...
- 这问题巧了,SpringMVC 不同参数处理机制引发的思考
这个问题非常有趣,不是SpringMVC 的问题,是实际开发中混合使用了两种请求方式暴露出来的. 问题场景 功能模块中,提供两个 Http 服务.一个是列表查询(application/json 请求 ...
- typescript的必要性及使用
1 前言 作为一个前端语言,Javascript从最初只是用来写页面,到如今的移动终端.后端服务.神经网络等等,它变得几乎无处不在.如此广阔的应用领域,对语言的安全性.健壮性以及可维护性都有了更高的要 ...
- 4.3 x64dbg 搜索内存可利用指令
发现漏洞的第一步则是需要寻找到可利用的反汇编指令片段,在某些时候远程缓冲区溢出需要通过类似于jmp esp等特定的反汇编指令实现跳转功能,并以此来执行布置好的ShellCode恶意代码片段,LyScr ...
- Pyinstaller打包 Pytest+Allure成exe文件执行时,报错ERROR: usage: apitest.exe [options] [file_or_dir] [file_or_dir] [...] xxx.exe: error: unrecognized arguments: --alluredir=.\\report\\xml --clean-alluredir
网上找了很多案例啊 都没解决问题,由本人的多次试验 终于成功解决 1.打包运行 pyinstaller -D xxx.py 打包成功后 执行exe报错 如下 2.此情况是说明 命令无法正确识 ...
- .net core提示502.5错误
最近给WindowsServer2012服务器部署.Net Core项目,部署后一直显示502.5错误,具体如下: 网上找了一大堆解决办法都行不通,最后在stackoverflow中找到说是缺少一个补 ...