zoj 3657 策略题 容易

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4880

因为是要去牡丹江,是浙大出题,所以找了份浙大的题,第一道水题做的就不顺啊,题看不明白,然后枚举3个数的组合,循环条件居然写错,二逼啊,这到现场肯定悲剧啊

题意:

一共有5座山,有人拿5个篮子去采蘑菇,现在他已经采了几座山上的蘑菇,之后几座山的蘑菇数量你可以自己确定。但是他要交出3个篮子,且它们的和必须是1024的倍数。否则,剩余两个篮子也要交出。之后,如果剩余数量大于1024要减去1024直到不大于。问最后剩余的最大值。

做法 分类讨论:

1、n<=3  必然1024

2、n==4   看3个篮子是从已有的4个里面出来的还是2+没采蘑菇的山

3、n==5  分能不能找到2个篮子 weight%1024==0

注意枚举3个数的组合的循环代码: 开始时,循环的开始居然写错,,,

    for(int i=0;i<n-2;i++)
        for(int j=i+1;j<n-1;j++)
            for(int k=j+1;k<n;k++)
            {
                int tmp=a[i]+a[j]+a[k];
                if(tmp%1024 == 0)
                {
                    flag=1;
                    tmp=sum-tmp;
                    while(tmp>1024)tmp-=1024;
                    ans=max(ans,tmp);
                }
            }

AC代码

//#pragma comment(linker, "/STACK:102400000,102400000")
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <string>
#include <iostream>
#include <iomanip>
#include <cmath>
#include <map>
#include <set>
#include <queue>
using namespace std;

#define ls(rt) rt*2
#define rs(rt) rt*2+1
#define ll long long
#define ull unsigned long long
#define rep(i,s,e) for(int i=s;i<e;i++)
#define repe(i,s,e) for(int i=s;i<=e;i++)
#define CL(a,b) memset(a,b,sizeof(a))
#define IN(s) freopen(s,"r",stdin)
#define OUT(s) freopen(s,"w",stdout)
const ll ll_INF = ((ull)(-1))>>1;
const double EPS = 1e-8;
const double pi = acos(-1.0);
const int INF = 100000000;
const int MAXN = 10;
int n;
int a[MAXN];
int sum;
int ans=0;

void solve4()
{
    int flag=0;
    for(int i=0;i<n-2;i++)
        for(int j=i+1;j<n-1;j++)
            for(int k=j+1;k<n;k++)
            {
                int tmp=a[i]+a[j]+a[k];
                if(tmp%1024 == 0)
                {
                    flag=1;
                    tmp=sum-tmp;
                    while(tmp>1024)tmp-=1024;
                    ans=max(ans,tmp);
                }
            }
    if(flag)puts("1024");
    else
    {
        for(int i=0;i<n-1;i++)
            for(int j=i+1;j<n;j++)
            {
                int tmp=a[i]+a[j];
                while(tmp>1024)tmp-=1024;
                ans=max(ans,tmp);
            }
        printf("%d\n",ans);
    }
}

void solve5()
{
    int flag=0;
    for(int i=0;i<n-2;i++)
        for(int j=i+1;j<n-1;j++)
            for(int k=j+1;k<n;k++)
            {
                int tmp=a[i]+a[j]+a[k];
                if(tmp%1024 == 0)
                {
                    flag=1;
                    tmp=sum-tmp;
                    while(tmp>1024)tmp-=1024;
                    ans=max(ans,tmp);
                }
            }
    if(flag)printf("%d\n",ans);
    else puts("0");
}

int main()
{
    //IN("zoj3657.txt");
    while(~scanf("%d",&n))
    {
        sum=0;
        for(int i=0;i<n;i++)
            scanf("%d",&a[i]),sum+=a[i];
        ans=0;
        if(n<=3){puts("1024");continue;}
        if(n == 4)solve4();
        if(n == 5)solve5();
    }
    return 0;
}
时间: 2024-10-23 03:21:37

zoj 3657 策略题 容易的相关文章

zoj 3647 智商题

