首页 > 其他分享 >CF1690E题解

CF1690E题解

时间:2023-09-09 10:45:17浏览次数:35  
标签:cnt CF1690E ++ 题解 cin int while ##

## 主要题意:
有 $n$ 个礼物,要两两合并,然后除以 $k$ 最后求和最大。

## 思路:
先加入每个数除以 $k$ 的商(单独组成 $k$ 的个数),然后全部 $ \bmod \ k$ 存入数组,排序,最后双指针一个前一个后求两个余数可以大于等于 $k$ 的两个礼物。

## 代码:
```cpp
#include <bits/stdc++.h>
using namespace std;

const int Maxn = 2e5 + 5;
int n, t, a[Maxn], k, l, r;
long long cnt;

int main()
{
ios::sync_with_stdio(0);//其实不用快读
cin.tie(), cout.tie();//关同步流即可
cin >> t;
while (t--)
{
cnt = 0;
cin >> n >> k;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
cnt += a[i] / k;//求单独组成k的数
a[i] = a[i] % k;//求余数
}
sort(a + 1, a + 1 + n);//排序
l = 1;
r = n;
while (l < r)
{
while (a[l] == 0)
{
l++;//0是无论如何也不能组成k的
}
while ((a[l] + a[r]) % k == 0 && l < r)//等于时
{
cnt++;
l++;
r--;
}
while (a[l] + a[r] > k && l < r)//大于时(其实可以合并)
{
cnt++;
r--;
l++;
}
while (a[l] + a[r] < k && l < r)//小于
{
l++;
}
}
cout << cnt << "\n";
}
return 0;
}
```

标签:cnt,CF1690E,++,题解,cin,int,while,##
From: https://www.cnblogs.com/mouseboy/p/17689011.html

相关文章

  • CF1690C题解
    ##主要题意:>有$n$个任务,必须在$s_i$到$t_i$之间完成,求每个任务最大可以完成多久(优先前面的最大)。##思路>就拿一个变量记录当前时间,然后贪心选择$a[i].t$和$a[i+1].t$中的最小值,(应为至少也要给下一个任务留$1$的时间),最后做减法,输出即可。##代码>```cpp>#incl......
  • pytest运行警告问题解决:DeprecationWarning: pkg_resources is deprecated as an API
    前言最近在运行pytest的时候,经常出现这个警告DeprecationWarning:pkg_resourcesisdeprecatedasanAPISeehttps://setuptools.pypa.io/en/latest/pkg_resources.htmlfrompkg_resourcesimportiter_entry_points从警告上看是方法被弃用,肯定是因为新版弃用了旧版的语法。......
  • luogu P1419 题解
    题目链接description给定一个长度为\(n\)的序列(值域为\([-10^4,10^4]\))和正整数\(st,ed\)。求一个区间,使得其长度\(\in[st,ed]\)且平均值最大,输出平均值。\(1\leqn\leq10^5\)solution这里给出一个复杂度线性的做法。求出前缀和数组\(s\),答案相当于\(\max\limit......
  • 【题解】CF1830A Copil Copac Draws Trees
    你考虑对于每一条边打上时间标记,然后在树上DFS的时候维护一下以\(u\)为根的答案即可,然后将答案合并,反正很简单,看代码就懂。code:#include<bits/stdc++.h>usingnamespacestd;constintNN=2e5+8;intt,n;structEdge{ intto,next,val;}edge[NN<<1];inthead[......
  • 【题解】CF1854E Game Bundles
    你考虑我们需要构造出一组解,显然地这样的解有很多很多种(\({60^{60}}\)显然是及其地大)。那关键是我们如何进行构造。我们很容易知道每个集合里面\(>30\)的数只有一个。所以我们可以在\([1,30]\)中随机\(a_i\),直到满足的组数恰好小于等于\(a_i\),添加的时候维护数组\(f_i......
  • 【题解】CF1854D Michael and Hotel
    交互题。考虑题意即为找到\(1\)所在内向基环树上的所有点。我们考虑我们怎么找到环上的点,我们考虑我们可以\(O(\logn)\)询问到一个环上的点,方法即为将\(k\)定为一个大数,然后二分点集。然后我们便可以在\(O(n\logn)\)的时间复杂度内找到所有环上的点(我们一会儿再讲怎......
  • 【题解】CF1854C Expected Destruction
    你考虑,我们如果没有重合就将元素删去的操作,我们就有答案:\(n\times(m+1)-\sum\limits_{i=1}^na_i\)但是,我们显然最后的答案是小于这个的,如果有两个数在\(i\)相撞,那么我们的答案就会减少\((m-i+1)\)我们设\(f_{i,j}\)表示两个数分别在\(i\)和\(j\)的概率\((i\leqj......
  • 【疑难解决】运行EasyRTSPSever组件提示程序无法启动问题解决
    RTSP协议以客户服务器方式工作,它是一个多媒体播放控制协议,用来使用户在播放从因特网下载的实时数据时能够进行控制,如:暂停/继续、后退、前进等。因此RTSP又称为“因特网录像机遥控协议”。我们的RTSP-Sever组件EasyRTSPSever就是一款比较便捷的组件。我们有开发者在测试EasyRTSPS......
  • live555作为RTSP流媒体服务器时Server端多track而客户端仅请求一个track,当客户端关闭
    当我们使用live555作为流媒体服务器时,某个通道对应的所有客户端断开后,不能正常回调关闭。某一通道同时支持视频和音频输出,即video和audio两个trackVLC和EasyPlayer播放库来中的RTSPClient则都会请求(所以不存在问题);而某些客户端则只请求了一个track,比如video;此时再关闭......
  • live555做流媒体服务器时解决rtp over udp模式下, 客户端没有发送teardown时直接关闭
    在我们使用live555作为RTSP服务器时,客户端在rtpoverudp模式下,rtsp客户端没有发送teardown而直接断开连接时需要等待65秒才回调关闭的问题。分析问题在RTSPClientConnection中没有保存相应的session值,所以在RTSPClientConnection断开时,并没有删除相应的RTSPClientSession;解......