Wannafly模拟赛5 A 思维 D 暴力

Wannafly模拟赛5

A   Split

题意:你有一个大小为??的??????????,每次你可以从你已有的??????????中选择一个大小不为1的??????????,设他的大小为??,然后把它分裂成??和??−??,其中1≤??<??,这样你获得的收益是??∗(??−??)给定??,??,求最少分裂几次才能得到至少??的收益。

tags:做题全靠猜系列

1】首先要知道,如果要把一个数 s 分裂成几个固定的数,不管怎么分裂得到的收益是确定的。 这个稍微算几个例子就知道,比如 6 分裂成 1、2、3 ,  不管怎么分最后的收益都是 11 。

2】然后就是猜了。。 一个数 s ,如果我们要把它分成 k 个数,分成哪些数才是最优的呢?  答案是尽可能平均分。   最后模拟 k 从 1到 n 即可。

#include<bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:102400000,102400000")
#define rep(i,a,b) for (int i=a; i<=b; ++i)
#define per(i,b,a) for (int i=b; i>=a; --i)
#define mes(a,b)  memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
#define MP make_pair
#define PB push_back
#define fi  first
#define se  second
typedef long long ll;
const int N = 200005;

int s, m;
int main()
{
    scanf("%d%d", &s, &m);
    rep(i,1,s)
    {
        int num1=s/i, num2=s%i;
        ll  tmp, cnt=0, ans=0;
        rep(j,1,i)
        {
            tmp = num1 + (num2>=j);
            ans += tmp*cnt;
            cnt += tmp;
        }
        if(ans >= m) return 0*printf("%d\n", i-1);
    }
    puts("-1");

    return 0;
}

D   Aria

题意:? 给出??个数????,起初?????? = 0。  把这??个数按1 ∼ ??的顺序依次加入,即在第??步时?????? = ?????? + ????。 每加入一个数后,可以把??????十进制按位拆开后随意重排,得到一个新的数。重排允许前导0的出现,比如10可以重排成1或10。 求最大的??????是多少。     ?? ≤ 5,1 ≤ ???? ≤ 100。

tags: 数据小,直接暴力。。

#include<bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:102400000,102400000")
#define rep(i,a,b) for (int i=a; i<=b; ++i)
#define per(i,b,a) for (int i=b; i>=a; --i)
#define mes(a,b)  memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
#define MP make_pair
#define PB push_back
#define fi  first
#define se  second
typedef long long ll;
const int N = 200005;

int n, a[7];
ll  ans;
ll  fpow(ll a, int b)
{
    ll  ans2=1;
    for(; b; b>>=1, a=a*a) if(b&1) ans2*=a;
    return ans2;
}
void dfs(ll s, int id)
{
    int num[20], cnt=0;
    while(s) { num[++cnt]=s%10;  s/=10; }
    sort(num+1, num+1+cnt);
    do {
        s = 0;
        rep(i,1,cnt)
            s += fpow(10,i-1)*num[i];
        if(id==n+1) ans=max(ans, s);
        else dfs(s+a[id], id+1);
    } while(next_permutation(num+1, num+1+cnt));
}
int main()
{
    scanf("%d", &n);
    rep(i,1,n) scanf("%d", &a[i]);
    dfs(0, 1);
    printf("%lld\n", ans);

    return 0;
}

时间: 2024-08-05 18:31:59

Wannafly模拟赛5 A 思维 D 暴力的相关文章

FJoi2017 1月20日模拟赛 直线斯坦纳树(暴力+最小生成树+骗分+人工构造+随机乱搞)

[题目描述] 给定二维平面上n个整点,求该图的一个直线斯坦纳树,使得树的边长度总和尽量小. 直线斯坦纳树:使所有给定的点连通的树,所有边必须平行于坐标轴,允许在给定点外增加额外的中间节点. 如下图所示为两种直线斯坦纳树的生成方案,蓝色点为给定的点,红色点为中间节点. [输入格式] 第一行一个整数n,表示点数. 以下n行,每行两个整数表示点的x,y坐标. [输出格式] 第一行一个整数m,表示中间节点的个数. 必须满足m <= 10 * n 以下m行,每行2个整数表示中间节点的坐标. 以下n+m-1

Wannafly模拟赛5 A Split

