CF 1136A 1136B 1136C 1136D 1136E(Round546ABCDE)题解
题目地址:https://codeforces.com/contest/1136
题解:挨个判断即可,水题。
参考代码:
#include<bits/stdc++.h>
using namespace std;
int n,l[],r[],k; int main()
{
scanf("%d",&n);
for(int i=;i<=n;++i) scanf("%d%d",&l[i],&r[i]);
scanf("%d",&k);
for(int i=;i<=n;++i)
{
if(k>=l[i] && k<=r[i]) { cout<<n-i+<<endl; break;}
} return ;
}
B:Nastya Is Playing Computer Games
题解:找规律。ans=3*n+min(k-1,n-k);
参考代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int INF=0x3f3f3f3f;
int n,k;
int main()
{
scanf("%d%d",&n,&k);
int a=min(k-,n-k);
printf("%d\n",*n+a); return ;
}
C:Nastya Is Transposing Matrices
题解:如果两个位置的数可以交换,则他们的横纵坐标的和相同。我们用mp[x][0]:表示横纵坐标和为x的数量,然后mp[x][i] (i>=1):表示横纵坐标和为x的数字有哪些,
然后徐排序依次比较即可;
参考代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const int Max = 5e2 + ;
const int mod = 1e9 + ;
int map1[*Max][Max],map2[*Max][Max]; bool cmp(int index)
{
for (int i=; i<= map1[index][];i++)
{
if(map1[index][i]!=map2[index][i])
return false;
}
return true;
} int main()
{
int n, m;
while (scanf("%d%d",&n,&m)!=EOF)
{
memset(map1,,sizeof(map1));
memset(map2,,sizeof(map2));
for (int i = ; i <= n; i++)
{
for (int j=;j<=m;j++)
{
int x;
scanf("%d", &x);
map1[i+j][++map1[i+j][]]=x;
}
}
for (int i=;i<=n;i++)
{
for (int j=;j<=m;j++)
{
int x;
scanf("%d", &x);
map2[i+j][++map2[i+j][]]=x;
}
}
bool ok=true;
for(int i=;i<=n+m;i++)
{
sort(map1[i]+,map1[i]++map1[i][]);
sort(map2[i]+,map2[i]++map2[i][]);
if(!cmp(i)){ok = false;break;}
}
if(ok) printf("YES\n");
else printf("NO\n");
}
return ;
}
题解:神奇的贪心。我们先记录每个位置的贡献值,从最后一个位置的数开始,如果num[ pos[i] ]>=n-ans-i则ans++,否则,用前面一个位置的数继续更新num数组;
参考代码:
#include<bits/stdc++.h>
using namespace std;
#define PI acos(-1.0)
#define mkp make_pair
#define pb push_back
#define fi first
#define se second
typedef pair<int,int> pii;
typedef long long ll;
const int INF=0x3f3f3f3f;
const int maxn=3e5+;
const int maxm=5e5+;
int n,m,ans;
int pos[maxn],num[maxn];
vector<int> v[maxn];
int main()
{
scanf("%d%d",&n,&m);
memset(num,,sizeof(num)); ans=;
for(int i=;i<=n;++i) scanf("%d",&pos[i]);
for(int i=;i<=m;++i)
{
int x,y;
scanf("%d%d",&x,&y);
v[y].pb(x);
}
for(auto &i:v[pos[n]]) num[i]++; for(int i=n-;i>;--i)
{
if(num[pos[i]]>=n-ans-i) ans++;
else {for(auto &ii:v[pos[i]]) num[ii]++;}
}
printf("%d\n",ans); return ;
}
E:Nastya Hasn't Written a Legend
题解:

