CF 925

补题ing 待更新

后面打算更新D题和power oj上一道区间合并的题(现在才知道是一道洛谷上的原题……)

D

分析

​ 涉及到关于取模的知识,我们的答案要满足三个条件:

  1. ai-aj≡0(MOD y);
  2. ai+aj≡0(MOD x);
  3. 1<=i<j<=n;

​ 1.容易想到ai%y=aj%y,2.等价于(ai%x+aj%x)%x=0。由这两个式子和第三个条件我们应该思考,如何将i,j分别移到等式两边,这样才方便我们处理。由模数的性质可知,ai%x+aj%x的结果要么为0要么为x,所以我们直观的想到:ai%x的结果要么为-aj%x要么为x-aj%x,又ai,aj,x都为正数,第一种结果意味着ai%x=aj%x=0,我们将其与第二种结果合并,ai%x=0=x-aj%x=x,等式不成立,而在右边模上x,即变为3.ai%x=(x-aj%x)%x则会使等式成立;但是,所谓等式,意味着我们要证明3式不会与第二种结果相悖。把ai%x=x-aj%x左右两边都模上x,因为ai%x%x=ai%x,x-aj%x也为小于x的数,故化为ai%x=(x-aj%x)%x,即3式能同时满足两个结果。

操作

​ 对于每个ai,我们设aa=ai%x,bb=ai%y,因为i<j,遍历时先把答案的个数cnt加上集合{bb,(x-aa)%x}的个数,再用存下集合{bb,aa},这里我用的是map实现。

代码

#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
#define int long long
#define db(x) cout<<x<<" "<<endl;
#define _db(a,n) for(int i=1;i<=n;i++) cout<<a[i]<<" ";cout<<endl;
#define mem(a) memset(a,0, sizeof(a))
signed main()
{
std::ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t,n,x,y;cin>>t;
while(t--){
cin>>n>>x>>y;
int a,cnt=0;
map<pair<int,int>,int>mp;
for(int i=1;i<=n;i++){
cin>>a;
int aa=a%x,bb=a%y;
cnt+=mp[{bb,(x-aa)%x}];
mp[{bb,aa}]++;
}
cout<<cnt<<endl;
}
return 0;
}

E

分析

手写的模拟过程

​ 博弈论加贪心,实际上后手得到的答案只看其位数是否大于m,先手的倒置是把后缀0的个数从位数减去,而后手可以通过合并使后缀0不存在,所以对先手而言,只消每轮删去后缀0个数最多的,而后手同样选一个后缀0最多的跟一个没有后缀0的合并(因为先手操作过,这种数一定存在),使其没有后缀0,这样它被倒置也不会减少位数,也就是这样可以使后手得到的位数员供献最少,这也是后手的最佳方案

比如5550 20 300

先手的操作一定是300先,这样对他收益大,5550和20的只能操作一个,但对后手没有影响,因为它们后缀0个数一样。

操作

​ 所以可以把数遍历一下,统计位数还有后缀0个数,按后缀0个数从大到小排,奇数位上的都被先手操作过,所以最后后手得到的数的位数就是初始位数-奇数位后缀0个数,再用这个跟m比较,严格大于才是后手胜,否则是先手胜。

如 1 2007 800 1580

排序后为 800 1580 2007 1 (后两个可颠倒顺序)

代码

#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
#define int long long
#define db(x) cout<<x<<" "<<endl;
#define _db(a,n) for(int i=1;i<=n;i++) cout<<a[i]<<" ";cout<<endl;
#define mem(a) memset(a,0, sizeof(a))
const int N=2e5+5;
int a[N],b[N];//b数组统计后缀0个数
signed main()
{
std::ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t,n,m,x,y;cin>>t;
while(t--){
cin>>n>>m;
int cnt=0;//统计位数
for(int i=1;i<=n;i++){
cin>>a[i];
b[i]=0;
}
for(int i=1;i<=n;i++){
//注意两个while的顺序
while(a[i]%10==0){
a[i]/=10;
b[i]++;
cnt++;
}
while(a[i]){
a[i]/=10;
cnt++;
}
}
sort(b+1,b+n+1,[](int a,int b){
return a>b;
});
for(int i=1;i<=n;i+=2){
cnt-=b[i];//先手总操作奇数位
}
if(cnt>m) cout<<"Sasha";
else cout<<"Anna";
cout<<endl; }
return 0;
}

