冲刺11.12

隔天补写。。。。。

T1 sheep

面积恰好为n的、长和宽都是正整数的矩形羊圈,这个羊圈的周长最短要是多少。。。

AC。。。把面积开方,一个一个递减判断。。。简单粗暴。。。

T2 carry

只用技能秀死他。。。。。3个技能,一技能造成物攻值10倍的伤害,二技能造成法强值10倍的伤害,三技能造成物攻值6倍和法强值6倍的伤害。。。

另外的,当她使用3次任意技能后,下一次技能将获得强化。。

!!!!重点是这个任意技能也包括强化后的,所以第四次技能后每使用2次普通技能就可以再用强化后的技能了!!!!!

死在这里。。。竟然还有35分???

强化后,一技能造成物攻值20倍的伤害,二技能造成法强值15倍的伤害,三技能造成攻值9倍和法强值9倍的伤害。。。。简单粗暴。。。

T3 game

4个玩家,牌有"2,3,4,5,6,7,8,9,10,J,Q,K,A"自小到大的点数;黑桃(S),红桃(H),梅花(C),方块(D)的花色,一张牌由一种花色和一种点数组成。。。。

在每一回合中,每个玩家出一张牌,点数最大的牌中最先出牌的人为该轮的赢家,四张牌被置入赢家的弃牌堆中。。。所有回合结束后,每个玩家弃牌堆中的牌独立进行结算。。。。

第一步,玩家拿出所有种类红桃牌各一张和一张黑桃Q,丢弃它们并且给其他玩家各加26分,重复以上过程直到不能作出这个操作。。。一定要种类齐全。。

第二步,一张一张丢弃剩下的牌,如果是红桃则给自己加1分,如果是黑桃Q则给自己加13分,其他牌分数不变。。。所以其他牌就别统计了。。。

求每人的分数。。。

直接模拟,注意样例中有点数为1的牌????要处理掉。。。善于用数组,避免太过冗长。。。。。

T4 plan

听说用二分,但是我不知道如何实现。。。

