第一题会卡一下同时用set和cin。。

其他的注意下矩阵对角线下标的应用即可

#include<bits/stdc++.h>
using namespace std;
#define maxn 2005
int mp1[maxn][maxn],n,m,mp2[maxn][maxn];
vector<int>s1[maxn],s2[maxn];
int main(){
cin>>n>>m;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
scanf("%d",&mp1[i][j]),s1[i+j].push_back(mp1[i][j]);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
scanf("%d",&mp2[i][j]),s2[i+j].push_back(mp2[i][j]); for(int i=;i<=n+m;i++){
sort(s1[i].begin(),s1[i].end());
sort(s2[i].begin(),s2[i].end());
if(s1[i]!=s2[i]){
puts("NO");
return ;
}
}
puts("YES");
}
/*
问题可转化为有多少个点可以把最后一个点(n)推移上来
按位置将所有点排序,建立一个集合s
起初将最后一个点放在集合里,然后倒序访问之前的结点,
如果结点i可以将n推上来,那么之后的结点j再要将n推上来时就不用考虑i,
否则需要考虑j是否可以推到i后面,再然后将n推上来
如果之前结点i有边到达集合里的所有点,那么这个结点就可以把点n推上来,
如果不行,这个点i放入集合中
复杂度分析:每条边都会在集合里判断一次,mlogn
*/
#include<bits/stdc++.h>
#include<set>
using namespace std;
#define maxn 500005
int m,n,pos[maxn],id[maxn];
set<int>s,G[maxn];
set<int>::iterator it; int main(){
cin>>n>>m;
for(int i=;i<=n;i++)
scanf("%d",&id[i]),pos[id[i]]=i;
int u,v;
for(int i=;i<=m;i++){
scanf("%d%d",&u,&v);
G[u].insert(v);
} int ans=;
s.insert(id[n]);
for(int i=n-;i>=;i--){
int cur=id[i],flag=;
for(it=s.begin();it!=s.end();it++)
if(G[cur].find(*it)==G[cur].end()){
flag=;
s.insert(cur);
break;
}
if(!flag)ans++;
}
cout<<ans<<endl;
}

e也太难了。。留个坑吧

补坑。。区间覆盖线段树调了半天,最后发现有个地方没写long long ...气死我了.

所以总结一下,,区间覆盖和区间更新的pushdown还是有点差距的,,还有本题的lazy初始值要设为INF

/*
给定数组a1...an, k1...kn-1
两种操作:
第一种为ai+x,完成本次操作后若ai+1<ai+ki,则ai+1=ai+ki,以此类推
即后面的数不得小于前面的数+ki
第二种为求和操作
推导公式可得a1<=a2-sumk1<=a3-sumk2<=a4-sumk3...<=an-sumkn-1
令 bi=ai-sumki-1
b1<=b2<=b3<=b4...<=bn
ai+x <=> bi+x,同时所有在bi后面且小于bi+x的数都要变成bi+x
所以直接用lower_bound找到第一个不小于bi+x的数
用线段树维护bi,进行区间覆盖操作
query时先query 区间bi的和,再使用前缀和求出区间sumki的值
注意lazy
*/
#include<bits/stdc++.h>
using namespace std;
#define maxn 200005
#define ll long long
ll n,m,a[maxn],k[maxn],b[maxn],sumk[maxn],sumkk[maxn];
#define INF 1e18
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
ll sum[maxn<<],lazy[maxn<<];
inline void pushup(int rt){
sum[rt]=sum[rt<<]+sum[rt<<|];
}
inline void pushdown(int l,int r,int rt){
if(lazy[rt]!=INF+){
int m=l+r>>;
sum[rt<<]=lazy[rt]*(m-l+);
sum[rt<<|]=lazy[rt]*(r-m);
lazy[rt<<]=lazy[rt];
lazy[rt<<|]=lazy[rt];
lazy[rt]=INF+;
}
}
void build(int l,int r,int rt){
lazy[rt]=INF+;
if(l==r){sum[rt]=b[l];return;}
int m=l+r>>;
build(lson);build(rson);
pushup(rt);
}
void modify(int L,int R,ll val,int l,int r,int rt){
if(L<=l&&R>=r){
lazy[rt]=val;sum[rt]=val*(r-l+);
return;
}
pushdown(l,r,rt);
int m=l+r>>;
if(L<=m)modify(L,R,val,lson);
if(R>m)modify(L,R,val,rson);
pushup(rt);
} ll query(int L,int R,int l,int r,int rt){
if(L<=l && R>=r)return sum[rt];
pushdown(l,r,rt);
int m=l+r>>;
ll res=;
if(L<=m)res+=query(L,R,lson);
if(R>m)res+=query(L,R,rson);
return res;
}
void add(int i,ll val){
if(val==)return;
ll cur=query(i,i,,n,)+val;//查询第l个点当前值
int l=i,r=n,mid,ans=l;//查询最右边的比cur小的数
while(l<=r){
mid=l+r>>;
if(query(mid,mid,,n,)<cur)
ans=mid,l=mid+;
else r=mid-;
}
modify(i,ans,cur,,n,);
}
int main(){
cin>>n;
for(int i=;i<=n;i++)cin>>a[i];
for(int i=;i<n;i++)cin>>k[i];
for(int i=;i<=n;i++)sumk[i]=sumk[i-]+k[i-];
for(int i=;i<=n;i++)b[i]=a[i]-sumk[i];
for(int i=;i<=n;i++)sumkk[i]=sumkk[i-]+sumk[i];
build(,n,);
cin>>m;
while(m--){
char op[];ll l,r;
cin>>op>>l>>r;
if(op[]=='+')add(l,r);
else cout<<query(l,r,,n,)+sumkk[r]-sumkk[l-]<<"\n";
}
return ;
}