你有一个大小为??的??????????,每次你可以从你已有的??????????中选择一个大小不为1的??????????,设他的大小为??,然后把它分裂成??和??−??,其中1≤??<??,这样你获得的收益是??∗(??−??)给定??,??,求最少分裂几次才能得到至少??的收益 思路: 首先需要证明 假设已经将题目中的S分成了n等份,那么对于当前分裂方式能够取得的最大收益需要满足: 当前假设S/n余数为0,或者尽可能接近均分 举例: eg1. S=10 M=33 第一种方式: 所能够获得

Wannafly模拟赛5 E

题目描述 ????????接到了一份来自校方的委托,虽然没有学分但也必须完成.需要粉刷??条木板,这些木板按照左端对齐,每条木板的高度都是1,第??条木板的长度为????.????????只有一个宽度为1的刷子,她每次可以水平或者竖直地对连续的位置进行粉刷,刷子不能经过没有木板的位置.????????对校方的这个安排非常不满,但为了效率,她允许重复粉刷一个位置,希望通过最少的次数来完成这??条木板的粉刷. 输入描述: 第一行,一个正整数??.第二行,??个正整数????. 输出描述: 一行,一个

【noip模拟赛4】Matrix67的派对 暴力dfs

[noip模拟赛4]Matrix67的派对 描述 Matrix67发现身高接近的人似乎更合得来.Matrix67举办的派对共有N(1<=N<=10)个人参加,Matrix67需要把他们安排在圆桌上.Matrix67的安排原则是,圆桌上任意两个相邻人的身高之差不能超过K.请告诉Matrix67他共有多少种安排方法. 输入 第一行输入两个用空格隔开的数N和K,其中1<=N<=10,1<=K<=1 000 000. 第二行到第N+1行每行输入一个人的身高值.所有人的身高都是不

lzoi模拟赛题解

A题:签到题原题:mtoi 联赛 的A题定位:真.签到题(普及B题或者提高d1A题)考点:选手的基本数学能力思维难度:提高-代码难度:普及A题 题解:80%:暴力枚举100%:注意到(a xor b)<=(a+b),于是把所有的数异或起来即可. B题:送分题原题:[多省省队联测]d2A:皮配定位:一道联赛d1B题,考察了选手的基本功.送了选手70分.把70%的2种做法扩展可以得到正解考点:多种背包dp,计数思维难度:提高代码难度:提高+ 前面的几个数据可以暴力枚举解决.50%的数据:考虑dp.设

10.30 NFLS-NOIP模拟赛 解题报告

总结:今天去了NOIP模拟赛,其实是几道USACO的经典的题目,第一题和最后一题都有思路,第二题是我一开始写了个spfa,写了一半中途发现应该是矩阵乘法,然后没做完,然后就没有然后了!第二题的暴力都没码QAQ 现在我来写解题报告了,有点饿了QAQ.. 第一题 题目 1: 架设电话线 [Jeffrey Wang, 2007] 最近,Farmer John的奶牛们越来越不满于牛棚里一塌糊涂的电话服务,于 是,她们要求FJ把那些老旧的电话线换成性能更好的新电话线.新的电话线架设 在已有的N(2 <=

9.14 模拟赛

模拟赛第三弹~ T1 题意:给你一个数列,要求删掉任意一种整数,使得剩下的新数列中连续的相等的数最多 例如 2 7 3 7 7 3 3 7 7 5 7,删掉3以后剩的7有四个连续的,最多 思路:暴力枚举去掉哪个......这算是一道水题吧 代码丢了...... TAT T2 题意:有n本书,每本书有宽度和高度.现在你有无数个书架,每个书架的宽度为w,高度由最高的书决定 问在书本按顺序放的情况下,总的书架高度最小是多少 思路:dp,dp[i]表示做到第i本书时的最小高度和. 每次先找到能以编号j的

bzoj2741: 【FOTILE模拟赛】L

2741: [FOTILE模拟赛]L Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 2679  Solved: 766[Submit][Status][Discuss] Description FOTILE得到了一个长为N的序列A,为了拯救地球,他希望知道某些区间内的最大的连续XOR和. 即对于一个询问,你需要求出max(Ai xor Ai+1 xor Ai+2 ... xor Aj),其中l<=i<=j<=r. 为了体现在线操作,对于一

2012-10-20 NOIP模拟赛

      2012-10-20 NOIP模拟赛 by coolyangzc 共3道题目,时间3小时 题目名 高级打字机 不等数列 经营与开发 源文件 type.cpp/c/pas num.cpp/c/pas exploit.cpp/c/pas 输入文件 type.in num.in exploit.in 输出文件 type.out num.out exploit.out 时间限制 1000MS 1000MS 1000MS 内存限制 256MB 256MB 256MB 测试点 5+(5) 10