A过水,不讲

题解 CF1077B 【Disturbed People】

  • 这题就是个显而易见的贪心可是我考场上差点没想出来
  • 显然把一户被打扰的人家的右边人家的灯关掉肯定比把左边的灯关掉
  • 从左到右扫一遍,每次如果遇到一户被打扰的人家就ans++,然后把它右边的灯关掉
  • 然后就做完了
# include <bits/stdc++.h>

int a[101];

int main()
{
int n;
int ans = 0;
scanf("%d", &n);
for(int i = 1; i <= n; i++)
scanf("%d", &a[i]);
for(int i = 2; i <= n - 1; i++)
{
if (a[i] == 0 && a[i - 1] == 1 && a[i + 1] == 1)
ans++, a[i + 1] = 0;//关右边的灯
}
printf("%d\n", ans);
return 0;
}

题解 CF1077C 【Good Array】

  • 个人觉得这题比B还水
  • 先排下序,扫一遍\(1-n\)
  • 对于每个数\(i\),如果\(i \neq n\),则当\(\sum_{j=1}^na[j]-a[i]=2*a[n]\)时满足条件
  • 不然要是\(i = n\)的话,当\((\sum_{j=1}^na[j])-a[n]=2*a[n-1]\)时满足条件
  • 判断一下就好了
# include <bits/stdc++.h>

# define ll long long

struct p
{
int id;
ll x;
}; p a[200001]; int cmp(p x, p y){return x.x < y.x;} std::vector<int> vec; int main()
{
int n;
ll sum = 0;
scanf("%d", &n);
for(int i = 1; i <= n; i++)
scanf("%d", &a[i].x), a[i].id = i, sum += a[i].x;
std::sort(a + 1, a + n + 1, cmp);
for(int i = 1; i <= n; i++)
{
if(i != n)//情况1
{
if(sum - a[n].x - a[i].x == a[n].x)
vec.push_back(a[i].id);
}
else //情况2
{
if (sum - a[n - 1].x - a[i].x == a[n - 1].x)
vec.push_back(a[i].id);
}
}
if(vec.size())
{
printf("%d\n", vec.size());
for(int i = 0; i < vec.size(); i++)
printf("%d ", vec[i]);
}
else
printf("0");
return 0;
}

题解 CF1077D 【Cutting Out】

  • 昨晚刚打的场,感触深刻啊

  • 昨天打的时候死命WA16结果才发现16是\(n=k\)的的点

  • \(rp--,rating-=inf\)

  • 好了说正事

  • 这道题我们可以枚举删除次数,发现满足单调性,果断二分

  • check扫一遍\(1-200000\),对于每个数i,每次将序列长度加上(i出现的次数/当前check的删除次数),如果序列长度\(\ge k\)就return true;否则return false;

  • 在二分时处理一下答案即可

  • 其实用不着queue,但已经STL依赖症了qwq

#include <bits/stdc++.h>

int n, k;
int a[200010], ans[200010];
int s[200010];
std::queue<int> st; int check(int x)
{
while(!st.empty())
st.pop();
for(int i = 1; i <= 200000; i++)
for(int j = s[i] / x; j; j--)//能加的全部加进去
st.push(i);
if(st.size() >= k)//满足条件
{
for(int i = 1; i <= k; i++)
ans[i] = st.front(), st.pop();
return true;
}
return false;
} int main()
{
scanf("%d%d", &n, &k);
for (int i = 1; i <= n; i++)
scanf("%d", &a[i]), s[a[i]]++;
int l = 0, r = 200001;
while (l < r)//二分
{
int mid = (l + r + 1) >> 1;
if (check(mid))
l = mid;
else
r = mid - 1;
}
for (int i = 1; i <= k; i++)
printf("%d ", ans[i]);
return 0;
}

