题目地址:https://codeforces.com/contest/1136

A: Nastya Is Reading a Book

题解:挨个判断即可,水题。

参考代码:

 #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 ;
}

D:Nastya Is Buying Lunch

题解:神奇的贪心。我们先记录每个位置的贡献值,从最后一个位置的数开始,如果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)题解的更多相关文章

  1. 暑假集训——cf热身赛部分题有感加其题解

    刚刚开始集训,集训队队长暂时还没有拉专题,而是拉了部分codeforces上过题人数在2000左右的题组成了一场热身赛(其实就是一场练习),花了一天时间终于把它刷完了,其中很多题让我学到了很多骚操作, ...

  2. CF#345 (Div1)

    论蒟蒻如何被cf虐 以下是身败名裂后的题解菌=========== Div1 A.Watchmen 有n个点,每个点有一个坐标.求曼哈顿距离=欧几里得距离的点对数量. 只需要统计x或y一样的点对数量. ...

  3. CF 949D Curfew——贪心(思路!!!)

    题目:http://codeforces.com/contest/949/problem/D 有二分答案的思路. 如果二分了一个答案,首先可知越靠中间的应该大约越容易满足,因为方便把别的房间的人聚集过 ...

  4. Codeforces 1076G Array Game 题解

    目录 题目大意 做法 代码 不想写昨天晚上cf的比赛题目所以来写题解摸摸鱼 题目大意 有一个在长度为\(k\)的正整数序列\(b\)上进行的游戏,一开始一个棋子放在位置\(1\),假如当前棋子的位置为 ...

  5. WC2019 20天训练

    Day -1 2019.1.2 初步计划: 0x60 图论 std 洛谷提高剩余练习 NOIP2018遗留题解 洛谷省选基础练习 数学: 1.数论 2.组合数学(练习:莫比乌斯反演) 3.概率(练习: ...

  6. 动态规划dp专题练习

    貌似开坑还挺好玩的...开一个来玩玩=v=... 正好自己dp不是很熟悉,就开个坑来练练吧...先练个50题?小目标... 好像有点多啊QAQ 既然是开坑,之前写的都不要了! 50/50 1.洛谷P3 ...

  7. XJOI 3601 技能(贪心+二分)

    题目描述: 有一个oier,他有n个算法技能,每个技能有一个水平值,每个技能的水平上限都是A,设这个oier有cnt个技能达到了A, 设所有水平值的最小值为mi,那么这个oier的战斗力为cnt×Cf ...

  8. 【CF613D】Kingdom and its Cities(虚树,动态规划)

    [CF613D]Kingdom and its Cities(虚树,动态规划) 题面 洛谷 CF 翻译洛谷上有啦 题解 每次构建虚树,首先特判无解,也就是关键点中存在父子关系. 考虑\(dp\),设\ ...

  9. 0x5C 计数类DP

    cf 559C 考虑到黑色的格子很少,那么我把(1,1)变成黑色,然后按每个黑色格子接近终点的程度排序,计算黑色格子不经过另一个黑色格子到达终点的方案,对于当前的格子,要减去在它右下角的所有方案数(注 ...

随机推荐

  1. python 豆瓣top250电影的爬取

    我们先看一下豆瓣的robot.txt 然后我们查看top250的网页链接和源代码 通过对比不难发现网页间只是start数字发生了变化. 我们可以知道电影内容都存在ol标签下的 div class属性为 ...

  2. Typescript I: 遍历Array的方法:for, forEach, every等

    Typescript的官方文档 Iterators and Geneators (https://www.typescriptlang.org/docs/handbook/iterators-and- ...

  3. Python常用模块之os.path

    os.path.abspath(path) 输入相对路径,返回绝对路径 Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1 ...

  4. java中hashmap容量的初始化

    HashMap使用HashMap(int initialCapacity)对集合进行初始化. 在默认的情况下,HashMap的容量是16.但是如果用户通过构造函数指定了一个数字作为容量,那么Hash会 ...

  5. Vue2.x与bootsrap-table动态添加元素和绑定事件无效

    一.问题:     最近在使用vue与bootstrap-table结合生成表格时,按以前的经验----每列数据可用formatter:function(value,row,index){}进行一些其 ...

  6. Linux下安装和使用WPS,体验良好

    最近,我在ubuntu18.04.3下面使用LibreOffice,感觉良好. 正值政府机关在进行2019年度正版软件使用情况整改,保护知识产权,我表示热烈欢迎并强烈支持. 通过摸底,因为以前采购的w ...

  7. linux后台运行程序--nobup

    用途:不挂断地运行命令. 语法:nohup Command [ Arg - ] [ & ] 描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断 ...

  8. 面试官:关于Java性能优化,你有什么技巧

    通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化. 一般有两种方案:即优化代码或更改设计方法.我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性 ...

  9. 新闻实时分析系统 Spark2.X环境准备、编译部署及运行

    1.Spark概述 Spark 是一个用来实现快速而通用的集群计算的平台. 在速度方面, Spark 扩展了广泛使用的 MapReduce 计算模型,而且高效地支持更多计算模式,包括交互式查询和流处理 ...

  10. python--BMI

    #bmi height,weight = eval(input("请输入身高(m) 体重(kg),以逗号隔开\n")) bmi = weight/pow(weight,2) pri ...