A.(c1=0&&c3>0)||(c1!=c4)

 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#define rep(i,l,r) for (int i=(l); i<=(r); i++)
typedef long long ll;
using namespace std; int c1,c2,c3,c4; int main(){
freopen("a.in","r",stdin);
freopen("a.out","w",stdout);
scanf("%d%d%d%d",&c1,&c2,&c3,&c4);
if ((!c1 && c3) || c1!=c4) puts(""); else puts("");
return ;
}

A

B.每次免费的显然应该是第n-q+1大的那个。

 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#define rep(i,l,r) for (int i=(l); i<=(r); i++)
typedef long long ll;
using namespace std; const int N=;
int n,m,x,a[N];
ll sm; int main(){
scanf("%d",&n);
rep(i,,n) scanf("%d",&a[i]),sm+=a[i];
sort(a+,a+n+); scanf("%d",&m);
rep(i,,m) scanf("%d",&x),cout<<sm-a[n-x+]<<endl;
return ;
}

B

C.正难则反,先计算所有区间的并集sm,再计算最少要使多长区间不被覆盖ans,答案即sm-ans。

考虑枚举区间i,j,那么不涂这两个区间会使b[i]+b[j]+c[i][j]的区间不被覆盖。其中b[i]为只能由第i个区间覆盖的区间长度,c[i][j]为只能被i,j两个区间覆盖的区间长度。先O(nq)预处理出b,c,再O(q^2)计算答案即可。

 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#define rep(i,l,r) for (int i=(l); i<=(r); i++)
typedef long long ll;
using namespace std; const int N=;
int n,m,l,r,sm,ans,x[N],y[N],b[N],mp[N][N]; int main(){
scanf("%d%d",&n,&m); ans=n+;
rep(i,,m){
scanf("%d%d",&l,&r);
rep(j,l,r){
if (y[j]) x[j]=y[j]=-;
if (x[j] && !y[j]) y[j]=i;
if (!x[j]) x[j]=i;
}
}
rep(i,,n){
if (x[i]) sm++;
if (x[i]> && !y[i]) b[x[i]]++;
if (x[i]> && y[i]>) mp[x[i]][y[i]]++,mp[y[i]][x[i]]++;
}
rep(i,,m) rep(j,,m) if (i!=j) ans=min(ans,b[i]+b[j]+mp[i][j]);
printf("%d\n",sm-ans);
return ;
}

C

D.二分答案,每次找到最先降到0以下的那个同学充电。

 #include<queue>
#include<cstdio>
#include<iostream>
#include<algorithm>
#define rep(i,l,r) for (int i=(l); i<=(r); i++)
typedef long long ll;
using namespace std; const int N=;
int n,k;
ll mx,a[N],b[N];
struct P{ ll a,b,r; };
bool operator <(const P &a,const P &b){ return a.r>b.r; }
priority_queue<P>Q; bool chk(ll mid){
while (!Q.empty()) Q.pop();
rep(i,,n) Q.push((P){a[i],b[i],a[i]/b[i]});
rep(t,,k){
P x=Q.top(); Q.pop();
if (x.a/x.b+<t) return ;
if (x.a/x.b+>=k) return ;
Q.push((P){x.a+mid,x.b,(x.a+mid)/x.b});
}
return ;
} int main(){
ios::sync_with_stdio();
cin>>n>>k;
rep(i,,n) cin>>a[i];
rep(i,,n) cin>>b[i],mx=max(mx,b[i]);
ll L=,R=(k-)*mx+;
while (L<R){
ll mid=(L+R)>>;
if (chk(mid)) R=mid; else L=mid+;
}
if (L>=(k-)*mx+) puts("-1"); else cout<<L<<endl;
return ;
}

D

最新文章

  1. MySQL ROOT密码更改
  2. js 10秒倒计时 功能
  3. ExtJs4 笔记(4) Ext.XTemplate 模板
  4. ImageLoader 图片加裁
  5. 【JavaScript】JavaScript模拟Class
  6. .NET判断某一年的所有放假的日期
  7. [Jquery] js获取浏览器滚动条距离顶端的距离
  8. 《javascript权威指南》读书笔记 -part2
  9. cvpr2017:branchout——基于CNN的在线集成跟踪
  10. 【bzoj4571 scoi2016】美味
  11. MySQL源码包编译安装
  12. efcore migration
  13. 【Apache Pulsar】Apache Pulsar单机环境及Go语言开发环境搭建
  14. java通过jdbc访问mysql,update数据返回值的思考
  15. 从navicat中导入sql文件过大:Got a packet bigger than &#39;max_allowed_packet&#39; bytes
  16. Android Studio主题设置、颜色背景配置
  17. hive sql split 分隔符
  18. [Tyvj 模拟赛] 运
  19. Python中替换的三种方法
  20. 一个Servlet处理增删改查的方法

热门文章

  1. R获取指定GO term和KEGG pathway的gene list基因集
  2. Class as decorator in python
  3. Flutter ExpansionPanel 可展开的收缩控件
  4. 【Java】Spring之Resource(三)
  5. 【linux命令之 tail学习】
  6. Python 初级 5 判断再判断
  7. rf安装对应requests库的方法
  8. JS扩展Array.prototype引发的问题及解决方法
  9. web端自动化——selenium3用法详解
  10. 以Redis为例介绍YCSB的使用