Wannafly挑战赛1,2

做了好久了,今天大佬讲题,好厉害,弱鸡只会几道水题。

 

Treepath

给定一棵n个点的树,问其中有多少条长度为偶数的路径。路径的长度为经过的边的条数。x到y与y到x被视为同一条路径。路径的起点与终点不能相同。

奇数层到奇数层,偶数层到偶数层。

 

Xorto

给定一个长度为n的整数数组,问有多少对互不重叠的非空区间,使得两个区间内的数的异或和为0。

 

异或题好厉害,问题变成四个点的异或值为0。

厉害的位置是他的遍历方式O(n*nlogn)

左区间+1个元素,将产生一些新的异或值,有区间探测。(枚举的起点,不重复不遗漏)

#include <bits/stdc++.h>
 
using namespace std;
 
const int maxn = 1e3+5;
int a[maxn];
int sets[3276800];
 
int main()
{
    //freopen("in.txt","r",stdin);
 
    int n;
    cin>>n;
 
    for(int i = 1; i <= n; i++) scanf("%d",&a[i]);
 
    long long cnt = 0;
    for(int i = 1; i <= n; i++) {
        int s = 0;
        for(int j = i; j <=n; j++) {
            s^=a[j];
            cnt+=sets[s];
        }
        s = 0;
        for(int j = i; j >= 1; j--) {
            s^=a[j];
            sets[s]++;
        }
    }
    printf("%lld\n",cnt);
 
 
    return 0;
}

 

MMSet2

给定一棵n个节点的树,点编号为1…n。
Q次询问,每次询问给定一个点集S,令
你需要求出
其中dist(u,v)表示树上路径(u,v)的边数。

 

答案就是 (点集的直径+1)/2,理由想一想就好,代码待填,嘻嘻~~~

 

Color

给一个没有重边的二分图, 要求给边染色. 有公共点的边不能同色. 问最少用多少种颜色, 并任意构造一组方案.
 
答案是:度数的最大值。
分析:肯定他是理论的下界,那么怎么才能知道他是理论的上界呢?嘻嘻。跳过,
然后染色。
 
Cut
给你一个长度为n的序列,你每次可以将一个序列分割成两个连续的的子序列,
分割的代价为原序列的总和。
现在允许你在初始时将序列重新排列一次。
问分割成n个长度为1的序列的最大总代价是多少?
 
哈夫曼
 
Travel

精灵王国有N座美丽的城市,它们以一个环形排列在Bzeroth的大陆上。其中第i座城市到第i+1座城市花费的时间为d[i]。特别地,第N座城市到第1座城市花费的时间为d[N]。这些道路都是双向的。

另外,精灵们在数千年的时间里建造了M座传送门,第i座传送门连接了城市u[i]与城市v[i],并且需要花费w[i]的时间通过(可能有两座传送门连接了同一对城市,也有可能一座传送门连接了相同的两座城市)。这些传送门都是双向的。

小S是精灵王国交通部部长,她的职责是为精灵女王设计每年的巡查路线。每次陛下会从某一个城市到达另一个城市,沿路调查每个城市的治理情况,她需要找出一条用时最短的路线。

 

枚举特殊点。

 

转载于:https://www.cnblogs.com/TreeDream/p/7823475.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值