Codeforces Round #674 (Div. 3)

突如其来的div3,赛后打了一下。

A - Floor Number

数学题答案是1+⌈n−2x⌉1+\lceil \frac{n-2}{x} \rceil1+xn2

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{IO;int T=1;cin>>T;while(T--){int n,x;cin>>n>>x;if(n<=2) cout<<1<<'\n';elsecout<<1+(n-2+x-1)/x<<'\n';}return 0;
}

B - Symmetric Matrix

只要存在2×2小矩形是对称的并且边长是偶数就一定能够拼成大矩形,否则不行。

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{IO;int T=1;cin>>T;while(T--){bool ok=0;int n,m;cin>>n>>m;while(n--){int a,b,c,d;cin>>a>>b>>c>>d;if(b==c) ok=1;}if(m%2) ok=0;if(ok) cout<<"YES\n";else cout<<"NO\n";}return 0;    
}

C - Increase and Copy

稍微转化一下,很明显如果加1,只需要每次把a1a_1a1,并且操作相同次数,先加1再复制结果一定更优。
此题有一个样例提示了我:当n=1000000000n=1000000000n=1000000000,答案是632446324463244,说明移动步数非常少。由此我们可以枚举+1的操作数然后就不难解决了。

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
const int N=300010;
int main()
{IO;int T=1;cin>>T;while(T--){int n;cin>>n;int res=0x3f3f3f3f;for(int i=0;i<=70000;i++){int now=1;now+=i;if(now>=n){res=min(res,i);break;}elseres=min(res,i+(n-now+now-1)/now);}cout<<res<<'\n';}return 0;
}

E - Rock, Paper, Scissors

不难发现只需要找到互不相交,子串和为0的数量。
考虑前缀和数组sis_isi,如果si=sjs_i=s_jsi=sj,说明ai+1+ai+2+⋯+aj=0a_{i+1}+a_{i+2}+\dots+a_j=0ai+1+ai+2++aj=0
然后用个map记录一下即可。

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<map>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=200010;
ll a[N],s[N];
int n;
map<ll,int> mp;
int main()
{IO;int T=1;//cin>>T;while(T--){cin>>n;mp.clear();for(int i=1;i<=n;i++){cin>>a[i];s[i]=s[i-1]+a[i];}int now=0;int res=0;mp[0]=0;for(int i=1;i<=n;i++){if(mp.count(s[i])){if(now-1<=mp[s[i]]){res++;now=i;}}mp[s[i]]=i;}cout<<res<<'\n';}return 0;
}

D - Non-zero Segments

