「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.

即求:

\[\sum_{i=1}^{\infty}[\lfloor\frac{A+B\times i-1}{D}\rfloor=\lfloor\frac{A+C\times i}{D}\rfloor]
\]

题目说这玩意儿是 finite,然后(没加思考)跑到 U 群问成功丢人。

悲伤的故事,这告诉我们问前先思考。

原因是 \(i\) 大了 \([A+B\times i,A+C\times i]\) 的长度一定 \(\ge D\)。

具体来说是 \(i>\frac{D-2}{C-B}\) 的时候就完了。

那么式子改写为:

\[\sum_{i=1}^{\frac{D-2}{C-B}}[\lfloor\frac{A+B\times i-1}{D}\rfloor=\lfloor\frac{A+C\times i}{D}\rfloor]
\]

继续分析,此时的区间 \([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」的更多相关文章

  1. 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 ...

  2. 「ARC 139F」Many Xor Optimization Problems【线性做法,踩标】

    「ARC 139F」Many Xor Optimization Problems 对于一个长为 \(n\) 的序列 \(a\),我们记 \(f(a)\) 表示从 \(a\) 中选取若干数,可以得到的最 ...

  3. Solution -「ARC 104E」Random LIS

    \(\mathcal{Description}\)   Link.   给定整数序列 \(\{a_n\}\),对于整数序列 \(\{b_n\}\),\(b_i\) 在 \([1,a_i]\) 中等概率 ...

  4. Diary / Solution Set -「WC 2022」线上冬眠做噩梦

      大概只有比较有意思又不过分超出能力范围的题叭.   可是兔子的"能力范围" \(=\varnothing\) qwq. 「CF 1267G」Game Relics   任意一个 ...

  5. Solution -「ARC 101D」「AT4353」Robots and Exits

    \(\mathcal{Description}\)   Link.   有 \(n\) 个小球,坐标为 \(x_{1..n}\):还有 \(m\) 个洞,坐标为 \(y_{1..m}\),保证上述坐标 ...

  6. Solution -「ARC 110D」Binomial Coefficient is Fun

    \(\mathcal{Description}\)   Link.   给定非负整数序列 \(\{a_n\}\),设 \(\{b_n\}\) 是一个非负整数序列且 \(\sum_{i=1}^nb_i\ ...

  7. Solution -「ARC 124E」Pass to Next

    \(\mathcal{Description}\)   Link.   有 \(n\) 个人站成一个环,初始时第 \(i\) 个人手里有 \(a_i\) 个球.第 \(i\) 个人可以将自己手中任意数 ...

  8. Solution -「ARC 126E」Infinite Operations

    \(\mathcal{Description}\)   Link.   给定序列 \(\{a_n\}\),定义一次操作为: 选择 \(a_i<a_j\),以及一个 \(x\in\mathbb R ...

  9. 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 ...

  10. Solution -「ARC 125F」Tree Degree Subset Sum

    \(\mathcal{Description}\)   Link.   给定含有 \(n\) 个结点的树,求非负整数对 \((x,y)\) 的数量,满足存在 \(\exist S\subseteq V ...

随机推荐

  1. 用R来分析洛杉矶犯罪

    由于微信不允许外部链接,你需要点击文章尾部左下角的 "阅读原文",才能访问文中链接. 洛杉矶市(Los Angeles)或"爵士乐的诞生地(The Birthplace ...

  2. Bioconductor 中的 R 包安装教程

    Bioconductor 是一个基于 R 语言的生物信息软件包,主要用于生物数据的注释.分析.统计.以及可视化(http://www.bioconductor.org). 总所周知,Bioconduc ...

  3. 使用Python实现学生信息管理系统

    本文介绍了一个简单的学生信息管理系统,包括管理员登录.重置学生密码.添加.删除和修改学生信息.查询学生信息以及对学生成绩进行排序等功能.该系统使用Python编写,基于控制台交互 实现思路 该系统分为 ...

  4. x.ai还是OpenAI?埃隆·马斯克的AI帝国【1】

    大家可能知道,在上个月底埃隆·马斯克与1000多名来自各个行业的专家一起联名签署了"Future of Life Institute"发起的一个请愿书,呼吁全社会暂停至少6个月的高 ...

  5. Linux网络编程(学习笔记)

    文中python代码来自老师的教学代码,感谢我的老师~~ 1. linux网络数据处理过程: 网卡->协议栈->网络 1)应用层输出数据 socket层->协议层->接口层 2 ...

  6. vue报错解决Duplicate keys detected: ‘[object Object]’

    最近在做vue项目时遇到了报错 ​ Duplicate keys detected: '[object Object]'. This may cause an update error. ​ 由于这个 ...

  7. 【SpringBoot】整合Redis

    1.前言 最近公司在做项目,用到了redis,,发现自己一点都不会,然后就乘闲暇时间,自己学习一些redis相关的知识,在这里分享给像我一样的初学者. 2.我的项目结构: 2.1 pom.xml &l ...

  8. 【Nginx】Nginx访问静态资源

    Nginx访问静态资源 即通过IP:端口/文件名 访问文件实现. 修改Nginx配置 location / { # root html; # index index.html index.htm; a ...

  9. 筛选出N以内的素数

    解题思路:1.素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数.(也就是只有 1 和它本身能整除)2.利用两个for循环来判断素数. 注意事项:1.注意for添加花括号.2.注意输 ...

  10. Java Maven Settings配置参考

    介绍 快速概览 settings.xml文件中的 settings 元素包含用于定义以各种方式配置Maven执行的值的元素,如pom.xml,但不应绑定到任何特定项目或分发给受众.这些值包括本地仓库位 ...