[F](Problem - F - Codeforces)

分析

​ 每个参与者都把自己排在最前面,因此我们找相对顺序时可以不管第一个。

1 2 3 4		2<-3<-4
2 3 1 4 3<-1<-4
3 2 1 4 2<-1<-4
4 2 3 1 2<-3<-1

由此可构造拓扑序

操作

​ 对k个顺序的第2到n个依次建边,求拓扑序是否存在,即是否满足cnt=n

代码

#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
#define int long long
#define db(x) cout<<x<<" "<<endl;
#define _db(a,n) for(int i=1;i<=n;i++) cout<<a[i]<<" ";cout<<endl;
#define mem(a) memset(a,0, sizeof(a))
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define per(i,r,l) for(int i=r;i>=l;i--)
const int N=2e5+5;
int a[N],rd[N],n,cnt;
vector<int>e[N];
bool tuopu(){
//这里可以就用普通队列
priority_queue<int,vector<int>,greater<int>>q;
cnt=0;
for(int i=1;i<=n;i++){
if(rd[i]==0) q.push(i);
}
while(!q.empty()){
int x=q.top();
q.pop();
for(auto t:e[x]){
rd[t]--;
if(rd[t]==0) q.push(t);
}
cnt++;
}
return cnt==n;
}
signed main()
{
std::ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t,x,k,ans=0;cin>>t;
while(t--){
cin>>n>>k;
//注意用memset初始化会t
for(int i=1;i<=n;i++){
e[i].clear();
rd[i]=0;
}
while(k--){
for(int i=1;i<=n;i++){
cin>>a[i];
if(i>=3){
e[a[i]].push_back(a[i-1]);
rd[a[i-1]]++;
}
} }
if(tuopu()){
cout<<"YES";
}
else cout<<"NO";
cout<<endl;
}
return 0;
}

CF-925(已更新:D-F)的更多相关文章

  1. intellij idea 13&14 插件推荐及快速上手建议 (已更新!)

    原文:intellij idea 13&14 插件推荐及快速上手建议 (已更新!) 早些年 在外企的时候,公司用的是intellij idea ,当时也是从eclipse.MyEclipse转 ...

  2. SRM12 T2夏令营(分治优化DP+主席树 (已更新NKlogN)/ 线段树优化DP)

     先写出朴素的DP方程f[i][j]=f[k][j-1]+h[k+1][i] {k<i}(h表示[k+1,j]有几个不同的数)  显然时间空间复杂度都无法承受   仔细想想可以发现对于一个点 i ...

  3. 微信快速开发框架(九)-- V3.0发布,代码已更新至Github 新增微店功能

    版本内容 1.修正了缺少对Event.View的支持 2.增加了用户UnionID 3.新增微信小店功能 4.多客服功能 5.单元测试 什么是UnionID 我们知道,每个用户针对一个微信公众账号都有 ...

  4. 微信快速开发框架(六)-- 微信快速开发框架(WXPP QuickFramework)V2.0版本上线--源码已更新至github

    4月28日,已增加多媒体上传及下载API,对应MediaUploadRequest和MediaGetRequest ------------------------------------------ ...

  5. 微信快速开发框架(七)--发送客服信息,版本更新至V2.2 代码已更新至github

    在V2版本发布的博文中,已经介绍了大多数Api的用法,同时也收到了很多意见,其中发布了几个修正版本,修改了几个bug,在此感谢大家的使用,有了大家的支持,相信快速开发框架会越来越好,也会越来越完善的. ...

  6. 目录 of 2013-2014-1(内容已更新结束)

    (内容已更新结束) UML部分: ---------------1.概述2.用例图3.类图4.顺序图 MVC部分: ----------------1.概述2.路由3.控制器4.视图5.模型6.安装部 ...

  7. Asky极简教程:零基础1小时学编程,已更新前8节

    Asky极简架构 开源Asky极简架构.超轻量级.高并发.水平扩展.微服务架构 <Asky极简教程:零基础1小时学编程>开源教程 零基础入门,从零开始全程演示,如何开发一个大型互联网系统, ...

  8. 【sql server】"已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行" 解决方案

    #事故现场: 1.在手动修改某表中数据是,出现如下错误提示:  已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行 2.表结构及数据: #解决方法: 1.原因分析:提示被删除的行不是唯一行, ...

  9. 【干货】电路设计师指导手册(已更新完毕)(转载EDN)

    [干货]电路设计师指导手册(已更新完毕) 第一部分:接地与布线第二部分:电源返回路径与I/O信号接地第三部分:板间互连.星形接地及屏蔽第四部分:安全地以及电线/电缆第五部分:射频电缆.双绞线与串扰

  10. 激活windows10(已更新工具)

    激活windows10 1.用cmd命令: 自己动手,KMS激活win10 2016 长期服务版.步骤如下:命令提示符(管理员),依次输入以下3条命令 slmgr /ipk DCPHK-NFMTC-H ...