别问,问就是暴力
出牌顺序就6种,消顺序就8种,直接枚举即可。

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
int n;
int a,b,c;
int e,f,g;
int main()
{IO;int T=1;//cin>>T;while(T--){cin>>n;cin>>a>>b>>c;cin>>e>>f>>g;int cnt0=0;for(int i=0;i<1<<3;i++){int x=e,y=f,z=g;int now1=min(a,x+z);if(i&1) {z-=x-max(0,x-now1);x=max(0,x-now1);}else{x-=z-max(0,z-now1);z=max(0,z-now1);}int now2=min(b,y+x);if(i>>1&1){x-=y-max(0,y-now2);y=max(0,y-now2);}else{y-=x-max(0,x-now2);x=max(0,x-now2);}int now3=min(c,y+z);if(i>>2&1){z-=y-max(0,y-now3);y=max(0,y-now3);}else{y-=z-max(0,z-now3);z=max(0,z-now3);}cnt0=max(cnt0,now1+now2+now3);}for(int i=0;i<1<<3;i++){int x=e,y=f,z=g;int now1=min(a,x+z);int now2=min(b,y+x);if(i>>1&1){x-=y-max(0,y-now2);y=max(0,y-now2);}else{y-=x-max(0,x-now2);x=max(0,x-now2);}if(i&1) {z-=x-max(0,x-now1);x=max(0,x-now1);}else{x-=z-max(0,z-now1);z=max(0,z-now1);}int now3=min(c,y+z);if(i>>2&1){z-=y-max(0,y-now3);y=max(0,y-now3);}else{y-=z-max(0,z-now3);z=max(0,z-now3);}cnt0=max(cnt0,now1+now2+now3);}for(int i=0;i<1<<3;i++){int x=e,y=f,z=g;int now2=min(b,y+x);if(i>>1&1){x-=y-max(0,y-now2);y=max(0,y-now2);}else{y-=x-max(0,x-now2);x=max(0,x-now2);}int now3=min(c,y+z);if(i>>2&1){z-=y-max(0,y-now3);y=max(0,y-now3);}else{y-=z-max(0,z-now3);z=max(0,z-now3);}int now1=min(a,x+z);if(i&1) {z-=x-max(0,x-now1);x=max(0,x-now1);}else{x-=z-max(0,z-now1);z=max(0,z-now1);}cnt0=max(cnt0,now1+now2+now3);}for(int i=0;i<1<<3;i++){int x=e,y=f,z=g;int now1=min(a,x+z);if(i&1) {z-=x-max(0,x-now1);x=max(0,x-now1);}else{x-=z-max(0,z-now1);z=max(0,z-now1);}int now3=min(c,y+z);if(i>>2&1){z-=y-max(0,y-now3);y=max(0,y-now3);}else{y-=z-max(0,z-now3);z=max(0,z-now3);}int now2=min(b,y+x);if(i>>1&1){x-=y-max(0,y-now2);y=max(0,y-now2);}else{y-=x-max(0,x-now2);x=max(0,x-now2);}cnt0=max(cnt0,now1+now2+now3);}for(int i=0;i<1<<3;i++){int x=e,y=f,z=g;int now1=min(a,x+z);int now3=min(c,y+z);if(i>>2&1){z-=y-max(0,y-now3);y=max(0,y-now3);}else{y-=z-max(0,z-now3);z=max(0,z-now3);}if(i&1) {z-=x-max(0,x-now1);x=max(0,x-now1);}else{x-=z-max(0,z-now1);z=max(0,z-now1);}int now2=min(b,y+x);if(i>>1&1){x-=y-max(0,y-now2);y=max(0,y-now2);}else{y-=x-max(0,x-now2);x=max(0,x-now2);}cnt0=max(cnt0,now1+now2+now3);}for(int i=0;i<1<<3;i++){int x=e,y=f,z=g;int now3=min(c,y+z);if(i>>2&1){z-=y-max(0,y-now3);y=max(0,y-now3);}else{y-=z-max(0,z-now3);z=max(0,z-now3);}int now2=min(b,y+x);if(i>>1&1){x-=y-max(0,y-now2);y=max(0,y-now2);}else{y-=x-max(0,x-now2);x=max(0,x-now2);}int now1=min(a,x+z);if(i&1) {z-=x-max(0,x-now1);x=max(0,x-now1);}else{x-=z-max(0,z-now1);z=max(0,z-now1);}cnt0=max(cnt0,now1+now2+now3);}int cnt1=min(n,min(a,f)+min(b,g)+min(c,e));cout<<n-cnt0<<' '<<cnt1<<'\n';}return 0;
}

F - Number of Subsequences

首先不考虑问号,我们求子序列abc的个数可以用动态规划设计状态
状态表示:
f(i,0)f_{(i,0)}f(i,0)表示考虑前iii个字符,子序列aaa的数目
f(i,1)f_{(i,1)}f(i,1)表示考虑前iii个字符,子序列ababab的数目
f(i,2)f_{(i,2)}f(i,2)表示考虑前iii个字符,子序列abcabcabc的数目
状态转移:
如果当前字符是aaa,那么f(i,0)=f(i−1,0)+1f_{(i,0)}=f_{(i-1,0)}+1f(i,0)=f(i1,0)+1
如果当前字符是bbb,那么f(i,1)=f(i−1,1)+f(i,0)f_{(i,1)}=f_{(i-1,1)}+f_{(i,0)}f(i,1)=f(i1,1)+f(i,0)
如果当前字符是ccc,那么f(i,2)=f(i−1,2)+f(i,1)f_{(i,2)}=f_{(i-1,2)}+f_{(i,1)}f(i,2)=f(i1,2)+f(i,1)