参考代码:
#include<bits/stdc++.h>
#define fi first
#define se second
using namespace std;
typedef long long LL;
typedef pair<int, int> pii;
const LL lt = -1e18;
const int INF = 0x3f3f3f3f;
const int MXN = 1e5 + ; int n, m;
LL ar[MXN], kr[MXN], kk[MXN];
LL sum[MXN<<],flag[MXN<<],Max[MXN<<];
void build(int l,int r,int rt)
{
flag[rt]=lt;
if(l==r)
{
sum[rt]=ar[l]-kr[l-];
return;
}
int mid=(l+r)>>;
build(l,mid,rt<<);build(mid+,r,rt<<|);
sum[rt]=sum[rt<<]+sum[rt<<|];
}
void push_down(int l,int mid,int r,int rt)
{
if(flag[rt]==lt) return;
flag[rt<<]=flag[rt];
flag[rt<<|]=flag[rt];
sum[rt<<]=flag[rt]*(mid-l+);
sum[rt<<|]=flag[rt]*(r-mid);
flag[rt]=lt;
}
void update(int L,int R,LL v,int l,int r,int rt)
{
if(L<=l&&r<=R)
{
flag[rt]=v;
sum[rt]=v*(r-l+);
return;
}
int mid=(l+r)>>;
push_down(l,mid,r,rt);
if(L>mid) update(L,R,v,mid+,r,rt<<|);
else if(R<=mid) update(L,R,v,l,mid,rt<<);
else update(L,mid,v,l,mid,rt<<),update(mid+,R,v,mid+,r,rt<<|);
sum[rt]=sum[rt<<]+sum[rt<<|];
}
LL query(int L,int R,int l,int r,int rt)
{
if(L>R) return ;
if(L<=l&&r<=R) return sum[rt];
int mid=(l+r)>>;
push_down(l,mid,r,rt);
if(L>mid) return query(L,R,mid+,r,rt<<|);
else if(R<=mid) return query(L,R,l,mid,rt<<);
else return query(L,mid,l,mid,rt<<)+query(mid+,R,mid+,r,rt<<|);
}
int main()
{
scanf("%d", &n);
for(int i=;i<=n;++i) scanf("%lld",&ar[i]);
for(int i=;i<n;++i) scanf("%lld",&kr[i]);
for(int i=;i<n;++i) kr[i]+=kr[i-];
for(int i=;i<n;++i) kk[i]=kk[i-]+kr[i];
build(,n,);
int Q; scanf("%d", &Q);
char s[]; int l, r;
while(Q --)
{
scanf("%s%d%d",s,&l,&r);
if(s[] == 's')
printf("%lld\n",query(l,r,,n,)+kk[r-]-(l>=?kk[l-]:));
else
{
int L=l,R=n,mid,ans=l;
ar[l]=query(l,l,,n,)+r;
while(L<=R)
{
mid=L+R>>;
if(ar[l]>query(mid,mid,,n,)) ans=mid,L=mid+;
else R=mid-;
}
update(l,ans,ar[l],,n,);
}
}
return ;
}
CF 1136A 1136B 1136C 1136D 1136E(Round546ABCDE)题解的更多相关文章
- 暑假集训——cf热身赛部分题有感加其题解
刚刚开始集训,集训队队长暂时还没有拉专题,而是拉了部分codeforces上过题人数在2000左右的题组成了一场热身赛(其实就是一场练习),花了一天时间终于把它刷完了,其中很多题让我学到了很多骚操作, ...
- CF#345 (Div1)
论蒟蒻如何被cf虐 以下是身败名裂后的题解菌=========== Div1 A.Watchmen 有n个点,每个点有一个坐标.求曼哈顿距离=欧几里得距离的点对数量. 只需要统计x或y一样的点对数量. ...
- CF 949D Curfew——贪心(思路!!!)
题目:http://codeforces.com/contest/949/problem/D 有二分答案的思路. 如果二分了一个答案,首先可知越靠中间的应该大约越容易满足,因为方便把别的房间的人聚集过 ...
- Codeforces 1076G Array Game 题解
目录 题目大意 做法 代码 不想写昨天晚上cf的比赛题目所以来写题解摸摸鱼 题目大意 有一个在长度为\(k\)的正整数序列\(b\)上进行的游戏,一开始一个棋子放在位置\(1\),假如当前棋子的位置为 ...
- WC2019 20天训练
Day -1 2019.1.2 初步计划: 0x60 图论 std 洛谷提高剩余练习 NOIP2018遗留题解 洛谷省选基础练习 数学: 1.数论 2.组合数学(练习:莫比乌斯反演) 3.概率(练习: ...
- 动态规划dp专题练习
貌似开坑还挺好玩的...开一个来玩玩=v=... 正好自己dp不是很熟悉,就开个坑来练练吧...先练个50题?小目标... 好像有点多啊QAQ 既然是开坑,之前写的都不要了! 50/50 1.洛谷P3 ...
- XJOI 3601 技能(贪心+二分)
题目描述: 有一个oier,他有n个算法技能,每个技能有一个水平值,每个技能的水平上限都是A,设这个oier有cnt个技能达到了A, 设所有水平值的最小值为mi,那么这个oier的战斗力为cnt×Cf ...
- 【CF613D】Kingdom and its Cities(虚树,动态规划)
[CF613D]Kingdom and its Cities(虚树,动态规划) 题面 洛谷 CF 翻译洛谷上有啦 题解 每次构建虚树,首先特判无解,也就是关键点中存在父子关系. 考虑\(dp\),设\ ...
- 0x5C 计数类DP
cf 559C 考虑到黑色的格子很少,那么我把(1,1)变成黑色,然后按每个黑色格子接近终点的程度排序,计算黑色格子不经过另一个黑色格子到达终点的方案,对于当前的格子,要减去在它右下角的所有方案数(注 ...
随机推荐
- redis 数据库主从不一致问题解决方案
在聊数据库与缓存一致性问题之前,先聊聊数据库主库与从库的一致性问题. 问:常见的数据库集群架构如何? 答:一主多从,主从同步,读写分离. 如上图: (1)一个主库提供写服务 (2)多个从库提供读服务 ...
- Docker学习-Spring Boot on Docker
1.创建spring boot项目 https://start.spring.io/ pom.xml文件新增docker支持 <build> <plugins> <plu ...
- ios遇到的坑
总结体会:很多ios兼容性问题都是由于body设置了height:100% ios中input输入不了 在ios中margin属性不起作用 设置html body的高度为百分比时,margin-bot ...
- 区块链轻松上手:原理、源码、搭建与应用pdf电子版下载
区块链轻松上手:原理.源码.搭建与应用pdf电子版下载 链接:https://pan.baidu.com/s/1rKF4U9wq612RMIChs0zv8w提取码:hquz <区块链轻松上手:原 ...
- 在linux (centos)上使用puppeteer实现网页截图
1.安装nodejs和npm # 下载解压 wget -c https://nodejs.org/dist/v8.9.1/node-v8.9.1-linux-x64.tar.xz tar -xvf n ...
- 某些机root也不能访问dma-buf
从4.3后,回顾<从surfaceflinger历史变更谈截屏>,只能通过生产消费者队列向surfaceflinger服务申请显示缓冲,这个缓冲就是dma-buf映射的共享内存. bind ...
- 《算法导论中文版》PDF 下载
电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍 在有关算法的书中,有一些叙述非常严谨,但不够全面:另一些涉及了大量的题材,但又缺乏严谨性.本书将严谨性和全面性融为 ...
- Asp.net Core 系列之--5.认证、授权与自定义权限的实现
ChuanGoing 2019-11-24 asp.net core系列已经来到了第五篇,通过之前的基础介绍,我们了解了事件订阅/发布的eventbus整个流程,初探dapper ORM实现,并且简单 ...
- Java常用类、接口关系图谱
呕心沥血画出此图,希望在使用Java类.接口时捋顺其关系,从而更好的组织程序逻辑---请看图 Object分出来的类都是其子类 Iterable接口分出的也是子接口 从继承关系分析,其父类实现的接口子 ...
- [Odoo12基础教程]之第一篇-创建Todo应用
声明: 本教程基于 Ruter 老师的 [Odoo基础教程系列] ,Ruter老师教程的链接地址为:Odoo基础教程系列 . 至于为什么已经有了Ruter老师的教程,还要自己再搬移一份呢?是基于一 ...