题目地址: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. 小程序的基本概念-生命周期(组件 wxml)

    一.组件生命周期:一个组件从创建开始到使用中最后被销毁的过程 ---onLoad事件:组件(创建成功并且加载完成)触发一次 (1)当此事件触发发送请求获取数据 (2)获取其他组件传递数据(option ...

  2. 怎样判断有没有SQL注入漏洞及原理?

    来源:实验楼 最为经典的单引号判断法: 在参数后面加上单引号,比如: http://xxx/abc.php?id=1' 如果页面返回错误,则存在 Sql 注入. 原因是无论字符型还是整型都会因为单引号 ...

  3. K8S入门系列之集群二进制部署-->master篇(二)

    组件版本和配置策略 组件版本 Kubernetes 1.16.2 Docker 19.03-ce Etcd 3.3.17 https://github.com/etcd-io/etcd/release ...

  4. csp-s2019游记

    11.15D0: 复习 复习 机房里弥漫着颓废的气息,不过也是最后一个下午了 11.16D1: 五点钟爬起来,一边发抖一边去楼下买早饭 虽然平时基本不吃早饭,但考前不行 搭着同学的车去了考点,在车上重 ...

  5. Ubuntu 16.04安装JDK并配置环境变量

    系统版本:Ubuntu 16.04 JDK版本:jdk1.8.0_121 1.官网下载JDK文件jdk-8u121-linux-x64.tar.gz 我这里下的是最新版,其他版本也可以 2.创建一个目 ...

  6. Unity - Cinemachine实现相机抖动

    普通相机抖动脚本较易实现,但在使用cinemachine相机下,其Transform组件不可被代码改变,那么Cinemachine的相机抖动如何实现呢?本文结合实际项目,对实现相机抖动的三大步骤进行系 ...

  7. window系统下删除多余的引导

    window系统下删除多余的引导 1.首先第一步进入EFI分区删除多余系统引导,只留下需要的引导 如何进入EFI分区 a)win 搜索框输入cm, 右键以管理员运行命令行 b)输入命令 diskpar ...

  8. 小白学 Python 爬虫(5):前置准备(四)数据库基础

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  9. PostGIS 用Navicat工具添加自增

    1.新建查询,新增序列(从66开始,每次自增1): CREATE SEQUENCE seq_area INCREMENT 1 MINVALUE 66 MAXVALUE 999999999 START ...

  10. JavaScript笔记十二

    1.DOM对CSS的操作 - 读取和修改内联样式 - 使用style属性来操作元素的内联样式 - 读取内联样式: 语法:元素.style.样式名 - 例子: 元素.style.width 元素.sty ...