215分的一天ヾ(・ω・`。)(虽然是隔天补写的。。)

20191112_冲刺DAY4

今天是真的没时间写博客~~~~~~~~~~~

改题改了很久啊——————

①羊圈(sheep)

设长为x,宽为y
xy=n
所以只需要搜索x, y使得xy = n即可
o(n2 )河以过60分
显然,因为x, y到超过Vn时,会重复
所以只需保证x*x<= n,
当n是x倍数时,y= n/x;
o开根n可以过100分
注意要开longlong

我是设一个数l=1,l<r,l++

然后用n不断除以l,统计sum=(s+l)*2

然后不断比较sum的最小值

这样复杂度就最多只有n的一半

two:

这题有点坑

放大招也算是积攒大招3次中的一次

只要把第一次的三个小招做处理就行了

举个例子:小小小大小小大小小大小小大......

把第一个小单独加,再小小大的乘以组数,最后再加上余数就行了


1
2
3
4
5
6
7
8
9
10
11
12
13
int main()
{
    read();
    scanf("%lld%lld%lld",&n,&a,&b);
    if(n<=3){
        printf("%lld",max(a*10,max(b*10,(a*6)+(b*6)))*n);
        return 0;
    }
    p=n/3;
    if(n%3==0) p--;
    printf("%lld",p*max(a*20,max(b*15,(a*9)+(b*9)))+(n-p)*max(a*10,max(b*10,(a*6)+(b*6))));
return 0;
}

第三第四还没理解透~~~

【2019.11.12】冲刺2019(CSP-J)

一、羊圈(sheep)

Resee养了n只羊,其中每只羊占地 单位面积
Resee喜欢矩形,所以她想建一个面积恰好为 的、长和宽都是正整数的矩形羊圈
Resee想问问你这个羊圈的周长最短要是多少

这题非常简单,就是把它特殊化成一个正方形;

太简单了,不讲了

代码:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<bits/stdc++.h>
using namespace std;
int main()
{   freopen("sheep.in","r",stdin);
    freopen("sheep.out","w",stdout);
    long long n,i,ans=0;
    cin>>n;
    for(i=1;i<=sqrt(n);i++)
    {
        if(n%i==0)
        {
            ans=(n/i+i)*2;
        }
    }
    cout<<ans;
    return 0;
}

 

二、秀(carry)

Resee在玩某游戏时碰到了一个敌方挂机的坦克,她决定只用技能秀死他
Resee有一个物攻值和一个法强值
她共有3个技能,一技能造成物攻值10倍的伤害,二技能造成法强值10倍的伤害,三技能造成物攻值6倍和法强值6倍

的伤害
另外的,当她使用3次任意技能后,下一次技能将获得强化
强化后,一技能造成物攻值20倍的伤害,二技能造成法强值15倍的伤害,三技能造成物攻值9倍和法强值9倍的伤害
Resee想知道她使用n次技能最多能打出多少伤害

这题说明Resee在玩游戏,我也想打,算了

当攻击次数除以3取余1时,有特殊技能。所以(3+1)为一个循环。模拟就好了

记得开long long

代码:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int a,b,f,s;
long long n,x,ans;
int max(int a,int b)
{
    if(a>=b)
    {       return a;
    }
    else
    {
        return b;
    }
}
void zhuang_bi_huang_xuan_xiao_han_shu()
{
    freopen("carry.in","r",stdin);
    freopen("carry.out","w",stdout);
}
int main()
{
    zhuang_bi_huang_xuan_xiao_han_shu();
    cin>>n>>a>>b;
    int ak1,ak2,ak3,ak4,ak5,ak6,ak7;
    ak1=max(10*a,10*b);
    ak2=6*(a+b);
    ak3=max(20*a,15*b);
    ak4=9*(a+b);
    ak5=max(ak1,ak2)</pre>
<pre>;
    ak6=max(ak3,ak4);
    if(n==0)
    {
        printf("0");
        return 0;   }
    else
    {
        n--;
        ans=ak5;
        x=n/3;
        ans+=ak5*(n-x)+ak6*x;
        cout<<ans;
    }
    return 0;
}

3、4两题没写;

总结:要多多看书,像什么下面的那个

羊圈(sheep)

Resee养了n只羊,其中每只羊占地单位面积
Resee喜欢矩形,所以她想建一个面积恰好为的、长和宽都是正整数的矩形羊圈
Resee想问问你这个羊圈的周长最短要是多少

 

做法:for循环寻找哪对长和宽可以刚好乘得面积,并且长和宽要尽量小。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<bits/stdc++.h>
using namespace std;
long long n;
int main()
{
    freopen("sheep.in","r",stdin);
    freopen("sheep.out","w",stdout);
    long long ans;
    cin>>n;
    for(int i=sqrt(n)+1;i>=1;i--)
    {
        if(n%i==0)
        {
            ans=(i+n/i)*2;
            break;
        }
    }
    cout<<ans;
    return 0;
}

 

集训Day3

T1羊圈

相同面积求周长最短要从sqrt(面积)算起

直接for(i=sqrt(周长);i>=1;i--)

if(x%i==0){

cout<<(i+x/i)*2<<endl;

return 0;

}

结果考试的时候打了一长串超时了//:(


T2秀

考试的时候题意理解错了

其实求出正常攻击以及强化攻击的最大值

判断各一共需要攻击几次就过了:(

我又超时re

ans=(2*maxzc+maxqh)*((n-1)/3)+((n-1)%3)*maxzc+maxzc


T3红心大战

enen据某人的话说每次文件读写是game的就很变态

好真实我哭了

读入理解错了不知道每回合是重新读入的

样例好坑好难过


T4黄色方案

ooo我题目看不懂

果断放弃//

sheep

题目描述:
Resee养了n只羊,其中每只羊占地1单位面积
Resee喜欢矩形,所以她想建一个面积恰好为n的、长和宽都是正整数的矩形羊圈
Resee想问问你这个羊圈的周长最短要是多少?

因为面积恰好,所以只需要搜索x*y=n即可,要开long long。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<bits/stdc++.h>
using namespace std;
int main()
{
    freopen("sheep.in","r",stdin);
    freopen("sheep.out","w",stdout);
    long long n,ans=0;
    cin>>n;
    for(int i=sqrt(n)+1;i>=1;i--)
    {
        if(n%i==0)
        {  
            ans=2*(i+n/i);
            break;
        }
    }
    cout<<ans;
    return 0;
}

羊圈(sheep)

题目描述

Resee养了n只羊,其中每只羊占地单位面积
Resee喜欢矩形,所以她想建一个面积恰好为的、长和宽都是正整数的矩形羊圈
Resee想问问你这个羊圈的周长最短要是多少
题目大意:给出一个数,把它化成m*n的形式(其中m,n是这个数的因数,并且m*n为这个数),求2×(m+n)的最小值。
思路:做这题的关键是要掌握一个矩形,当它为正方形时,周长最短。所以只要求出m,n值接近的两个数就行了。
核心代码:

1
2
3
4
5
6
7
8
for(int i=sqrt(n)+1;i>=1;i--)
   {
    if(n%i==0)
    {
        ans=2*(i+n/i);
        break;
        }
   }

>.<我以迅雷不及掩耳盗铃儿响叮当之势在打卡

1:羊圈(sheep) emm,我是先判断是不是完全平方数,再继续找差距最小的两个因数,emmm,就是用了sqrt就省了点时间。

2:

秀(carry)

懒了懒了,直接上手骗分刷特例。后来才发现好像不是很难。。but,题目理解错了。。我以为3次后永远都是强化。没想到是每三次一次强化。方法就是每次找最大的一种。但是会炸。所以直接开算(因为总共只有几种伤害值)

3:红心大战(game)

其实不是难,就是复杂·。。头疼啊!!!还有输入名字的处理,QAQ 改不下去了

4:黄色方案(plan) 眼睛,看不下去了。。。只能弱弱地看看大佬的思路了。。。

嗯,明天继续努力!!!\^ .^/