「CF 1520A」Do Not Be Distracted!

Link.

模拟。

#include<bits/stdc++.h>
char now;
char get_char(){char res=getchar();while(res<'A' || res>'Z') res=getchar(); return res;}
bool vis[26];
int main()
{
int T,n;
scanf("%d",&T);
while(T-->0)
{
scanf("%d",&n);
int ans=0;
for(int i=1;i<=n;++i)
{
char cur=get_char();
if(cur!=now)
{
now=cur;
if(vis[cur-'A']) ans=1;
}
vis[cur-'A']=1;
}
puts(ans?"NO":"YES");
memset(vis,0,sizeof vis);
}
return 0;
}

「CF 1520B」Ordinary Numbers

Link.

按位考虑。

#include<bits/stdc++.h>
typedef long long ll;
int main()
{
int T;
scanf("%d",&T);
while(T-->0)
{
ll ans=0,n;
scanf("%lld",&n);
for(ll pw=1;pw<=n;pw=pw*10+1) for(int now=1;now<=9;++now) if(pw*now<=n) ++ans;
printf("%lld\n",ans);
}
return 0;
}

「CF 1520C」Not Adjacent Matrix

Link.

用 flows 的 trick 来构造,\((i+j)\) 为奇先填,为偶后填。

#include<bits/stdc++.h>
int main()
{
int T,n;
scanf("%d",&T);
while(T-->0)
{
scanf("%d",&n);
if(n==2) puts("-1");
else
{
int cur=0;
static int ans[110][110];
for(int i=1;i<=n;++i) for(int j=1;j<=n;++j) if((i+j)&1) ans[i][j]=++cur;
for(int i=1;i<=n;++i) for(int j=1;j<=n;++j) if((i+j)&1^1) ans[i][j]=++cur;
for(int i=1;i<=n;++i,puts("")) for(int j=1;j<=n;++j) printf("%d ",ans[i][j]);
}
}
return 0;
}

「CF 1520D」Same Differences

Link.

式子移项。

#include<bits/stdc++.h>
typedef long long ll;
int a[200010],cnt[500010];
int main()
{
int T,n;
scanf("%d",&T);
while(T-->0)
{
scanf("%d",&n);
for(int i=1;i<=n;++i) scanf("%d",&a[i]),a[i]-=i,a[i]+=200000,++cnt[a[i]];
ll ans=0;
for(int i=1;i<=n;++i) ans+=cnt[a[i]]-1;
printf("%lld\n",ans/2);
for(int i=1;i<=n;++i) --cnt[a[i]];
}
return 0;
}

「CF 1520E」Arranging The Sheep

Link.

所有牛往中间那头牛走。

#include<bits/stdc++.h>
typedef long long ll;
#define All(x) (x).begin(),(x).end()
int fuck[1000010];
int main()
{
int T,n;
scanf("%d",&T);
while(T-->0)
{
scanf("%d",&n);
int tot=0;
for(int i=1;i<=n;++i)
{
char now=getchar();
while((now^ '.') && (now^'*')) now=getchar();
if(now=='*') fuck[++tot]=i;
}
int mpos=int(std::ceil(tot/2.0));
ll ans=0;
for(int i=1;i<=tot;++i) ans+=std::abs(fuck[i]-fuck[mpos]+mpos-i);
printf("%lld\n",ans);
}
return 0;
}

「CF 1520F1」Guess the K-th Zero (Easy version)

Link.

二分维护答案区间,询问 \(\log_{2}\) 次。

#include<bits/stdc++.h>
#define fl fflush(stdout)
int n,t,k;
int q(int l,int r){int res=0; printf("? %d %d\n",l,r); fl; scanf("%d",&res); return res;}
int main()
{
scanf("%d %d",&n,&t);
while(t--)
{
scanf("%d",&k);
int l=1,r=n,ans=0;
while(l<=r)
{
int mid=(l+r)>>1,tmp=mid-l+1-q(l,mid);
if(tmp>=k) r=mid-1,ans=mid;
else k-=tmp,l=mid+1;
}
printf("! %d\n",ans);
fl;
}
return 0;
}

「CF 1520F2」Guess the K-th Zero (Hard version)

Link.

把二分记忆化下来,用 std::map 和 BIT 实现。

