A. Heating (水题)

题目链接

大致思路:

因为是代价是平方,所以让每一个房间的大小平均即可,即最大和最小相差不超过一。

代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n;
int main()
{
//freopen("H:\\c++1\\in.txt","r",stdin);
//freopen("H:\\c++1\\out.txt","w",stdout);
ll c,sum;
scanf("%lld",&n);
while(n--){
scanf("%lld%lld",&c,&sum);
ll s=sum/c,yu=sum%c,ans=0;
//cout<<s<<" "<<yu<<endl;
for(int i=1;i<=min(c,sum);i++){
if(yu){
ans+=(s+1)*(s+1);yu--;
}else{
ans+=(s)*(s);
}
}
printf("%lld\n",ans);
}
return 0;
}

B. Obtain Two Zeroes (找结论)

题目链接

大致思路:

首先观察到 \((0,0)\) 态是可行的,那么其可以转移到的状态也是可行的,由于是加上 \(,x,2x\) ,那么 \((a,b)\) 的 \(a+b\) 必然是 \(3\) 的倍数,而且可以知道较大数不能大于较小的数两倍,虽然这只是必要条件,还是不够严谨,但是能过。

代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
//freopen("H:\\c++1\\in.txt","r",stdin);
//freopen("H:\\c++1\\out.txt","w",stdout);
int n,a,b;
scanf("%d",&n);
while(n--){
scanf("%d%d",&a,&b);
if((a+b)%3==0&&max(a,b)<=2*min(a,b)){
puts("YES");
}
else puts("NO"); }
return 0;
}

C. Infinite Fence (数学)

题目链接

大致思路:

假设 \(r>b\) ,主要是判断在 \((m1*r,(m1+1)*r)\) 之中b的倍数最多出现多次。所以要找到一个 \(m*b\%r\) 的最小值,可以知道这个值就是 \(gcd(b,r)\) ,那么我们其实就是判断 \(gcd(b,r)+(k-1)*b\) 和 \(r\) 的关系就行了。

代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std; ll gcd(ll a,ll b){
return b==0?a:gcd(b,a%b);
}
ll T,r,b,k;
int main()
{
//freopen("H:\\c++1\\in.txt","r",stdin);
//freopen("H:\\c++1\\out.txt","w",stdout);
scanf("%lld",&T);
while(T--){
scanf("%lld%lld%lld",&r,&b,&k);
if(r==b){ // 特判一个相等的情况,不够其实不用好像
puts("OBEY");continue;
}
if(r<b)swap(r,b);
if(r%b==0){
if(k*b<r){
puts("REBEL");
}else puts("OBEY");
continue;
}
ll g=gcd(r,b);
if(g+(k-1)*b<r){
puts("REBEL");
}else puts("OBEY");
}
return 0;
}

D. A Game with Traps (二分+贪心)

题目链接

大致思路:

首先最容易想的二分带的人数,然后进行判断,重点是怎么判断。发现无论如何部队必然要走 \(n+1\)步,那么我们可以不用去管,那么对于两个雷 \((l_1,r_1),(l_2,r_2)\), 如果 \(l_2<=r_1\) ,那么最优的方法就是一次性走到 \(r_2\) 再回来带人,否则就正常模拟。

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
int a[N];
int n,m,k,t;
struct node{
int l,r,d;
node(int a=0,int b=0,int c=0){l=a,r=b,d=c;}
}lei[N];
vector<node>tt;
bool cmp(node a,node b){
return a.l<b.l;
}
bool check(int x){
tt.clear();
int nl=a[x];
for(int i=1;i<=k;i++)if(lei[i].d>nl)tt.push_back(lei[i]);//有危险的雷
if(tt.size()==0)return 1;
int ans=n+1,mx=0,now=tt[0].l-1;//部队行动距离必然要为n+1
for(int i=0;i<int(tt.size());i++){
mx=tt[i].r;
int j=i+1;
while(j<int(tt.size())&&tt[j].l<=mx)mx=max(mx,tt[j].r),j++;//有交集
ans+=(mx-now)*2;
now=tt[j].l-1;//更新
i=j-1;
}
//cout<<x<<" "<<ans<<endl;
if(ans<=t)return 1;//比较
else return 0;
}
int main()
{
//freopen("H:\\c++1\\in.txt","r",stdin);
//freopen("H:\\c++1\\out.txt","w",stdout);
scanf("%d%d%d%d",&m,&n,&k,&t);
for(int i=1;i<=m;i++)scanf("%d",&a[i]);
sort(a+1,a+1+m);//按能力排序
reverse(a+1,a+1+m);//降序
for(int i=1;i<=k;i++){
scanf("%d%d%d",&lei[i].l,&lei[i].r,&lei[i].d);
}
sort(lei+1,lei+1+k,cmp);//按l排序
int ans=0,l=1,r=m;
while(l<=r){//二分
int mid=(l+r)/2;
if(check(mid)){
ans=mid;l=mid+1;
}else r=mid-1;
}
printf("%d\n",ans);
return 0;
}

E. Tournament (贪心)

题目链接

大致思路:

我们发现每一轮都会淘汰一些人,我们的贪心策略就是让力量大的人尽量淘汰更多的人,那么我们就可以减少花费,而且在 \(k\) 轮,对于前 \(2^k-1\) 个人我们就不能选择,因为他们必定淘汰,所以我们从后面开始,每次选择我们可以选择的人花费最小的就行。

代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=(1<<20);
int n;
int a[N];
int vis[N];
multiset<int>s;
int main()
{
/* freopen("H:\\c++1\\in.txt","r",stdin);
freopen("H:\\c++1\\out.txt","w",stdout);
*/ scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
for(int i=0;(1<<i)<=n;i++)vis[(1<<i)]=1;
ll ans=0;
for(int i=n;i>=1;i--){
if(a[i]==-1)break;
s.insert(a[i]);
if(vis[i]){//选择可以选的代价最小的人
ans+=*(s.begin());
s.erase(s.begin());
}
}
printf("%lld\n",ans);
return 0;
}