此题就是求格点中三角形的个数. 就是找出三点不共线的个数. n*m的矩形中有(n+1)*(m+1)个格点. 选出三个点的总个数为:C((n+1)*(m+1),3). 减掉共线的情况就是答案了. 首先是水平和垂直共线的情况:C(n+1,3)*(m+1)+C(m+1,3)*(n+1); 然后斜的共线的情况就是枚举矩形. 斜着共线的三点用枚举法n*m的矩形,对角两个点中间共有gcd(m,n)-1个点,两条对角线,所以数量*2,大矩形里共有(N-n+1)*(M-m+1)个的矩形,一并去除 1 #incl

ZOJ 3657 The Little Girl who Picks Mushrooms

The Little Girl who Picks Mushrooms Time Limit: 2000ms Memory Limit: 32768KB This problem will be judged on ZJU. Original ID: 365764-bit integer IO format: %lld      Java class name: Main It's yet another festival season in Gensokyo. Little girl Alic

zoj 3672 思维题

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4915 真是老了,脑子不会动了,但是其实就算现在搜了题解A了,还是没总结出思维方式 三点: 1.segma(a[i]-b[i])必须是偶数,,因为其实每次操作都是相当于从segma(a[i]-b[i])里面减去2*delta 2.a[i]>=b[i] 题目说的很清楚,只能减去,所以这点必须满足 前两点都想到了,但是自己能举出反例,后来队友A掉了 3.max(a[i]-b[i])

zoj 3726 水题+二分

Alice's Print Service Time Limit: 2 Seconds      Memory Limit: 65536 KB Alice is providing print service, while the pricing doesn't seem to be reasonable, so people using her print service found some tricks to save money. For example, the price when

ZOJ 2676 Network Wars(最优比例最小割)

Network Wars Time Limit: 5 Seconds      Memory Limit: 32768 KB      Special Judge Network of Byteland consists of n servers, connected by m optical cables. Each cable connects two servers and can transmit data in both directions. Two servers of the n

【补题】组队训练第一场

本来想一次补完的(正常应该补两次的)但是晚上玩dota2和rpg去了然后--又堕落了啊. 好吧进入正题,题目按照从易到难的顺序(个人感觉)其他题目现在对我来说太难了,以后再补. A题 ZOJ 3878 水题,可以用map一个一个对应,比较麻烦就用了两个字符数组,要注意\和"要转义. 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5

投资基金模拟题

基金押题卷一 一 单选 (1)目前,我国的证券投资基金主要是(). A公司型基金 B契约型基金 C单位信托基金 D对冲基金 题    型:常识题 页    码:24 难 易 度:易 专家答案:B解析内容 目前,我国的证券投资基金主要是契约型基金. (2)采取多个基金共用一个基金合同.子基金独立运作的结构形式的基金被称为(). A系列基金 B基金中的基金 C保本基金 D混合基金 题    型:常识题 页    码:26 难 易 度:易 专家答案:A解析内容 系列基金的定义:系列基金又称为伞形基金,

基金押题卷二

一 单选 (1)在半强式有效的股票市场中,某新技术公司正在进行一种新型芯片的检验,这项工作可以大幅度提高工作效率,在公司公开宣布实施这项技术之前,该公司技术总监事先购买本公司股票,他赚取利润的概率(). A0 B50% C100% D无法预测 题    型:常识题 页    码:304 难 易 度:易 专家答案:C解析内容 在半强势有效市场中,通过内幕消息可以100%获取利润. (2)一般来说,ETF的特点不包括( ). A招募说明书中明确规定了相关的担保条款 B被动操作的指数基金 C实物申购.

2012长春赛区题解(部分)

总结起来自己还是太逗比,DP还是太弱,而DP却恰是算法思维能力的体现,现在要开始注重加强这方面的训练,遇到这类题目总是不敢想,令人担忧. Problem B ZOJ 3656 Bit Magic http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3656 分析: 总共N个数,每个b[i][j]会对a[i]和a[j]的对应二进制位产生一定影响,具体见题目,我们需要做的是判断每个数的每个位是0或1,根据关系建立边,然后直接2sa