codeforces Hello 2018

A. Modular Exponentiation
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

The following problem is well-known: given integers n andm, calculate

,

where 2n = 2·2·...·2 (n factors), and denotes the remainder of division ofx by y.

You are asked to solve the "reverse" problem. Given integers n and m, calculate

.
Input

The first line contains a single integer n (1 ≤ n ≤ 108).

The second line contains a single integer m (1 ≤ m ≤ 108).

Output

Output a single integer — the value of .

Examples
Input
4
42
Output
10
Input
1
58
Output
0
Input
98765432
23456789
Output
23456789
Note

In the first example, the remainder of division of 42 by 24 = 16 is equal to 10.

In the second example, 58 is divisible by 21 = 2 without remainder, and the answer is 0.

这道题当时根本没想那么多,直接输出公式计算结果

#include<bits/stdc++.h>
using namespace std;

int main()
{
    int n,m;
    cin>>n>>m;
    cout<<(m%(int)(pow(2.0,n*1.0)))<<endl;
    return 0;
}

 都没有考虑会超出范围,但最后终审也过了。这样写是有问题的,但算是运气好,用错误的方法得出了正确的结果。当pow超出int,是-2147483648,而m的范围不会超出int,在这种情况下结果直接为m。

  正确的解法

#include<bits/stdc++.h>
using namespace std;
int n,m;
int main()
{
	cin>>n>>m;
	cout<<(n<=31?m%(1<<n):m);
}

   求余的一些性质:-7%2=-1;7%(-2)=1;

B. Christmas Spruce
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

Consider a rooted tree. A rooted tree has one special vertex called the root. All edges are directed from the root. Vertexu is called a child of vertex v and vertex v is called a parent of vertexu if there exists a directed edge from v to u. A vertex is called aleaf if it doesn't have children and has a parent.

Let's call a rooted tree a spruce if its every non-leaf vertex has at least3 leaf children. You are given a rooted tree, check whether it's a spruce.

The definition of a rooted tree can be found here.

Input

The first line contains one integer n — the number of vertices in the tree (3 ≤ n ≤ 1 000). Each of the nextn - 1 lines contains one integer pi (1 ≤ i ≤ n - 1) — the index of the parent of thei + 1-th vertex (1 ≤ pi ≤ i).

Vertex 1 is the root. It's guaranteed that the root has at least2 children.

Output

Print "Yes" if the tree is a spruce and "No" otherwise.

Examples
Input
4
1
1
1
Output
Yes
Input
7
1
1
1
2
2
2
Output
No
Input
8
1
1
1
1
3
3
3
Output
Yes

   直接将树存在vector中,判断即可。也可以用矩阵相邻法存树。

#include<bits/stdc++.h>
using namespace std;

vector<int>son[1010];

int n;

int main()
{
    cin>>n;
    int i,j,x;
    for(i=2;i<=n;i++)
    {
        cin>>x;
        son[x].push_back(i);
    }

    int f=0;
    for(i=1;i<=n;i++)
    {
        int cnt=0;
        if(son[i].size()!=0)
        {
            for(j=0;j<son[i].size();j++)
            {
                int v=son[i][j];
                if(son[v].size()==0)
                    cnt++;
            }
            if(cnt<3)
             {
                 f=1;
                 cout<<"No"<<endl;
                 break;
             }
        }
        if(f)
            break;
    }
    if(!f)
        cout<<"Yes"<<endl;
    return 0;
}

C. Party Lemonade
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

A New Year party is not a New Year party without lemonade! As usual, you are expecting a lot of guests, and buying lemonade has already become a pleasant necessity.

Your favorite store sells lemonade in bottles of n different volumes at different costs. A single bottle of typei has volume 2i - 1 liters and costsci roubles. The number of bottles of each type in the store can be considered infinite.

You want to buy at least L liters of lemonade. How many roubles do you have to spend?

Input

The first line contains two integers n andL (1 ≤ n ≤ 30;1 ≤ L ≤ 109) — the number of types of bottles in the store and the required amount of lemonade in liters, respectively.

The second line contains n integers c1, c2, ..., cn (1 ≤ ci ≤ 109) — the costs of bottles of different types.

Output

Output a single integer — the smallest number of roubles you have to pay in order to buy at leastL liters of lemonade.

Examples
Input
4 12
20 30 70 90
Output
150
Input
4 3
10000 1000 100 10
Output
10
Input
4 3
10 100 1000 10000
Output
30
Input
5 787787787
123456789 234567890 345678901 456789012 987654321
Output
44981600785557577

Note

In the first example you should buy one 8-liter bottle for 90 roubles and two 2-liter bottles for 30 roubles each. In total you'll get 12 liters of lemonade for just 150 roubles.

In the second example, even though you need only 3 liters, it's cheaper to buy a single 8-liter bottle for 10 roubles.

In the third example it's best to buy three 1-liter bottles for 10 roubles each, getting three liters for 30 roubles.

剩下的整整两个小时都在怼C题,感觉很明显的贪心,直接求性价比。if语句比较选择,wa了n次,感觉思路没问题。第二天看别人的代码,发现了一种有意思的解法。第i瓶饮料的体积是2的i-1次方,可直接利用二进制的性质,利用按位运算求解。

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;

ll n,l,ans;
ll a[34];

int main()
{
    ans=0;
    scanf("%lld%lld",&n,&l);
    for(int i=0;i<n;i++)
    {
        scanf("%lld",&a[i]);
        if(i!=0&&a[i]>2*a[i-1])
            a[i]=2*a[i-1];
    }
    for(int i=n;i<32;i++)
        a[i]=2*a[i-1];
    for(int i=0;i<32;i++)
    {
        if(ans>a[i]) ans=a[i];
        if(l&(1<<i)) ans+=a[i];
    }
    printf("%lld\n",ans);
    return 0;
}

   直接利用性价比计算

#include<bits/stdc++.h>
using namespace std;

struct Node
{
    long long v;
    long long price;
    long double cost;
}node[35];

long long n,l;

bool cmp(Node a,Node b)
{
    if(a.cost<b.cost)
        return true;
    return false;
}

int main()
{
    long long i,j;
    cin>>n>>l;
    for(i=1;i<=n;i++)
    {
        node[i].v=(long long)pow(2.0,(long double)(i-1));
        cin>>node[i].price;
        node[i].cost=node[i].price/(node[i].v*1.0);
    }
    sort(node+1,node+n+1,cmp);
    long long sum=0;
    long long ans=0x3f3f3f3f3f3f3f3f;
    int f=0;
    for(i=1;i<=n;i++)
    {
        long long temp=l/node[i].v;
        sum+=temp*node[i].price;
        l=l%node[i].v;
        if(l==0)
            ans=min(ans,sum);
        ans=min(ans, sum+node[i].price);;
    }
    cout<<min(sum,ans)<<endl;
    return 0;
}






以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析显示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电开关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点开启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有显著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地开通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化中的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值