CF-Educational Codeforces Round 77 (Rated for Div. 2)(A-E题解)的更多相关文章

  1. 【cf比赛记录】Educational Codeforces Round 77 (Rated for Div. 2)

    比赛传送门 这场题目前三题看得挺舒服的,没有臃肿的题目,对于我这种英语渣渣就非常友好,但因为太急了,wa了两发A后才意识到用模拟(可以删了,博主真的是个菜鸟),结果导致心态大崩 ---- 而且也跟最近 ...

  2. Educational Codeforces Round 77 (Rated for Div. 2) D A game with traps

    题意:x正轴上有着一个陷阱的位置,开关和灵敏度,如果一个士兵灵敏度输给陷阱,他是过不去这个陷阱的幸运的是,你可以先过去把开关给关了,没错你是不怕陷阱的接下来呢你有操作,你移动一个,耗费一秒而你的团队需 ...

  3. Educational Codeforces Round 77 (Rated for Div. 2)

    A: 尽可能平均然后剩下的平摊 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int ...

  4. Codeforce |Educational Codeforces Round 77 (Rated for Div. 2) B. Obtain Two Zeroes

    B. Obtain Two Zeroes time limit per test 1 second memory limit per test 256 megabytes input standard ...

  5. Educational Codeforces Round 77 (Rated for Div. 2)D(二分+贪心)

    这题二分下界是0,所以二分写法和以往略有不同,注意考虑所有区间,并且不要死循环... #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> ...

  6. Educational Codeforces Round 77 (Rated for Div. 2) - D. A Game with Traps(二分)

    题意:$m$个士兵,每个士兵都有一个灵敏度$a[i]$,起点为$0$,终点为$n + 1$,在路上有$k$个陷阱,每个陷阱有三个属性$l[i],r[i],d[i]$,$l[i]$表示陷阱的位置,如果你 ...

  7. Educational Codeforces Round 77 (Rated for Div. 2) C. Infinite Fence

    C. Infinite Fence 题目大意:给板子涂色,首先板子是顺序的,然后可以涂两种颜色,如果是r的倍数涂成红色,是b的倍数涂成蓝色, 连续的k个相同的颜色则不能完成任务,能完成任务则输出OBE ...

  8. Educational Codeforces Round 61 (Rated for Div. 2) D,F题解

    D. Stressful Training 题目链接:https://codeforces.com/contest/1132/problem/D 题意: 有n台电脑,每台电脑都有初始电量ai,也有一个 ...

  9. Educational Codeforces Round 81 (Rated for Div. 2) A-E简要题解

    链接:https://codeforces.com/contest/1295 A. Display The Number 贪心思路,尽可能放置更多位,如果n为奇数,消耗3去放置一个7,剩下的放1 AC ...

  10. Educational Codeforces Round 65 (Rated for Div. 2)题解

    Educational Codeforces Round 65 (Rated for Div. 2)题解 题目链接 A. Telephone Number 水题,代码如下: Code #include ...

随机推荐

  1. 一篇常做错的经典JS闭包面试题

    作者 | Jeskson 来源 | 达达前端小酒馆 1 究竟是怎么样的一道面试题,能让我拿出来说说呢?下面请看代码: function fun(a,b) { console.log(b) return ...

  2. gitlab 从古老的 bitnami 版本 迁移到官方最新版本

    这是我之前发布在 yuque 的文章.是我刚来新公司的时候帮公司搬迁 git 记录下来的,现在看来去掉敏感部分直接发布也没啥问题啦,就搬家过来,我自己也方便查 XD . 8.1.6 -> 10. ...

  3. X86 下的SSDT HOOK

    目录 SSDTHOOK 1.SSDTHOOK 原理. 1.x32下的SSDT HOOK 2.SSDT HOOK代码 3.结果 4.总结 SSDTHOOK 1.SSDTHOOK 原理. x32下,直接获 ...

  4. TensorFlow安装笔记(CPU版)

    新电脑配环境又出了问题. 先是装了最新版anaconda,python3.7的版本.——2019.10.21 然后conda install TensorFlow,conda install kera ...

  5. Eclipse4.9集成Tomcat 9.0.21详细版

    1.下载Tomcat 从Tomcat官网下载:https://tomcat.apache.org 此处我下载的版本是Tomcat 7.0.94 下载完毕后解压即可,我解压后的路径是D:\soft\ap ...

  6. mongo helper

    import datetime import pymongo import click # 数据库基本信息 db_configs = { 'type': 'mongo', 'host': '127.0 ...

  7. ubuntu之路——day19.2 开源框架与迁移、CNN中的数据扩充

    开源框架与迁移 上面介绍了一些已经取得很好成绩的CNN框架,我们可以直接从GitHub上下载这些神经网络的结构和已经在ImageNet等数据集上训练好的权重超参数. 在应用于我们自己的数据时. 1.如 ...

  8. 11 JavaScript Utility Libraries you Should Know in 2019

    11 Useful Javascript utility libraries to speed your development.

  9. 【FPGA】always (*) 后代码全部显示注释字体的颜色之解决方法

    2015年08月26日 09:44:05 风雨也无晴 阅读数:1289    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/scottly1/art ...

  10. Web打印的解决方案之证件套打

    由于以前未接触过套打,一直觉得套打是一个比较神秘和麻烦的事情,因为打印机的位置总是需要调整的,你总不能硬编码吧?但是如果位置可调,有需要直观一些来处理,那就比较麻烦了. 在前面介绍过<Web打印 ...