Codeforces Round #521 (Div.3)题解的更多相关文章

  1. Codeforces Round #182 (Div. 1)题解【ABCD】

    Codeforces Round #182 (Div. 1)题解 A题:Yaroslav and Sequence1 题意: 给你\(2*n+1\)个元素,你每次可以进行无数种操作,每次操作必须选择其 ...

  2. Codeforces Round #608 (Div. 2) 题解

    目录 Codeforces Round #608 (Div. 2) 题解 前言 A. Suits 题意 做法 程序 B. Blocks 题意 做法 程序 C. Shawarma Tent 题意 做法 ...

  3. Codeforces Round #525 (Div. 2)题解

    Codeforces Round #525 (Div. 2)题解 题解 CF1088A [Ehab and another construction problem] 依据题意枚举即可 # inclu ...

  4. Codeforces Round #528 (Div. 2)题解

    Codeforces Round #528 (Div. 2)题解 A. Right-Left Cipher 很明显这道题按题意逆序解码即可 Code: # include <bits/stdc+ ...

  5. Codeforces Round #521 (Div. 3) E. Thematic Contests(思维)

    Codeforces Round #521 (Div. 3)  E. Thematic Contests 题目传送门 题意: 现在有n个题目,每种题目有自己的类型要举办一次考试,考试的原则是每天只有一 ...

  6. Codeforces Round #466 (Div. 2) 题解940A 940B 940C 940D 940E 940F

    Codeforces Round #466 (Div. 2) 题解 A.Points on the line 题目大意: 给你一个数列,定义数列的权值为最大值减去最小值,问最少删除几个数,使得数列的权 ...

  7. Codeforces Round #677 (Div. 3) 题解

    Codeforces Round #677 (Div. 3) 题解 A. Boring Apartments 题目 题解 简单签到题,直接数,小于这个数的\(+10\). 代码 #include &l ...

  8. Codeforces Round #665 (Div. 2) 题解

    Codeforces Round #665 (Div. 2) 题解 写得有点晚了,估计都官方题解看完切掉了,没人看我的了qaq. 目录 Codeforces Round #665 (Div. 2) 题 ...

  9. Codeforces Round #160 (Div. 1) 题解【ABCD】

    Codeforces Round #160 (Div. 1) A - Maxim and Discounts 题意 给你n个折扣,m个物品,每个折扣都可以使用无限次,每次你使用第i个折扣的时候,你必须 ...

随机推荐

  1. 关于Python的导入覆盖解决办法

    这种问题一般来说还是不会引起的,可能会出现在datetime和time这样类型的模块中. 例如: import datetime from datetime import datetime 如果写在一 ...

  2. 【百度之星2019】Strassen

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6719 在本题中,我们只有两种方法计算两个的矩阵的乘积,第一种为定义法,需要次乘法和次加法.第二种为 ...

  3. 【Scratch】编程?一节课就教会你!其实我们不用一个个学习如何使用代码。

    第199篇文章 老丁的课程 在很多教程里面,大家都喜欢把模块拿出来一个个讲述其功能. 这样做的好处是,可以把每个代码模块的功能讲的很清楚.但最最讨厌的问题也随之而来…… 举个例子,当你学习英语的时候, ...

  4. 跟我一起学编程—《Scratch编程》第22课:颠弹力球

    1. 能够熟练绘制角色和背景造型 2. 能够熟练控制角色角度.速度等 3. 能够熟练使用变量 4. 能够熟练使用循环.选择等指令控制程序 任务描述: 1. 绘制弹力小球.托板角色,背景造型. 2. 游 ...

  5. 调整统计信息JOB采样时间

    一.需求说明 Oracle数据库中存在定时JOB,自动执行收集统计信息的程序.但是对于7*24小时系统来说,Oracle配置的定时收集时间不太合理,需要人为调整.本篇博客就是基于这种需求,调整JOB采 ...

  6. angular 源码 <一> rotuerLinkActive

    这几篇,查看angular 源码. rotuerLinkActive 是路由的样式设置. 它的值是 css 的一个类.或者几个类. 主要代码如下 @Input() set routerLinkActi ...

  7. 【原创】大叔经验分享(84)spark sql中设置hive.exec.max.dynamic.partitions无效

    spark 2.4 spark sql中执行 set hive.exec.max.dynamic.partitions=10000; 后再执行sql依然会报错: org.apache.hadoop.h ...

  8. Lua 可变参数 ... 的一点测试

    function test( ... ) if (...) then dibug("has ...") else dibug("no ...") end for ...

  9. 使用NSFileManager管理文件系统

    文件系统作为被所有进程使用的基本资源之一,在macOS和iOS中主要用于处理数据文件.应用程序以及与操作系统自身相关的持久存储. iOS中的文件系统格式为HFS Plus,macOS中的主要格式也是H ...

  10. MySQL数据库的启动与停止

    有时候我们在任务管理器中无意识的结束了数据库的程序,再用可视化工具连接 时就会显示NO CONNECTION的情况,这样就需要重启数据库服务. 1. 我的电脑右键->管理->服务和应用程序 ...