cf round546 cde的更多相关文章

  1. cf round599 CDE

    C:结论题:设n=k*p1+r=a*p2+b,只要n有两个及以上质因子,那么必然可以用第一个质因子表示出第二个质因子,所以答案是1 反之显然是其最小质因子 /* 1 2 3 4 1 3 2 4 n的所 ...

  2. petrozavodsk summer 2018 游记&&总结

    day0: 出发前训了一场比较水bapc2017保持手感(恢复信心),成功AK了,不过罚时略高.然后三人打车从紫金港到杭州东站,坐高铁到上海虹桥,再坐机场快线到浦东机场(傻乎乎的jsb帮爸爸付了钱,然 ...

  3. CF 987

    毒瘤啊啊啊啊啊 虽然排名还不错,331,但是B我没做出来...... 这是战绩: 可以看到我大发神威势如破竹的A了CDE,但是B把我卡了三次...不然我就能进前300了(还是很水). 逐一分析题目: ...

  4. 关于cf[转]

    还不怎么熟悉cf呢.. 你应当知道的关于Codeforces的事情 Codeforces简称: cf(所以谈论cf的时候经常被误会成TX的那款游戏).网址: codeforces.com 这是一个俄国 ...

  5. ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1, osid 5166'

    凌晨收到同事电话,反馈应用程序访问Oracle数据库时报错,当时现场现象确认: 1. 应用程序访问不了数据库,使用SQL Developer测试发现访问不了数据库.报ORA-12570 TNS:pac ...

  6. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  7. cf Round 613

    A.Peter and Snow Blower(计算几何) 给定一个点和一个多边形,求出这个多边形绕这个点旋转一圈后形成的面积.保证这个点不在多边形内. 画个图能明白 这个图形是一个圆环,那么就是这个 ...

  8. ARC下OC对象和CF对象之间的桥接(bridge)

    在开发iOS应用程序时我们有时会用到Core Foundation对象简称CF,例如Core Graphics.Core Text,并且我们可能需要将CF对象和OC对象进行互相转化,我们知道,ARC环 ...

  9. [Recommendation System] 推荐系统之协同过滤(CF)算法详解和实现

    1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...

随机推荐

  1. Springboot(一)概念

    一.概念 Spring boot 用来简化新Spring应用的初始搭建和开发配置. 二.特性 1.创建独立的Spring应用程序,不是对spring功能增强,而是提快速使用Spring的功能: 2.嵌 ...

  2. centOS7 tomcat 开机自启 自启动设置

    1.编写配置文件 // (1)修改tomcat.service vim /lib/systemd/system/tomcat.service // (2)复制以下代码,注意修改tomcat路径 [Un ...

  3. SFTP远程连接服务器上传下载文件-qt4.8.0-vs2010编译器-项目实例

    本项目仅测试远程连接服务器,支持上传,下载文件,更多功能开发请看API自行开发. 环境:win7系统,Qt4.8.0版本,vs2010编译器 qt4.8.0-vs2010编译器项目实例下载地址:CSD ...

  4. android 控件设置透明度

    问题:java文件中引用组件设置透明度:mGuideLayout.getBackground().setAlpha(125); 一直报null 修改办法:对应的布局文件中添加 android:back ...

  5. WebBrowser控件的NavigateToString()方法 参数 为中文时乱码问题的解决。

    public static string ConvertExtendedASCII(string HTML) { StringBuilder str = new StringBuilder(); ch ...

  6. docker部署Javaweb环境数据库连接问题

    最近在docker部署了一个Javaweb项目运行的环境,在容器中部署了mysql和Javaweb项目,但是本地可以跑项目,放到容器里面不行. 具体报错内容是不能访问数据库. Could not ge ...

  7. Pytorch Visdom

    fb官方的一些demo 一.  show something 1.  vis.image:显示一张图片 viz.image( np.random.rand(3, 512, 256), opts=dic ...

  8. Linux 指定运行时动态库路径【转】

    转自:http://www.cnblogs.com/cute/archive/2011/02/24/1963957.html 众所周知, Linux 动态库的默认搜索路径是 /lib 和 /usr/l ...

  9. VC,VB操作XML

    TCHAR buffer[MAX_PATH] = {}; ::GetModuleFileName(NULL, buffer, MAX_PATH); CString strPath = buffer; ...

  10. Apollo-3.0本地编译

    Apollo-3.0本地编译 用docker编译所用的dev.x86_64.dockerfile文件(具体位置在apollo/docker/build)中有所有的依赖库或包, 还会执行一些shell脚 ...