Solution Set -「ABC 196」
「ABC 196A」Difference Max
Link.
略。
#include<cstdio>
long long a,b,c,d;
int main(){
scanf("%lld %lld %lld %lld",&a,&b,&c,&d);
printf("%lld\n",b-c);
return 0;
}
「ABC 196B」Round Down
Link.
略。
#include<cstdio>
#include<cstring>
char s[10000];
int main(){
scanf("%s",s);int len=strlen(s);
for(int i=0;i<len;++i)if(s[i]^'.')putchar(s[i]);else break;
return 0;
}
「ABC 196C」Doubled
Link.
分类讨论即可,可能会有点点细节需要注意。
#include<cstdio>
#include<algorithm>
using namespace std;
long long n;
int dig[20],cnt;
long long qpow(long long bas,long long fur){long long res=0;for(long long i=1;i<=fur;++i)res=res*10+9;return res;}
long long getnum(int l,int r){long long res=0;for(int i=r;i>=l;--i)res=res*10+dig[i];return res;}
int main(){
scanf("%lld",&n);long long bk=n;do dig[++cnt]=bk%10,bk/=10; while(bk);
if(cnt==1)return puts("0"),0;int lm=(cnt>>1);
long long pre=getnum(cnt-lm+1,cnt),suf=getnum(1,lm);
if(cnt&1)printf("%lld\n",qpow(9,lm));
else{
if(pre<=suf)printf("%lld\n",pre);
else printf("%lld\n",pre-1);
}
return 0;
}
/*
23333
3 3 3 3 2
232
*/
「ABC 196D」Hanjo
Link.
暴搜。
#include<iostream>
using namespace std;
int h,w,a,b,ans;
void dfs(int solvedNumber,int stateBoard,int leftLongerBlock,int leftCenterBlock)
{
if(solvedNumber==h*w) ++ans;
else
{
if(stateBoard&(1<<solvedNumber)) return dfs(solvedNumber+1,stateBoard,leftLongerBlock,leftCenterBlock);
if(leftLongerBlock)
{
if((solvedNumber%w!=w-1)&&(!(stateBoard&(1<<(solvedNumber+1))))) dfs(solvedNumber+1,stateBoard|(1<<solvedNumber)|(1<<(solvedNumber+1)),leftLongerBlock-1,leftCenterBlock);
if(solvedNumber+w<h*w) dfs(solvedNumber+1,stateBoard|(1<<solvedNumber)|(1<<(solvedNumber+w)),leftLongerBlock-1,leftCenterBlock);
}
if(leftCenterBlock) dfs(solvedNumber+1,stateBoard|(1<<solvedNumber),leftLongerBlock,leftCenterBlock-1);
}
}
int main()
{
cin >> h >> w >> a >> b;
dfs(0,0,a,b); cout << ans << "\n";
return 0;
}
「ABC 196E」Filters
Link.
这是个 Segment Tree Beats 的板子,不打了。
// Oops, something went wrong.
「ABC 196F」Substring 2
Link.
你 ABC 考 FFT 字符串匹配。
定义匹配函数 \(f(x)=\sum_{i=0}^{|T|-1}(S_{x+i}-T_{i})^{2}=\sum_{i=0}^{|T|-1}S^{2}_{x+i}-2\sum_{i=0}^{|T|-1}S_{x+i}T_{i}+\sum_{i=0}^{|T|-1}T_{i}^{2}\)。
然后反转 \(T\) 卷积即可。
#include<cstdio>
#include<numeric>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
const int MOD=998244353,INF=numeric_limits<int>::max();
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 qpow(int bas,int fur)
{
int res=1;
while(fur)
{
if(fur&1) res=LL(res)*bas%MOD;
bas=LL(bas)*bas%MOD;
fur>>=1;
}
return res%MOD;
}
namespace Poly
{
typedef vector<int> poly;
#define len(x) (int((x).size()))
int lim,rev[4000010];
void ntt(poly &f,int op)
{
for(int i=0;i<lim;++i) if(i<rev[i]) swap(f[i],f[rev[i]]);
for(int len=2;len<=lim;len<<=1)
{
int bas=qpow(op==1?3:332748118,(MOD-1)/len);
for(int fr=0;fr<lim;fr+=len)
{
int now=1;
for(int ba=fr;ba<fr+(len>>1);++ba,now=LL(now)*bas%MOD)
{
int tmp=LL(now)*f[ba+(len>>1)]%MOD;
f[ba+(len>>1)]=(f[ba]-tmp+MOD)%MOD;
f[ba]=(f[ba]+tmp)%MOD;
}
}
}
if(op==-1)
{
int tmp=getInv(lim);
for(int i=0;i<lim;++i) f[i]=LL(f[i])*tmp%MOD;
}
}
poly operator*(poly f,poly g)
{
int n=len(f)+len(g)-1; lim=1;
while(lim<n) lim<<=1;
f.resize(lim),g.resize(lim);
for(int i=0;i<lim;++i) rev[i]=(rev[i>>1]>>1)|((i&1)?(lim>>1):0);
ntt(f,1),ntt(g,1);
for(int i=0;i<lim;++i) f[i]=LL(f[i])*g[i]%MOD;
ntt(f,-1),f.resize(n);
return f;
}
poly operator*(int x,poly f){for(int i=0;i<len(f);++i) f[i]=LL(f[i])*x%MOD; return f;}
poly operator-(poly f,poly g)
{
int n=max(len(f),len(g));
f.resize(n),g.resize(n);
for(int i=0;i<len(f);++i) f[i]=(f[i]-g[i]+MOD)%MOD;
return f;
}
poly operator+(poly f,poly g)
{
int n=max(len(f),len(g));
f.resize(n),g.resize(n);
for(int i=0;i<len(f);++i) f[i]=(f[i]+g[i])%MOD;
return f;
}
}using namespace Poly;
int main()
{
string S,T;
cin >> S >> T; reverse(T.begin(),T.end());
poly onesi,anosi,onexsi,anoxsi;
#define Sqr(x) ((LL)(x)*(x)%MOD)
onesi.push_back(Sqr((*S.begin())-'0'));
anosi.push_back(Sqr((*T.begin())-'0'));
for(int i=1;i<len(S);++i) onesi.push_back(onesi.back()+Sqr(S[i]-'0'));
for(int i=1;i<len(T);++i) anosi.push_back(anosi.back()+Sqr(T[i]-'0'));
for(char c : S) onexsi.push_back(c-'0'); for(char c : T) anoxsi.push_back(c-'0');
poly tmp=2*onexsi*anoxsi; int ans=INF;
#define getValue(i) (((i)<(len(T)))?0:onesi[(i)-len(T)])
for(unsigned int i=T.size()-1;i<S.size();++i) ans=min(ans,onesi[i]-getValue(i)+anosi[len(T)-1]-tmp[i]);
printf("%d\n",ans);
return 0;
}
Solution Set -「ABC 196」的更多相关文章
- Solution Set -「ABC 217」
大家好屑兔子又来啦! [A - Lexicographic Order] 说个笑话,\(\color{black}{\text{W}}\color{red}{\text{alkingDead} ...
- Diary / Solution Set -「WC 2022」线上冬眠做噩梦
大概只有比较有意思又不过分超出能力范围的题叭. 可是兔子的"能力范围" \(=\varnothing\) qwq. 「CF 1267G」Game Relics 任意一个 ...
- 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 ...
- Solution -「ABC 219H」Candles
\(\mathcal{Description}\) Link. 有 \(n\) 支蜡烛,第 \(i\) 支的坐标为 \(x_i\),初始长度为 \(a_i\),每单位时间燃烧变短 \(1\) ...
- Solution -「ABC 215H」Cabbage Master
\(\mathcal{Description}\) Link. 有 \(n\) 种颜色的,第 \(i\) 种有 \(a_i\) 个,任意两球互不相同.还有 \(m\) 个盒子,每个盒子可以被放 ...
- Solution -「ABC 213G」Connectivity 2
\(\mathcal{Description}\) Link. 给定简单无向图 \(G=(V,E)\),点的编号从 \(1\) 到 \(|V|=n\).对于 \(k=2..n\),求 \(H= ...
- Solution -「ABC 213H」Stroll
\(\mathcal{Description}\) Link. 给定一个含 \(n\) 个结点 \(m\) 条边的简单无向图,每条边的边权是一个常数项为 \(0\) 的 \(T\) 次多项式, ...
- Solution -「ABC 217」题解
D - Cutting Woods 记录每一个切割点,每次求前驱后驱就好了,注意简单判断一下开闭区间. 考场上采用的 FHQ_Treap 无脑莽. #include <cstdio> #i ...
- 「ABC 249Ex」Dye Color
考虑停时定理. 初始势能为 \(\sum \Phi(cnt_i)\),末势能为 \(\Phi(n)\),我们希望构造这样一个 \(\Phi:Z\to Z\) 函数,使得每一次操作期望势能变化量为常数. ...
- Note -「Lagrange 插值」学习笔记
目录 问题引入 思考 Lagrange 插值法 插值过程 代码实现 实际应用 「洛谷 P4781」「模板」拉格朗日插值 「洛谷 P4463」calc 题意简述 数据规模 Solution Step 1 ...
随机推荐
- JVM 诊断神器-Arthas实战
什么是Arthas(阿尔萨斯) 阿里开源的Java诊断工具,它可以在运行时对Java应用程序进行动态诊断和调试 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决 这个类从哪个 jar 包加 ...
- 【Python&RS】GDAL计算遥感影像光谱指数(如NDVI、NDWI、EVI等)
GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库.它利用抽象数据模型来表达所支持的各种文件格式.它 ...
- ENVI5.3 安装教程,新手入门(超详细)附安装包和常见问题
ENVI是一个完整的遥感图像处理平台,广泛应用于科研.环境保护.气象.农业.林业.地球科学.遥感工程.水利.海洋等领域.目前ENVI已成为遥感影像处理的必备软件,包含辐射定标.大气校正.镶嵌裁剪.分类 ...
- Vue——计算属性、监听属性、Vue生命周期、组件介绍和使用、组件间通信、ref属性
计算属性 // 1 计算属性是基于他们的依赖变量进行缓存的 // 2 计算属性只有在它的相关依赖变量发生改变时才会重新求值,否则不会变(函数只要页面变化,就会重新运算) // 3 计算属性就像pyth ...
- wait_timeout and interactive_timeout 参数
wait_timeout and interactive_timeout 参数 非交互模式连接:通常情况下,应用到RDS实例会采用非交互模式,具体采用哪个模式需要查看应用的连接方式配置,比如PHP通过 ...
- Solon 成为信通院可信开源社区、可信开源项目
自2021年9月17日成立以来,可信开源社区共同体共有五批新成员加入.在4月21日"OSCAR开源生态建设论坛"上,可信开源社区共同体又迎来2位正式成员和6位预备成员,Solon ...
- 利用生成式预训练Transformer实现文本分类和命名实体识别
目录 1. 引言 2. 技术原理及概念 2.1 基本概念解释 2.2 技术原理介绍 3. 实现步骤与流程 3.1 准备工作:环境配置与依赖安装 3.2 核心模块实现 3.3 集成与测试 4. 应用示例 ...
- Jupyter无法运行websocket错误
Juputer无法连接 系websocket连接出问题,浏览器控制台报错 ws 连接异常 WebSocket connection to 'ws://localhost:8888/api/kernel ...
- Centos 7安装JDK1.8
# 安装 yum install -y java-1.8.0-openjdk* # 添加环境变量 vim /etc/profile export JAVA_HOME=/usr/lib/jvm/java ...
- Flask结合gunicorn和nginx反向代理的生产环境部署及踩坑记录
前言 之前自己写的flask使用gunicorn上线生产环境没有什么问题,但是最近搭建了一个现成的flask项目,当使用python直接运行时不会有问题,而使用gunicorn时则会出现一些问题. 部 ...