#include<bits/stdc++.h>
#define fl fflush(stdout)
int n,t,k;
struct FWT
{
#define l(x) ((x)&-(x))
int tr[200010];
FWT(){memset(tr,0,sizeof tr);}
void i(int x){for(;x<=n;x+=l(x)) ++tr[x];}
int $(int x){int r=0; for(;x;x^=l(x)) r+=tr[x]; return r;}
int f(int l,int r){return $(r)-$(l-1);}
}fw;
std::map<std::tuple<int,int>,int> mp;
int q(int l,int r){
if(mp.find(std::tie(l,r))==mp.end())
{
int res=0;
printf("? %d %d\n",l,r);
fl;
scanf("%d",&res);
mp[std::tie(l,r)]=res;
return res;
}
else return mp[std::tie(l,r)]+fw.f(l,r);
}
int main()
{
scanf("%d %d",&n,&t);
while(t--)
{
scanf("%d",&k);
int l=1,r=n,ans=0;
while(l<=r)
{
int mid=(l+r)>>1,tmp=mid-l+1-q(l,mid);
if(tmp>=k) r=mid-1,ans=mid;
else k-=tmp,l=mid+1;
}
printf("! %d\n",ans);
fl;
fw.i(ans);
}
return 0;
}

「CF 1520G」To Go Or Not To Go?

Link.

广搜。

#include<bits/stdc++.h>
typedef long long ll;
#define sf(x) scanf("%d",&x)
#define ssf(x) scanf("%lld",&x)
const int wax[4]={1,-1,0,0},way[4]={0,0,1,-1};
int n,m;
ll w,dis0[2010][2010],dis1[2010][2010],a[2010][2010];
bool Inside(int x,int y){return !(x<1 || x>n || y<1 || y>m);}
void Compute_0()
{
std::queue<std::tuple<int,int>> q;
q.emplace(1,1);
dis0[1][1]=1;
while(!q.empty())
{
int nowx,nowy;
std::tie(nowx,nowy)=q.front();
q.pop();
for(int k=0;k<4;++k)
{
int tox=nowx+wax[k],toy=nowy+way[k];
if(Inside(tox,toy) && !dis0[tox][toy] && ~a[tox][toy]) dis0[tox][toy]=dis0[nowx][nowy]+1,q.emplace(tox,toy);
}
}
for(int i=1;i<=n;++i) for(int j=1;j<=m;++j) --dis0[i][j];
}
void Compute_1()
{
std::queue<std::tuple<int,int>> q;
q.emplace(n,m);
dis1[n][m]=1;
while(!q.empty())
{
int nowx,nowy;
std::tie(nowx,nowy)=q.front();
q.pop();
for(int k=0;k<4;++k)
{
int tox=nowx+wax[k],toy=nowy+way[k];
if(Inside(tox,toy) && !dis1[tox][toy] && ~a[tox][toy]) dis1[tox][toy]=dis1[nowx][nowy]+1,q.emplace(tox,toy);
}
}
for(int i=1;i<=n;++i) for(int j=1;j<=m;++j) --dis1[i][j];
}
int main()
{
sf(n),sf(m),ssf(w);
for(int i=1;i<=n;++i) for(int j=1;j<=m;++j) ssf(a[i][j]);
Compute_0(),Compute_1();
ll mxtmp=std::numeric_limits<ll>::max();
ll ans=~dis0[n][m]?w*dis0[n][m]:mxtmp,ozd=mxtmp;
for(int i=1;i<=n;++i) for(int j=1;j<=m;++j) if(~dis1[i][j] && a[i][j]>=1) ozd=std::min(ozd,a[i][j]+w*dis1[i][j]);
for(int i=1;i<=n;++i) for(int j=1;j<=m;++j) if(~dis0[i][j] && a[i][j]>=1 && ozd!=mxtmp) ans=std::min(ans,w*dis0[i][j]+a[i][j]+ozd);
if(ans==mxtmp) puts("-1");
else printf("%lld\n",ans);
return 0;
}

