长安大学第四届“迎新杯”程序设计竞赛 H 圣诞节糖果【二分】

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld

题目描述

圣诞节临近,彩虹岛的黑心商人??????的糖果店又开始热闹了起来,热心的??????来到??????的店里面帮忙包装糖果。店里面共有??堆糖果,其中第??堆有????颗糖果,??????让??????从中选择两堆糖果,这两堆糖果中每?? 颗包装在一起,如果最后还有剩余就归??????所有了,若两堆不足??个则全部归??????所有。作为糖果狂热爱好者,??????当然是想拿走尽量多的糖果,因此他想知道自己最多能够拿走多少糖果。

输入描述:

输入第一行为一个整数??(1 ≤ ?? ≤ 10),表示一共有??组测试数据。对于每组测试数据:第一行有两个整数??(2 ≤ ?? ≤ 105), ??(1 ≤ ?? ≤ 109),分别表示糖果堆数和包装后每包糖果的数量。第二行有??个整数,其中第??个数????(1 ≤ ???? ≤ 109)表示第??堆糖果的数量。

输出描述:

对于每组测试数据,输出一个整数??表示??????能拿走的最多的糖果数目。

示例1

输入

2
4 5
1 4 2 3
4 15
12 19 13 20

输出

4
10

说明

对于第一组样例,??????选择第一堆和第四堆是最佳选择,会剩余4颗糖果。对于第二组样例,??????选择第一堆和第三堆是最佳选择,会剩余10颗糖果。

【分析】:有个技巧,在输入时就可以%p,再排序,二分查找合法的最大【代码】:

#include<stdio.h>
#include<algorithm>
#include <iostream>
#include<string>
#include<math.h>
using namespace std;
int a[100005];
int main()
{
    int n,t,b,c,d,i,max,p,j,low,high;
    cin>>t;
    while(t--)
    {
            cin>>n>>p;
            for(i=0;i<n;i++)
            {
                cin>>a[i];
                a[i]%=p;
            }//每?? 颗包装在一起,
            sort(a,a+n);
            low=0,high=n-1;
            max=(a[n-1]+a[n-2])%p;
            while(low<high)
            {
                while((a[low]+a[high]>=p))//如果两堆糖果中每?? 颗包装在一起,如果最后还有剩余就归??????所有了,
                    high--;
                if(low<high)//两堆不足??个则全部归??????所有
                {
                    if(max<a[low]+a[high])
                         max=a[low]+a[high];
                    low++;
                }
            }
            cout<<max<<‘\n‘;
    }
}

时间: 2024-11-05 10:27:00

长安大学第四届“迎新杯”程序设计竞赛 H 圣诞节糖果【二分】的相关文章

Alice and Bob(2013年山东省第四届ACM大学生程序设计竞赛)

Alice and Bob Time Limit: 1000ms   Memory limit: 65536K 题目描述 Alice and Bob like playing games very much.Today, they introduce a new game. There is a polynomial like this: (a0*x^(2^0)+1) * (a1 * x^(2^1)+1)*.......*(an-1 * x^(2^(n-1))+1). Then Alice as

[2013山东省第四届ACM大学生程序设计竞赛]——Rescue The Princess

Rescue The Princess Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Several days ago, a beast caught a beautiful princess and the princess was put in prison. To rescue the princess, a prince who wanted to marry the princess set out immedia

sdut Mountain Subsequences 2013年山东省第四届ACM大学生程序设计竞赛

Mountain Subsequences 题目描述 Coco is a beautiful ACMer girl living in a very beautiful mountain. There are many trees and flowers on the mountain, and there are many animals and birds also. Coco like the mountain so much that she now name some letter s

[2013山东省第四届ACM大学生程序设计竞赛]——Alice and Bob

Alice and Bob Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Alice and Bob like playing games very much.Today, they introduce a new game. There is a polynomial like this: (a0*x^(2^0)+1) * (a1 * x^(2^1)+1)*.......*(an-1 * x^(2^(n-1))+1). T

华南理工大学“三七互娱杯”程序设计竞赛 HRY and codefire(概率期望DP)

https://ac.nowcoder.com/acm/contest/874/A 题目:有两个账号 , 一开始都为0级 , 求任意一个账号升级到N的期望 要求:如果当前账号嬴了 , 就继续沿用当前的账号,否则就更换其他账号,第i级嬴的概率是pi; 官方题解 因为dp[i][j] 涉及到 dp[j][i] 的价值 ,如果单纯的只是用一条式子是无法得出dp[i][j]的价值 , 应为这是从后开始计算的 , dp[j][i]还没有被计算到 ,所以必须需要两条方程 , 单纯的两条也是不行 , 因为dp

第四届福建省大学生程序设计竞赛

FZU2140  Forever 0.5 题意:构造一些点使得满足一些条件 思路:把1个点放在(0,0)然后n-1点平均分在60度的圆弧上,这样也就是有n-1对点距离为1.0 因为是60°所以n-1里面有一对点距离是1.0 #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #include<map> #include<cmath> #in

2017 ECJTU ACM程序设计竞赛 矩阵快速幂+二分

矩阵 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 7   Accepted Submission(s) : 4 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description 假设你有一个矩阵,有这样的运算A^(n+1) = A^(n)*A (*代

&quot;高教社杯&quot;第三届福建省大学生程序设计竞赛

 A.Problem 2102 Solve equation Accept: 1032    Submit: 2471 Time Limit: 1000 mSec    Memory Limit : 32768 KB  Problem Description You are given two positive integers A and B in Base C. For the equation: A=k*B+d We know there always existing many non-

&quot;巴卡斯杯&quot; 中国大学生程序设计竞赛 - 女生专场(重现)解题思路

此文章可以使用目录功能哟↑(点击上方[+]) 经过这么一次女生赛,告诉我们千万不要小瞧女生,不然会死得很惨,orz... 链接→"巴卡斯杯" 中国大学生程序设计竞赛 - 女生专场(重现)  Problem 1001 Solving Order Accept: 0    Submit: 0 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit : 32768/32768 K (Java/Others)  Problem Descri