夜深人静写题解--杭电第四场

Posted plys

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了夜深人静写题解--杭电第四场相关的知识,希望对你有一定的参考价值。

1001.AND Minimum Spanning Tree

  题意:已知一个完全图,共有N个点,按1-N编号,点与点之间的边权为两点的编号相与,求权值和最小生成树,相同权值和输出最小的字典序方案

  思路:为了保证可以得到权值和最小,对于每个点可以贪心的去找与其与值最小的点,为保证字典序最小,应找到第一个与其相与可以得到最小的点

  方案:枚举每个点二进制位上最低0的位置,得到相遇的点,比如X的二进制位1110011110111,则与其相与的最小的点为1000,若用此方法找到的值比N值大,则将其与1相与

  代码:

技术图片
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6+7;
int b[maxn];
int main()

    int n;
    int t;
    cin>>t;
    while(t--)
    
        cin>>n;
        long long int ans=0;
        for(int i=2; i<=n; i++)
        
            if(i%2==0)
            
                b[i]=1;
                ans+=((i&1)*1ll);
            
            else
            
                int t=i;
                for(int j=0;j<=30;j++)
                
                    if((t&(1<<j))!=0)
                        continue;
                    else
                    
                        if((1<<j)>n)
                        
                            b[i]=1;
                        
                        else
                        
                            b[i]=1<<j;
                        
                        ans+=((b[i]&i)*1ll);
                        break;
                    
                
            
        
        printf("%lld\n",ans);
        for(int i=2; i<=n; i++)
        
            printf("%d%c",b[i],i==n?\n: );
        
    

View Code

1007.Just an Old Puzzle

  题意:类似于奇数码问题,问是否可以将一个图转化成另一个图

  思路:裸题直接搞

  代码:

技术图片
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 
 5     int mp[25],ans=0;
 6     int t;
 7     cin>>t;
 8     while(t--)
 9     
10         ans=0;
11         memset(mp,0,sizeof(mp));
12         for(int i=0; i<16; i++)
13         
14             scanf("%d",&mp[i]);
15             if(!mp[i])
16                 ans+=6-i%4-i/4;
17             for(int j=0; j<i; j++)
18                 if(mp[j]>mp[i])
19                     ans++;
20         
21         if(ans&1)
22             puts("Yes");
23         else
24             puts("No");
25     
26 
27 
View Code

1008. K-th Closest Distance

  题意:给定一个数组,每次查询l-r区间之内与K距离第k近的元素,题目要求强制在线,每次输出答案为上一个的答案异或当前答案

  思路:对于每个区间查询与K距离最近的元素,可以通过二分答案,查询当前区间处于[p-ans,p+ans]的数是否大于k个,同个check上述条件完成题目

1010.Minimal Power of Prime

  题意:通过对于一个数,求解素因子权值的最小值

  思路:待补

以上是关于夜深人静写题解--杭电第四场的主要内容,如果未能解决你的问题,请参考以下文章

2019 杭电多校 第四场

杭电多校第四场 E Matrix from Arrays

杭电oj训练赛第四场

杭电多校第四场 1003 Contest of Rope Pulling(随机化+动态规划)

2020杭电多校第四场 Go Running 最小点覆盖等于二分图最大匹配数

Problem E. Matrix from Arrays(杭电2018年多校第四场+思维+打表找循环节)