题目地址: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. Chrome Extension 小试牛刀

    自从有了Chrome以后,就喜欢上了这个浏览器,从此IE 886了. 以前作爬虫,做登录,做数据采集,做数据处理等各种功能,后来H5出来后,出现了,除了Session/Cookie 出了Local S ...

  2. PowerMock学习(三)之Mock局部变量

    编写powermock用例步骤: 类上面先写这两个注解@RunWith(PowerMockRunner.class).@PrepareForTest(StudentService.class) 先模拟 ...

  3. WeTest明星工具-移动端性能测试PerfDog初探

    在十一月初,腾讯就官宣了一则消息,腾讯WeTest明星工具-PerfDog面向全球发布.官宣介绍如下:https://wetest.qq.com/lab/view/475.html.我在看到该新闻时, ...

  4. Spring中常见的设计模式——原型模式

    1.原型模式应用场景 当遇到大量耗费劳动力的 get,set赋值场景时,如下: public class SetGetParam { public void setParam(UserDto user ...

  5. mybatis源码学习(一) 原生mybatis源码学习

    最近这一周,主要在学习mybatis相关的源码,所以记录一下吧,算是一点学习心得 个人觉得,mybatis的源码,大致可以分为两部分,一是原生的mybatis,二是和spring整合之后的mybati ...

  6. 极化码之tal-vardy算法(1)

    继前两节我们分别探讨了极化码的编码,以及深入到高斯信道探讨高斯近似法之后,我们来关注一个非常重要的极化码构造算法.这个算法并没有一个明确的名词,因此我们以两位发明者的名字将其命名为“Tal-Vardy ...

  7. CCNA 之 十 ACL 访问控制列表

    ACL 访问控制列表 ACL(Access Control List) 接入控制列表 ACL 的量大主要功能: 流量控制 匹配感兴趣流量 标准访问控制列表 只能根据源地址做过滤 针对曾哥协议采取相关动 ...

  8. 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU启动那些事(4)- OTP及其烧写方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的OTP. 在i.MXRTxxx启动系列第二篇文章 Boot配置(ISP Pin, OTP) 里痞子 ...

  9. Chapter 01—Introduction to R

    1.getwd():list the current working directory. (即获得当前工作路径) 2.setwd("mydirectory"):change th ...

  10. css多行文本溢出显示省略号(兼容ie)

    在日常编写页面中,我们经常遇到内容行数过多时,需要出现 “...” 来处理.但是又要考虑IE浏览器或IE内核浏览器的兼容性. 普通实现方法: display: -webkit-box; -webkit ...