Solution Set -「CF 1520」的更多相关文章

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

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

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

  3. Solution -「CF 1342E」Placing Rooks

    \(\mathcal{Description}\)   Link.   在一个 \(n\times n\) 的国际象棋棋盘上摆 \(n\) 个车,求满足: 所有格子都可以被攻击到. 恰好存在 \(k\ ...

  4. Solution -「CF 1622F」Quadratic Set

    \(\mathscr{Description}\)   Link.   求 \(S\subseteq\{1,2,\dots,n\}\),使得 \(\prod_{i\in S}i\) 是完全平方数,并最 ...

  5. Solution -「CF 923F」Public Service

    \(\mathscr{Description}\)   Link.   给定两棵含 \(n\) 个结点的树 \(T_1=(V_1,E_1),T_2=(V_2,E_2)\),求一个双射 \(\varph ...

  6. Solution -「CF 923E」Perpetual Subtraction

    \(\mathcal{Description}\)   Link.   有一个整数 \(x\in[0,n]\),初始时以 \(p_i\) 的概率取值 \(i\).进行 \(m\) 轮变换,每次均匀随机 ...

  7. Solution -「CF 1586F」Defender of Childhood Dreams

    \(\mathcal{Description}\)   Link.   定义有向图 \(G=(V,E)\),\(|V|=n\),\(\lang u,v\rang \in E \Leftrightarr ...

  8. Solution -「CF 1237E」Balanced Binary Search Trees

    \(\mathcal{Description}\)   Link.   定义棵点权为 \(1\sim n\) 的二叉搜索树 \(T\) 是 好树,当且仅当: 除去最深的所有叶子后,\(T\) 是满的: ...

  9. Solution -「CF 623E」Transforming Sequence

    题目 题意简述   link.   有一个 \(n\) 个元素的集合,你需要进行 \(m\) 次操作.每次操作选择集合的一个非空子集,要求该集合不是已选集合的并的子集.求操作的方案数,对 \(10^9 ...

  10. Solution -「CF 1023F」Mobile Phone Network

    \(\mathcal{Description}\)   Link.   有一个 \(n\) 个结点的图,并给定 \(m_1\) 条无向带权黑边,\(m_2\) 条无向无权白边.你需要为每条白边指定边权 ...

随机推荐

  1. RIP动态路由协议配置实验

    项目背景 规划与配置接口 IP地址 AR1: [AR1-GigabitEthernet0/0/0]ip address 20.0.1.1 24 [AR1-GigabitEthernet0/0/1]ip ...

  2. 【PAT】 1002 写出这个数 Rust Solution

    读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 10​100​​. 输出格式: 在一行 ...

  3. XTTS系列之三:中转空间的选择和优化

    通常选择XTTS做迁移的数据库都不会太小的,至少都是几T.几十T这样的规模,这种级别的数据量原有空间不够用,所以在迁移过程临时用作存放迁移数据库备份文件的空间也是需要提前考虑规划的问题. 最近就有客户 ...

  4. Python中使用支付宝支付

    准备 # 支付宝文档 https://opendocs.alipay.com/open/270/105898?pathHash=b3b2b667 # 在沙箱环境下实名认证 https://openho ...

  5. tomcat Filter内存马

    idea调试的时候加入源代码 <dependency> <groupId>org.apache.tomcat</groupId> <artifactId> ...

  6. 从头学Java17-Stream API(一)

    Stream API Stream API 是按照map/filter/reduce方法处理内存中数据的最佳工具. 本系列中的教程包含从基本概念一直到collector设计和并行流. 在流上添加中继操 ...

  7. 创建 Code Interpreter Demo: 一次实践的探索

    好消息,好消息,Code Interpreter可以测试使用了!!! 在这篇文章中,我们将探索如何创建一个 Code Interpreter Demo.提交一个2023年1-5月份的融资记录数据,让它 ...

  8. Go 语言的 nil 能比较自己吗

    nil 是什么? 可以看看官方的描述,在 buildin/buildin.go 里: // nil is a predeclared identifier representing the zero ...

  9. 【WebGL系列-02】创建program上下文

    WebGL程序program对象的创建 program对象由顶点着色器对象和片元着色器对象构成,因此,创建program对象包含了两部分,一个是着色器对象的创建,一个是program对象的创建. 总体 ...

  10. zabbix 概念 - 主机、主机配置模板

    zabbix 是以"主机"为单位来组织监控项的. 主机(Host)是一个你想要监控的网络实体(物理的,或者虚拟的).它可以是一台物理服务器,一个网络交换机,一个虚拟机或者一些应用. ...