Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics)

A. Even Subset Sum Problem

题意

给出一串数,找到其中的一些数使得他们的和为偶数

题解

水题,找到一个偶数或者两个奇数就好了

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#define def 110
using namespace std; long a[def]; int main()
{ long _,ans0,ans1,ans2,n,i;
for(scanf("%ld",&_);_;_--){
scanf("%ld",&n);
ans0=ans1=ans2=-1;
for(i=1;i<=n;i++){
scanf("%ld",&a[i]);
if(a[i]%2==0)
ans0=i;
else if(ans1==-1)
ans1=i;
else ans2=i;
}
if(ans0==-1&&(ans1==-1||ans2==-1))
printf("-1\n");
else if(ans0!=-1)
printf("1\n%ld\n",ans0);
else
printf("2\n%ld %ld\n",ans1,ans2);
}
return 0;
}

B. Count Subrectangles

题意

给出\(a\)和\(b\)两个数列,构造一个矩阵\(c\),使得\(c_{i,j}=a_i*b_j\),求矩阵\(c\)中有多少个面积为\(k\)的小矩阵里的值全为1

题解

根据矩阵\(c\)的构造原理可知,每一行相邻元素的连续性由\(b\)决定,每一列的连续性由\(a\)决定,所以可以分别记录下到每个位置到上一个0的长度\(lena\)和\(lenb\),那么当前点为顶点能构成的最大矩阵就是\(lena*lenb\),最后枚举一下小矩阵的边长就好了

代码

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<set>
#define ll long long
#define lowbit(i) ((i)&-(i))
#define def 40010
using namespace std; ll sum[def],a[def],b[def];
set<ll>st; void add(long x,long y)//用树状数组加速在b中的查询
{
for(;x<def;x+=lowbit(x))
sum[x]+=y;
} ll query(long x)
{ long ans=0;
for(;x;x-=lowbit(x))
ans+=sum[x];
return ans;
} int main()
{ ll n,m,i,j;
ll ans=0,k;
scanf("%lld%lld%lld",&n,&m,&k);
for(i=1;i<=sqrt(k);i++)
if(k%i==0){
st.insert(i);
st.insert(k/i);
}
for(i=1;i<=n;i++){
scanf("%lld",&a[i]);
if(a[i])
a[i]+=a[i-1];
}
for(i=1;i<=m;i++){
scanf("%lld",&b[i]);
if(b[i]){
b[i]+=b[i-1];
add(b[i],1);
}
}
for(i=1;i<=n;i++)
if(a[i]){
for(auto q:st)
if(a[i]>=k/q&&q<=m)
ans+=query(m)-query(q-1);
}
printf("%lld\n",ans);
return 0;
}

C. Unusual Competitions

题意

给定一个括号序列,每次可以选择一个区间\([l,r]\)来重排,耗时\(r-l+1\),求最少需要多少时间使其变得正常(左右括号完全匹配)

题解

因为时间只跟区间长度有关,跟内容无关,故只要找到不正常的区间来重排就好了

对于一个\(num['(']==num[')']\)的区间,如果其中存在一个点,在这个点上\(num['(']<num[')']\),那么这个区间就是一个不正常的区间

枚举一遍,O(n)解决