随机推荐

  1. [译] kubernetes:kube-scheduler 调度器代码结构概述

    本文翻译自 https://github.com/kubernetes/community/blob/master/contributors/devel/sig-scheduling/scheduli ...

  2. Kubernetes 内存资源限制实战

    本文转载自米开朗基扬的博客 1. Kubernetes 内存资源限制实战 Kubernetes 对内存资源的限制实际上是通过 cgroup 来控制的,cgroup 是容器的一组用来控制内核如何运行进程 ...

  3. 如何学习 Photoshop

    你有没有想过"图像处理或图形设计看起来很酷,我要学习 Photoshop!" 然后你第一次打开 Photoshop,并被你所看到的东西所震撼. Photoshop 是一款功能强大的 ...

  4. Redis服务端辅助的客户端缓存机制

    一.背景和问题 二.Redis6 的解决方案及原理 2.1 服务端支持客户端缓存的两种模式 1. 默认模式 2. 广播模式 2.2 客户端实现的两种连接模式 1. 使用同一连接 2. 使用不同连接 3 ...

  5. [java] - JavaBeans 获取 session

    RegServlet // 保存到 session request.getSession().setAttribute("user", user); userinfo.jsp // ...

  6. 百度网盘(百度云)SVIP超级会员共享账号每日更新(2023.11.26)

    一.百度网盘SVIP超级会员共享账号 可能很多人不懂这个共享账号是什么意思,小编在这里给大家做一下解答. 我们多知道百度网盘很大的用处就是类似U盘,不同的人把文件上传到百度网盘,别人可以直接下载,避免 ...

  7. Mygin 实现简单Http

    本篇是完全参考gin的功能,自己手动实现一个类似的功能,帮助自己理解和学习gin框架 目的 简单介绍net/http库以及http.Handler接口 实现简单的功能 标准库启动Web服务 impor ...

  8. [转帖]小米Redis的K8s容器化部署实践

    https://juejin.cn/post/6844904196924276743     背景 Why K8S How K8s Why Proxy Proxy带来的问题 K8s带来的好处 遇到的问 ...

  9. [转帖]KingbaseES 服务器运行参数分类

    https://www.cnblogs.com/kingbase/p/16969149.html Kingbase 服务器运行参数分类 说明: KingbaseES 数据库中,服务器运行参数分为多种类 ...

  10. [转帖]深度解读:传奇的Alpha处理器

    https://jishuin.proginn.com/p/763bfbd2cf85 来源:科技新报(台) 长期关心处理器技术发展者,这20年来,很难不每隔一段时间就会偶尔听到「这技术受Alpha影响 ...