Solution Set -「CF 1520」
「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」的更多相关文章
- 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 -「CF 1342E」Placing Rooks
\(\mathcal{Description}\) Link. 在一个 \(n\times n\) 的国际象棋棋盘上摆 \(n\) 个车,求满足: 所有格子都可以被攻击到. 恰好存在 \(k\ ...
- Solution -「CF 1622F」Quadratic Set
\(\mathscr{Description}\) Link. 求 \(S\subseteq\{1,2,\dots,n\}\),使得 \(\prod_{i\in S}i\) 是完全平方数,并最 ...
- Solution -「CF 923F」Public Service
\(\mathscr{Description}\) Link. 给定两棵含 \(n\) 个结点的树 \(T_1=(V_1,E_1),T_2=(V_2,E_2)\),求一个双射 \(\varph ...
- Solution -「CF 923E」Perpetual Subtraction
\(\mathcal{Description}\) Link. 有一个整数 \(x\in[0,n]\),初始时以 \(p_i\) 的概率取值 \(i\).进行 \(m\) 轮变换,每次均匀随机 ...
- Solution -「CF 1586F」Defender of Childhood Dreams
\(\mathcal{Description}\) Link. 定义有向图 \(G=(V,E)\),\(|V|=n\),\(\lang u,v\rang \in E \Leftrightarr ...
- Solution -「CF 1237E」Balanced Binary Search Trees
\(\mathcal{Description}\) Link. 定义棵点权为 \(1\sim n\) 的二叉搜索树 \(T\) 是 好树,当且仅当: 除去最深的所有叶子后,\(T\) 是满的: ...
- Solution -「CF 623E」Transforming Sequence
题目 题意简述 link. 有一个 \(n\) 个元素的集合,你需要进行 \(m\) 次操作.每次操作选择集合的一个非空子集,要求该集合不是已选集合的并的子集.求操作的方案数,对 \(10^9 ...
- Solution -「CF 1023F」Mobile Phone Network
\(\mathcal{Description}\) Link. 有一个 \(n\) 个结点的图,并给定 \(m_1\) 条无向带权黑边,\(m_2\) 条无向无权白边.你需要为每条白边指定边权 ...
随机推荐
- 基于渗透的python
Python for Pentesters 还记得开始学习编程的C,虽然淡忘,但思想仍在. 子域名枚举 request库 import pyfiglet import requests import ...
- 离线安装rpm包以及自建yum仓库
离线安装rpm包以及自建yum仓库 离线安装rpm yum支持如下参数 --downloadnoly 只下载不安装 --downloaddir=directory 下载到指定目录下 因此可以在线下载好 ...
- Winform或WebForm使用ReportViewer报表设计,工具栏按钮英文显示的解决办法
在项目开发中,我们总是会用到rdlc报表设计器,大多数情况下在本地开发环境中工具栏按钮显示的是中文,但是部署到客户环境后发现显示的是英文. 解决这个问题也是走了很多弯路,给大家简单说一下: 1.最初以 ...
- 如何通过AWS的AmazonSageMaker进行机器学习
目录 <如何通过 AWS 的 Amazon SageMaker 进行机器学习> 一.引言 随着人工智能和机器学习的发展,越来越多的企业和机构开始使用这些技术来进行各种应用场景的处理和分析. ...
- Python中 sys.argv[]用法详解
sys.argv[0]表示代码本身文件路径. sys.argv[]是一个从程序外部获取参数的桥梁,从外部取得的参数可以是多个,所以获得的是一个列表(list),也就是说sys.argv其实可以看作是一 ...
- 好用的log4j.properties配置文件(按照级别打印日志,每天生成不同类型的日志,可以打印sql日志)
日志按照级别分类 log4j.rootLogger = INFO,stdout,D,E,I #ShuChuDaoDaYingTai log4j.appender.stdout = org.apache ...
- 【HTML】TinyMCE 编辑器
HTML编辑器 一.页面效果 二.引入JS.CSS <!DOCTYPE html> <html lang="en"> <head> <me ...
- CMOS信噪比与感光面积的关系
前言 一般情况下,相同分辨率的sensor,如果感光面积越大,则其单位像素的感光面积也越大,成像质量也会越好.即相同分辨率品质相当的sensor,2/3"的传感器成像质量一般情况就要优于1/ ...
- 基于Avalonia 11.0.0+ReactiveUI 的跨平台项目开发1-通用框架
基于Avalonia 11.0.0+ReactiveUI 的跨平台项目开发1-通用框架 Avalonia简介: Avalonia是.NET的一个跨平台UI框架,提供了一个灵活的样式系统,支持广泛的操作 ...
- Java并发工具CountDownLatch的使用和原理
1.等待多线程完成的 CountDownLatch CountDownLatch 允许一个或多个线程等待其他线程完成操作. 假如有这样一个需求:我们需要解析一个 Excel 里多个 sheet 的数据 ...