代码

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std; int main()
{ long long n,i,num=0,ans=0,l=0;
bool t=false;
string s;
cin>>n>>s;
for(i=0;i<n;i++){
if(s[i]=='(')
num++;
else
num--;
if(num<0)t=true;
if(!num){
if(t)
ans+=i-l+1;
l=i+1;
t=false;
}
}
if(num)
printf("-1\n");
else
printf("%lld\n",ans);
return 0;
}

Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics)的更多相关文章

  1. Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics)部分(A~E)题解

    (A) Even Subset Sum Problem 题解:因为n非常非常小,直接暴力枚举所有区间即可. #include<bits/stdc++.h> using namespace ...

  2. Codeforces Round #680 (Div. 2, based on Moscow Team Olympiad)【ABCD】

    比赛链接:https://codeforces.com/contest/1445 A. Array Rearrangment 题意 给定两个大小均为 \(n\) 的升序数组 \(a\) 和 \(b\) ...

  3. Codeforces Round #680 (Div. 2, based on Moscow Team Olympiad) D. Divide and Sum (思维,数学,逆元)

    题意:有一个长度为\(2n\)数组,从中选分别选\(n\)个元素出来组成两个序列\(p\)和\(q\),(\(p\)和\(q\)中只要有任意一个元素在\(a\)的原位置不同,就算一个新的情况),选完后 ...

  4. Codeforces Round #680 (Div. 2, based on Moscow Team Olympiad) C. Division (数学)

    题意:有两个数\(p\)和\(q\),找到一个最大的数\(x\),使得\(p\ mod\ x=0\)并且\(x\ mod\ q\ne 0\). 题解:首先,如果\(p\ mod\ q\ne0\),那么 ...

  5. Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals)

    Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals) 说一点东西: 昨天晚上$9:05$开始太不好了,我在学校学校$9:40$放 ...

  6. Codeforces Round #500 (Div. 2) [based on EJOI]

    Codeforces Round #500 (Div. 2) [based on EJOI] https://codeforces.com/contest/1013 A #include<bit ...

  7. Codeforces Round #517 (Div. 2, based on Technocup 2019 Elimination Round 2)

    Codeforces Round #517 (Div. 2, based on Technocup 2019 Elimination Round 2) #include <bits/stdc++ ...

  8. Codeforces Round #596 (Div. 2, based on Technocup 2020 Elimination Round 2)

    A - Forgetting Things 题意:给 \(a,b\) 两个数字的开头数字(1~9),求使得等式 \(a=b-1\) 成立的一组 \(a,b\) ,无解输出-1. 题解:很显然只有 \( ...

  9. (AB)Codeforces Round #528 (Div. 2, based on Technocup 2019 Elimination Round

    A. Right-Left Cipher time limit per test 1 second memory limit per test 256 megabytes input standard ...

随机推荐

  1. Revit二次开发-获取材质的纹理贴图

    通过IExportContext导出类中的Onmaterial()方法,可以获取到材质相关信息,主要是材质ID,再根据材质ID得到材质对象material,然后通过如下代码获取Asset对象: Ele ...

  2. linux系统用户管理(二)

    5.组命令管理**组账户信息保存在/etc/group和/etc/gshadow两个文件中 /etc/group 组账户信息 [root@localhost ~]# head -2 /etc/grou ...

  3. z-index优先级小结

    z-index是深度属性,设置元素在z轴上面的堆叠顺序. 强调:z-index必须和定位元素position:absollute|relative|fixed一起使用,否则无效 1.z-index属性 ...

  4. 四、RabbitMQ Exchange类型

    RabbitMQ整体上是一个生产者与消费者模型,主要负责接收.存储和转发消息.可以把消息传递的过程想象成:当你将一个包裹送到邮局,邮局会暂存并最终将邮件通过邮递员送到收件人的手上,RabbitMQ就好 ...

  5. Java的简易ATM系统

    大纲   ATM 机系统                   1.注册(账户(系统随机生成 15 位) - 密码(6位) - 余额)                   2.登录            ...

  6. 德国、日本的制造业为什么不能完全执行SOP?

    在过去几十年,德国.日本的制造企业简直就是"以质取胜"的代名词,一些制造业的CEO非常自豪,甚至在公开场合调侃:大家好,我就是"保质保量"本人,也正因如此,德国 ...

  7. 第十六届“二十一世纪的计算”学术研讨会 图灵奖获得者Butler W. Lampson主题演讲

    Personal Control of Digital Data 图灵奖获得者Butler W. Lampson主题演讲" title="第十六届"二十一世纪的计算&qu ...

  8. NopCommerce上二次开发 触发器记录

    最近要在NopCommerce上二次开发. 开发也就算了,该项目的架构设计很好,但性能不可谓不低. 扯远了,为了保持项目以后升级顺利,开次开发不允许在原项目基础上大改,只能以插件形式开发…… 因一个功 ...

  9. 【深圳·招聘】QQ音乐测试工程师-职位内推

    QQ音乐测试工程师 岗位职责 负责腾讯QQ音乐移动端/后台/web相关特性测试分析和执行,保障发布质量. 岗位要求 专业本科及以上学历,计算机/软件工程/信息管理/数学与应用数学/自动化/通信工程/电 ...

  10. Contour等高线图代码

    import matplotlib.pyplot as plt import numpy as np def f(x,y): # the height function return (1 - x / ...