码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-08-02 00:18:47      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:pid   nim   its   通过   裸题   ann   ref   name   prime   

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

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

  思路:待补

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

标签:pid   nim   its   通过   裸题   ann   ref   name   prime   

原文地址:https://www.cnblogs.com/plys/p/11279651.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!