#include<cstdio>#include<iostream>#define int long long#define RI register int#define CI const int&usingnamespace std;
constint N=100005,S=2e6+5,INF=1e18;
int n,k,d,x,pfx[N],f[N],g[N],bkt[S],L,R,ret;
inlinevoidmove(CI l,CI r){
while (L>l) ++bkt[pfx[--L]],ret+=bkt[pfx[L-1]^d];
while (L<l) ret-=bkt[pfx[L-1]^d],--bkt[pfx[L++]];
while (R<r)
{
ret+=bkt[pfx[R+1]^d];
if ((pfx[R+1]^pfx[L-1])==d) ++ret;
++bkt[pfx[++R]];
}
while (R>r)
{
--bkt[pfx[R--]];
if ((pfx[R+1]^pfx[L-1])==d) --ret;
ret-=bkt[pfx[R+1]^d];
}
}
inlinevoidsolve(CI pl,CI pr,CI l,CI r){
if (l>r) return; int mid=l+r>>1,pos=-1;
for (RI i=pl;i<=min(pr,mid);++i)
{
move(i,mid); int tmp=ret+g[i-1];
if (tmp<f[mid]) f[mid]=tmp,pos=i;
}
solve(pl,pos,l,mid-1); solve(pos,pr,mid+1,r);
}
signedmain(){
RI i,j; for (scanf("%lld%lld%lld",&n,&k,&d),i=1;i<=n;++i)
scanf("%lld",&x),pfx[i]=pfx[i-1]^x; L=1; R=0; ret=0;
/*static int cnt[S]; for (i=1;i<=n;++i) for (j=i;j<=n;++j)
{
move(i,j); ++cnt[pfx[i-1]]; int tmp=0;
for (RI k=i;k<=j;++k) tmp+=cnt[pfx[k]^d],++cnt[pfx[k]];
for (RI k=i;k<=j;++k) cnt[pfx[k]]=0; cnt[pfx[i-1]]=0;
if (ret!=tmp) printf("[%lld,%lld] %lld %lld\n",i,j,ret,tmp);
}*/for (i=1;i<=n;++i) move(1,i),f[i]=g[i]=ret;
for (j=2;j<=k;++j)
{
for (i=1;i<=n;++i) f[i]=INF;
for (solve(1,n,1,n),i=1;i<=n;++i) g[i]=f[i];
}
returnprintf("%lld",f[n]),0;
}
6|0E. Spicy or Grilled?
签到,就我个人而言肯定是板烧大于麦辣的说
#include<cstdio>#include<iostream>usingnamespace std;
int t,n,x,a,b;
intmain(){
for (scanf("%d",&t);t;--t)
scanf("%d%d%d%d",&n,&x,&a,&b),printf("%d\n",x*b+(n-x)*a);
return0;
}
#include<cstdio>#include<iostream>#include<vector>#include<map>#include<queue>#include<utility>#include<cstring>#define RI register int#define CI const int&usingnamespace std;
typedef pair <int,int> pi;
constint N=15,S=(1<<20)+5,dx[4]={0,1,0,-1},dy[4]={1,0,-1,0};
int n,m,k,x[N],y[N],z[N],dist[S]; map <pi,vector <int>> rst; vector <vector <int>> state;
intmain(){
RI i,j; scanf("%d%d%d",&n,&m,&k); vector <int> st;
for (i=0;i<k;++i) scanf("%d%d%d",&x[i],&y[i],&z[i]),st.push_back(z[i]);
for (i=0;i<k;++i)
{
rst[pi(x[i],y[i])].push_back(i);
for (j=0;j<4;++j)
{
int nx=x[i]+dx[j],ny=y[i]+dy[j];
if (nx<1||nx>n||ny<1||ny>m) continue;
rst[pi(nx,ny)].push_back(i);
}
}
for (auto [it,vec]:rst) state.push_back(vec);
auto H=[&](vector <int>& vec)
{
int v=0; for (auto x:vec) v=v*4+x; return v;
};
memset(dist,-1,sizeof(dist));
queue <vector <int>> q; q.push(st); dist[H(st)]=0;
while (!q.empty())
{
auto cur=q.front(); q.pop(); int hc=H(cur);
for (auto &vec:state)
{
auto nxt=cur;
for (auto &x:vec) if (nxt[x]>0) --nxt[x];
int hn=H(nxt); if (~dist[hn]) continue;
dist[hn]=dist[hc]+1; q.push(nxt);
}
}
returnprintf("%d",dist[0]),0;
}
#include<cstdio>#include<iostream>#define RI register int#define CI const int&usingnamespace std;
constint N=2e6+5,mod=998244353,inv2=(mod+1)/2;
int n,ans,fact[N],ifac[N],prod[N];
inlineintquick_pow(int x,int p=mod-2,int mul=1){
for (;p;p>>=1,x=1LL*x*x%mod) if (p&1) mul=1LL*mul*x%mod; return mul;
}
inlinevoidinit(CI n){
RI i; for (fact[0]=i=1;i<=n;++i) fact[i]=1LL*fact[i-1]*i%mod;
for (ifac[n]=quick_pow(fact[n]),i=n-1;i>=0;--i) ifac[i]=1LL*ifac[i+1]*(i+1)%mod;
for (prod[0]=i=1;i<=n;++i) prod[i]=1LL*prod[i-1]*(i-inv2+mod)%mod;
}
inlineintC(CI n,CI m){
if (n<0||m<0||n<m) return0;
return1LL*fact[n]*ifac[m]%mod*ifac[n-m]%mod;
}
intmain(){
RI i; for (scanf("%d",&n),init(2*n),i=1;i<=n;++i)
{
int x=i-1,y=n-i,p; scanf("%d",&p);
(ans+=1LL*C(x+y,x)*prod[x]%mod*prod[y]%mod*ifac[x+y]%mod*p%mod)%=mod;
}
returnprintf("%d",ans),0;
}
#include<cstdio>#include<iostream>#include<vector>#include<algorithm>#define int long long#define RI register int#define CI const int&usingnamespace std;
int t,a,b;
signedmain(){
for (scanf("%lld",&t);t;--t)
{
auto lcm=[&](CI x,CI y)
{
return x/__gcd(x,y)*y;
};
scanf("%lld%lld",&a,&b); int ans=lcm(a,b);
if (a==b) ans=min(ans,0LL);
if (b%a==0) ans=min(ans,b);
if (__gcd(a,b)!=1) ans=min(ans,a+b);
auto resolve=[&](CI n)
{
for (RI i=2;i*i<=n;++i) if (n%i==0) return i;
return n;
};
int p=resolve(a),q=resolve(b);
ans=min(ans,lcm(a,p)+lcm(p,b));
ans=min(ans,lcm(a,q)+lcm(q,b));
ans=min(ans,lcm(a,2)+lcm(2,b));
ans=min(ans,lcm(a,p)+lcm(p,2)+lcm(2,b));
ans=min(ans,lcm(a,2)+lcm(2,q)+lcm(q,b));
ans=min(ans,lcm(a,p)+lcm(p,q)+lcm(q,b));
ans=min(ans,lcm(a,p)+lcm(p,2)+lcm(2,q)+lcm(q,b));
printf("%lld\n",ans);
}
return0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2020-05-16 AtCoder Grand Contest 041
2018-05-16 Luogu P3390 【模板】矩阵快速幂&&P1939 【模板】矩阵加速(数列)