此题目非常dt的地方就是因为问号的3种情况,导致有些转移不是那么简单
一个问号的3种情况会使得原来的f(i,0/1/2)f_{(i,0/1/2)}f(i,0/1/2)翻3倍,而对于f(i,0)f_{(i,0)}f(i,0)的转移会使得+1+1+1变成+pk(k是之前出现?的数目)+p^k(k是之前出现?的数目)+pk(k?)

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=200010;
const ll mod=1e9+7;
char s[N];
ll f[N][3];
int main()
{IO;int T=1;//cin>>T;while(T--){int n;cin>>n;cin>>s+1;ll p=1;for(int i=1;i<=n;i++){if(s[i]=='?'){f[i][0]=(3ll*f[i-1][0]+p)%mod;f[i][1]=(3ll*f[i-1][1]+f[i-1][0])%mod;f[i][2]=(3ll*f[i-1][2]+f[i-1][1])%mod;p=p*3%mod;}else if(s[i]=='a') {f[i][0]=(f[i-1][0]+p)%mod;f[i][1]=f[i-1][1];f[i][2]=f[i-1][2];}else if(s[i]=='b'){f[i][0]=f[i-1][0];f[i][1]=(f[i-1][1]+f[i-1][0])%mod;f[i][2]=f[i-1][2];}else {f[i][0]=f[i-1][0];f[i][1]=f[i-1][1];  f[i][2]=(f[i-1][2]+f[i-1][1])%mod;}}cout<<f[n][2]<<'\n';}return 0;
}

要加油哦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/319516.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【每日一题】8月28日题目精讲 编号

【每日一题】8月28日题目精讲 编号 链接&#xff1a;https://ac.nowcoder.com/acm/problem/19925 来源&#xff1a;牛客网 题目描述 你需要给一批商品编号&#xff0c;其中每个编号都是一个7位16进制数&#xff08;由0~9, a-f组成&#xff09;。为了防止在人工处理时不小心把编…

P4321-随机漫游【状压dp,数学期望,高斯消元】

正题 题目链接:https://www.luogu.com.cn/problem/P4321 题目大意 给出nnn个点mmm条边的一张无向图&#xff0c;qqq次询问。 每次询问给出一个点集和一个起点&#xff0c;求从起点出发随机游走经过所有点集的期望步数。 n∈[1,18],m∈[1,n(n−1)2],q∈[1,105]n\in[1,18],m\i…

开源若要天下闻,掌声须给教育人

引子故事一当我们介绍 Linux Kernel 项目历史的时候&#xff0c;我们会如此说&#xff1a;“1991 年&#xff0c;赫尔辛基大学的大学生 Linus torvald, 在自己的电脑上开发了一个能够运行在 X86 架构上的操作系统&#xff0c;并将它发布在互联网上&#xff0c;任何人都可以参与…

纪中A组模拟赛总结(2021.7.22)

成绩 rankrankranknamenamenamescorescorescoreT1T1T1T2T2T2T3T3T3T4T4T4141414lyflyflyf101010000101010000000总结 T1明显状压&#xff0c;求方案感觉可以用容斥&#xff0c;但又发现假了&#xff0c;就跳过了 T2想找找有没有规律&#xff0c;就把表打了出来&#xff0c;但…

【模板】线性基

ACM模板 文章目录构造线性基线性基模板操作线性基相关题目学习线性基可考虑以下大佬博客 知乎Pecco博客 博客园Kaori博客 menci博客 肖然博客 从线性代数谈线性基&#xff08;有点硬核&#xff09; 构造线性基 普通插入&#xff1a; 不能保证除了主元上其他线性基元素该位置为…

【每日一题】8月27日题目精讲 Is It A Tree?

链接&#xff1a;https://ac.nowcoder.com/acm/problem/105905 来源&#xff1a;牛客网 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 10000K&#xff0c;其他语言20000K 64bit IO Format: %lld 题目描述 A tree is a well-known data struct…

YbtOJ#631-次短路径【左偏树,最短路】

正题 题目链接:https://www.ybtoj.com.cn/contest/114/problem/1 题目大意 给出nnn个点mmm条边的一张无向图&#xff0c;对于每个点iii求不经过i∼1i\sim 1i∼1的最短路的第一条边的情况下iii到111的最短路 数据保证这条边唯一 n∈[1,105],m∈[1,2105],c∈[1,103]n\in[1,10^…

好代码是管出来的——使用Jenkins搭建CI服务器

Jenkins是一个开源的跨平台的CI工具&#xff0c;它可以部署在Windows、Linux等平台上&#xff0c;并且Jenkins提供了非常丰富的插件来帮助完成编译、测试、部署等工作。  本文将介绍在Windows平台上使用Jenkins完成.Net Core应用的持续集成环境搭建&#xff0c;其主要内容有&…

牛客练习赛 59

A.小乔和小灰灰 前几天刚刚学了序列自动机&#xff0c;这题直接也没咋想暴力的做法&#xff0c;直接上序列自动机匹配子序列即可。 #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) #include<iostream> #include<algorithm&…

【图论】清理牛棚/Cleaning Shifts S(luogu 4644)

正题 luogu 4644 题目大意 给你一段时间&#xff0c;有n头奶牛&#xff0c;第i头可以花费sis_isi​的代价清理lil_ili​到rir_iri​&#xff0c;问你清理完所有时间段的最小代价 解题思路 所有点需求都为1的线性规划&#xff0c;直接代入最短路就可以了 code #include<q…

1153 Decode Registration Card of PAT (25分)

1153 Decode Registration Card of PAT (25分) 题意&#xff1a; 给出一组学生的准考证号和成绩 准考证号组成为&#xff1a;考试等级&#xff08;TAB&#xff09;&#xff0c;考场号&#xff08;从101到999&#xff09;&#xff0c;考试日期&#xff08;yymmdd&#xff09;&…

YbtOJ#893-带权的图【高斯消元,结论】

正题 题目链接:https://www.ybtoj.com.cn/problem/893 题目大意 给出一张nnn个点mmm条边的无向联通图&#xff0c;每条边正反向各有A,B,CA,B,CA,B,C三种边权。 保证满足 Ax,y−Ay,x,Bx,yBy,x,Cx,y−Cy,xA_{x,y}-A_{y,x}\ ,\ B_{x,y}B_{y,x}\ ,\ C_{x,y}-C_{y,x}Ax,y​−Ay,x​…

.Net Core 2.1 通用主机(Core 在控制台应用程序中的应用)

一、介绍官方文档中说&#xff0c;Microsoft.AspNetCore.App 元包&#xff08;ASP.NET Core 2.1 或更高版本&#xff09;包含通用主机的Microsoft.Extensions.Hosting包&#xff0c;当创建控制台项目以后并没有相应的包。在官方案例中所用的Nuget包有&#xff1a;1. Microsoft.…

【二分】【最小生成树】公路修建问题(P2323)

正题 P2323 题目大意 给你n个点和若干边&#xff0c;每条边有两种代价&#xff0c;问你选择n-1条边使得这n个点连通&#xff0c;且选择第一种代价的边不小于k&#xff0c;让你使代价最大值最小 解题思路 二分答案&#xff0c;然后最小生成树&#xff0c;连接可以连得边&…

PAT 1152 Google Recruitment (20 分)- 甲级

题意 给出一个L长的字符串&#xff0c;求出其中第一个k位长的素数 题解&#xff1a; 其实就是暴力求解&#xff0c;不过在这介绍一个函数 int numstoi(s); s是string型的&#xff0c;stoi可以将string转换成int型 string f_str std::to_string(f); 是将int型转化成string型…

Grakn Forces 2020——D题Pecco模型总结

今天是双节但是为什么我今天好自闭啊啊啊&#xff0c;自己在寝室自闭了一下午&#xff0c;好无聊。明天一定要精神满满啊&#xff01; A - Circle Coloring 签到题 #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) #include<iost…

产品开发管理之流程和体系(总篇)

前言秋风瑟瑟&#xff0c;夏日的灼热犹在&#xff0c;就瞬间迎来刺骨寒风。凛冬将至&#xff0c;今天对我们来说&#xff0c;像贴面的利刃一样冰冷而真实。农民、建筑工人、司机、程序员、私企高管、私企老板、资本巨富&#xff0c;都被裹挟进了这个焦灼的时代&#xff0c;没有…

YbtOJ#593-木棍问题【费用流】

正题 题目链接:https://www.ybtoj.com.cn/contest/114/problem/3 题目大意 n∗mn*mn∗m的网格上有一些格子有木球&#xff0c;两个相邻木球直接可以有木棍。 两个LLL形的木棍会产生AAA的代价&#xff0c;两个III形的木棍会产生BBB的代价 对于每个kkk求出插入kkk根木棍时的最小…

【LCT】旅游(P1505)

正题 P1505 题目大意 给你一棵树让你进行以下操作 1.修改一条边的权值 2.把一条链的权值取反 3.查询一条链的权值和 4.查询一条链的边权最大值 5.查询一条链的边权最小值 解题思路 把边拆成点&#xff0c;然后就是lct模板了 code #include<cstdio> #include<…

1143 Lowest Common Ancestor 甲级

题意&#xff1a; 给出一棵二叉搜索树的前序遍历&#xff0c;问结点u和v的共同最低祖先是谁&#xff0c;利用先序遍历特点。 二叉搜索树满足&#xff1a; 节点的左子树只包含键小于节点键的节点。 节点的键只包含节点的右键大于或等于子树的节点的键。 左子树和右子树也必须是…