CF76题解

题解 CF76D 【Plus and xor】 0.前言 楼上的大佬们已经讲得很清楚了; 本蒻的思路和大佬们差不多; 1.正文 直接给代码: #include <set> #include <map> #include <list> #include <queue> #include <stack> #include <string> #include <math.h> #include <time.h> #include &l 阅读详情

CF76

CF76A

链接

CF76A题意

给出一个图( n ≤ 2 × 1 0 2 , m ≤ 5 × 1 0 4 n \le 2\times 10^2,m\le 5\times 10^4 n≤2×102,m≤5×104),每条边有两个属性 ( g i , s i ) (g_i,s_i) (gi​,si​),给出常数 G , S G,S G,S,求一个生成树 T T T 使得 G × max ⁡ ( g i ) + S × max ⁡ ( s i ) G \times \max(g_i) + S \times \max(s_i) G×max(gi​)+S×max(si​) 最小,求出这个值。

CF76A题解

一眼顶针,鉴定为乱搞题
首先先将所有边按照 g i g_i gi​ 排序,然后从小到大枚举 s i s_i si​,每次只加入 s j > s i s_j > s_i sj​>si​ 的边,然后跑 k r u s k a l kruskal kruskal。
但是这样显然是 O ( m 2 ) O(m^2) O(m2) 的,考虑优化。
注意到如果在一次 k r u s k a l kruskal kruskal 的时候,一条边没有用到,那么以后就永远用不到了,因为选这条边显然不会优于之前的某种选法。
而且 n n n 又这么小,每次只需要维护 n − 1 n - 1 n−1 条边就好了。
然后就可以对每个 s i s_i si​ 算出对应的答案啦。
于是就可以 O ( n m ) O(nm) O(nm) 快乐地过啦!

CF776A优化
  1. 注意到刚开始至少需要选 n − 1 n - 1 n−1条边,可以先二分一个答案,然后从这个位置开始枚举 s i s_i si​。
  2. 维护边用的集合可以用 m u l t i s e t multiset multiset。

CF76A代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read(){
    int x = 0, f = 1;char ch = getchar();
    while(ch < '0' || ch > '9'){if(ch == '-') f = -1;ch = getchar();}
    while(ch >= '0' && ch <= '9'){x = (x << 1) + (x << 3) + (ch ^ 48);ch = getchar();}
    return x * f;
}
const int maxn = 2e2 + 10, maxm = 5e4 + 10;
int n, m;
int G, S;
struct edge{
    int u, v, g, s, nexte;
    edge(int u = 0,int v = 0,int g = 0,int s = 0,int ne = 0):u(u),v(v),g(g),s(s),nexte(ne){}
    friend bool operator < (edge a,edge b){return a.s < b.s;}
}e[maxm],edg;
int gold[maxm];

int fa[maxn];
int getf(int x){return fa[x] == x ? x : fa[x] = getf(fa[x]);}
multiset<edge> E;
typedef multiset<edge>::iterator iter;
bool check(int mid){
    int cnt = 1;
    for(int i = 1;i <= n;i++){fa[i] = i;}
    for(iter it = E.begin();it != E.end();it++){
        edg = *it;int fu = getf(edg.u), fv = getf(edg.v);
        if(fu == fv || edg.g > mid)continue;
        fa[fu] = fv;cnt++;
    }
    return cnt >= n;
}

signed main(){
    int u, v, g, s, ans = 0x3f3f3f3f3f3f3f3f;
    n =  read(); m = read();G = read(); S = read();
    for(int i = 1;i <= m;i++){
        u = read(); v = read(); g = read(); s = read();
        gold[i] = g;
        e[i] = edge(u,v,g,s);E.insert(e[i]);
    }
    sort(gold + 1,gold + 1 + m);
    int l = 1, r = m, res = -1;
    while(l <= r){
        int mid = l + r >> 1;
        if(check(gold[mid])){r = mid - 1;res = mid;}
        else l = mid + 1;
    }
    if(res == -1){puts("-1");return 0;}
    for(int point = res;point <= m;point++){
        int cnt = 1, maxx = 0;
        for(int j = 1;j <= n;j++)fa[j] = j;
        for(iter it = E.begin();it != E.end();it++){
            edg = *it;int fu = getf(edg.u), fv = getf(edg.v);
            if(edg.g > gold[point])continue;
            if(fu == fv){iter tmp = it;tmp--;E.erase(it);it = tmp;}
            else{fa[fu] = fv;maxx = edg.s;cnt++;}
            if(cnt == n)break;
        }
        if(cnt == n)ans = min(ans,maxx * S + gold[point] * G);
    }
    printf("%lld\n",ans == 0x3f3f3f3f3f3f3f3f ? -1 : ans);
    return 0;
}

CF76B

链接

CF76B题意

在平面上给出两条直线 y = Y 0 y = Y_0 y=Y0​ 和 y = Y 1 y = Y_1 y=Y1​。在 y = Y 0 y = Y_0 y=Y0​ 上有 n n n 只老鼠,第 i i i 只老鼠横坐标为 x 1 , i x_{1, i} x1,i​,在 y = Y 1 y = Y_1 y=Y1​ 上有 m m m 个奶酪,第 i i i 个奶酪横坐标为 x 2 , i x_{2, i} x2,i​。已知一只老鼠的捕食策略如下:
1. 1. 1. 如果离这只老鼠最近的奶酪有且只有一个,那么这只老鼠会往这个奶酪移动。
2. 2. 2. 如果有多个奶酪离老鼠距离最近,那么这只老鼠会选择向使所有老鼠中挨饿个数最少的奶酪移动。
每只老鼠的移动速度都是一样的,当某些老鼠到达某个奶酪并且当前奶酪还没有被吃掉时,他们会吃掉奶酪并且不再挨饿。如果某个老鼠在到达奶酪时奶酪已经被吃掉了,那么它不会再进行移动,此时我们认为它处于挨饿状态。
请输出最终处于挨饿状态的老鼠个数。

CF76B题解

考虑贪心的找答案,枚举对于每只老鼠,如果只满足第 1 1 1 中情况就没办法了,但是如果满足第 2 2 2 种情况,那么尽可能的让这只老鼠向左找\

CF76B代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read(){
    int x = 0, f = 1;char ch = getchar();
    while(ch < '0' || ch > '9'){if(ch == '-') f = -1;ch = getchar();}
    while(ch >= '0' && ch <= '9'){x = (x << 1) + (x << 3) + (ch ^ 48);ch = getchar();}
    return x * f;
}
const int maxn = 1e5 + 10,INF = 0x3f3f3f3f3f3f3f3f;
int n, m;
int x[maxn], y[maxn];
int minn[maxn];
signed main(){
    n = read(); m = read();read();read();
    for(int i = 1;i <= n;i++)x[i] = read();
    for(int i = 1;i <= m;i++)y[i] = read();
    int ans = 0;
    y[0] = -INF, y[m + 1] = INF;m++;sort(y,y + m + 1);
    memset(minn,0x3f,sizeof(minn));
    for(int i = 1;i <= n;i++){
        int j = lower_bound(y,y + m + 1,x[i]) - y;j--;
        // printf("j=%lld\n",j);
        int dis = min(x[i] - y[j],y[j + 1] - x[i]);
        if(y[j + 1] - x[i] > dis || (x[i] - y[j] == dis && (minn[j] == INF || minn[j] == dis))){j--;}
        if(minn[j + 1] == INF || minn[j + 1] == dis)ans++;
        minn[j + 1] = min(minn[j + 1],dis);
        // printf("i=%lld : %lld\n",i,ans);
    }
    printf("%lld\n",n - ans);
    return 0;
}

CF76C

链接

CF76C题意

给出一个字符串 S S S (字符种类少于 22 22 22 种)和一个代价上限 t t t
同时给出一个数组 a i a_i ai​ 表示删除第 i i i 种字符的花费,一个矩阵 c o s t i , j cost_{i,j} costi,j​ 表示删除字符后的字符串 T T T 中每对相邻的字母需要花费 c o s t T i , T i + 1 cost_{T_i,T_{i+1}} costTi​,Ti+1​​
求出最终花费小于代价上限的方案

CF76C题解

首先思考下暴力怎么写。
每次暴力枚举删除的字符集合,然后再扫一遍相邻的花费。
时间复杂度 O ( 2 k n ) O(2^kn) O(2kn) 显然过不了。\

发现复杂度瓶颈在于计算相邻花费,思考如何优化。
不难发现,如果想让一对点对 ( i , j ) (i,j) (i,j) 相邻,必须删除所有两者之间的字符,并且这两者之间不能有和这两个相同的字符
然后就非常的状压
设 f S f_S fS​ 表示删除的字符集合是 S S S 时的花费
首先让 f i = ∑ j ∈ i a j f_i = \sum_{j\in i}a_j fi​=∑j∈i​aj​
记录 s t a j sta_j staj​ 表示到前面的字符 j j j 之间需要删除哪些字符(初始为 − 1 -1 −1)
然后枚举 S S S 中的每一位 i i i\

  1. 如果 s t a j ≠ − 1 sta_j \neq -1 staj​=−1
    1. 如果 S i ∉ s t a j S_i\notin sta_j Si​∈/staj​ 且 j ∉ s t a j j\notin sta_j j∈/staj​
      则 f s t a j + = c o s t j , S i f_{sta_j} += cost_{j,S_i} fstaj​​+=costj,Si​​
      但是这样统计的话会让删除了 j j j 或 S i S_i Si​ 的情况也加了这种贡献,故
      f s t a j ∣ ( 1 < < S i ) − = c o s t j , S i f_{sta_j | (1<<S_i)}-= cost_{j,S_i} fstaj​∣(1<<Si​)​−=costj,Si​​
      f s t a j ∣ ( 1 < < j ) − = c o s t j , S i f_{sta_j | (1<<j)}-= cost_{j,S_i} fstaj​∣(1<<j)​−=costj,Si​​
      但是同时删除了 j , S i j,S_i j,Si​ 的情况减了两次这个贡献,故
      f s t a j ∣ ( 1 < < j ) ∣ ( 1 < < S i ) + = c o s t j , S i f_{sta_j | (1<<j) | (1<<S_i)}+= cost_{j,S_i} fstaj​∣(1<<j)∣(1<<Si​)​+=costj,Si​​
    2. 让 s t a j ∣ = ( 1 < < S i ) sta_j |= (1<<S_i) staj​∣=(1<<Si​)\

这一位枚举完了之后记得把 s t a S i = 0 sta_{S_i} = 0 staSi​​=0
那么最终统计答案的时候先让 f i = f i + ∑ j ∈ i f i x o r j f_i = f_i+\sum_{j\in i}f_{ixorj} fi​=fi​+∑j∈i​fixorj​
然后枚举每一种删除方式集合 s t a sta sta,如果 f s t a ≤ t f_{sta}\le t fsta​≤t 且 s t a sta sta 是所有字符构成的集合的真子集,那么 a n s + + ans++ ans++

CF76C细节

这道题虽说了只含有前 k k k 个字符,可没说这 k k k 个字符都有吃我四发提交

CF76C代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn = 2e5 + 10,maxk = 25;
int f[1 << maxk - 2], n, K, T;
char ch[maxn];
int a[maxn];
int cost[maxk][maxk];
int t[maxk], sta[maxk];
signed main(){
    scanf("%lld%lld%lld",&n,&K,&T);
    int all = 0;
    scanf("%s",ch + 1);for(int i = 1;i <= n;i++){a[i] = ch[i] - 'A';all |= (1 << a[i]);}
    for(int i = 1;i <= K;i++){scanf("%lld",&t[i]);f[1 << (i - 1)] += t[i];}
    for(int i = 1;i <= K;i++)
        for(int j = 1;j <= K;j++)
            scanf("%lld",&cost[i - 1][j - 1]);
    memset(sta,-1,sizeof(sta));
    for(int i = 1;i <= n;i++){
        for(int j = 0;j < K;j++)
            if(sta[j] >= 0){
                if(!((sta[j] >> a[i]) & 1) && !((sta[j] >> j) & 1)){
                    f[sta[j]] += cost[j][a[i]];
                    f[sta[j] | (1 << j)] -= cost[j][a[i]];
                    f[sta[j] | (1 << a[i])] -= cost[j][a[i]];
                    f[sta[j] | (1 << j) | (1 << a[i])] += cost[j][a[i]];
                }
                sta[j] |= (1 << a[i]);
            }
        sta[a[i]] = 0;
    }
    int ans = 0;
    for(int i = 0;i < K;i++)
        for(int j = 0;j < 1 << K;j++)
            if((j >> i) & 1)f[j] += f[j ^ (1 << i)];
    for(int i = 0;i < 1 << K;i++)
        if(f[i] <= T && i != all && (i & all) == i){ans++;}
    printf("%lld\n",ans);
    return 0;
}

CF76D

链接

CF76D题意

给你两个数 A , B A,B A,B,求一对满足 X ⊕ Y = B , X + Y = A X \oplus Y=B,X+Y=A X⊕Y=B,X+Y=A,且令 X X X 尽可能小,无解输出 − 1 -1 −1

CF76D题解

这啥啊
可知 A − B A-B A−B 其实就是 A   a n d   B A \space and \space B A and B 再向左移一位的结果,让 X ← A − B 2 X \gets \frac{A-B}{2} X←2A−B​ 显然最优
然后特判下 A < B A<B A<B 或者 2 ∤ ( A − B ) 2\nmid(A-B) 2∤(A−B) 的时候无解就没了

CF76D代码

#include<bits/stdc++.h>
#define ull unsigned long long
using namespace std;
signed main(){
    ull a, b;
    cin >> a >> b;
    if(a < b || (a - b) % 2 != 0)cout << -1 << endl;
    else cout << (a - b) / 2 << " " << a - (a - b) / 2 << endl;
    return 0;
}

CF76E

链接

CF76E题意

给 n ( n ≤ 1 0 5 ) n(n\le 10^5) n(n≤105) 个点 ( x i , y i ) (x_i,y_i) (xi​,yi​),求两两点距离的平方和

CF76E题解

先看横坐标
手推一下柿子:
∑ i = 1 n ∑ j = i + 1 n ( x i − x j ) 2 = ∑ i = 1 n ∑ j = 1 n x i 2 + x j 2 − 2 × x i × x j = ( n − 1 ) × ∑ i = 1 n x i 2 − ∑ i = 1 n x i × [ ( ∑ j = 1 n x j ) − x i ] \sum_{i=1}^n\sum_{j=i+1}^n(x_i-x_j)^2=\sum_{i=1}^n\sum_{j=1}^nx_i^2+x_j^2-2\times x_i \times x_j=(n-1)\times \sum_{i=1}^nx_i^2-\sum_{i=1}^nx_i\times [(\sum_{j=1}^nx_j) - x_i] ∑i=1n​∑j=i+1n​(xi​−xj​)2=∑i=1n​∑j=1n​xi2​+xj2​−2×xi​×xj​=(n−1)×∑i=1n​xi2​−∑i=1n​xi​×[(∑j=1n​xj​)−xi​]
纵坐标同理
然后就没了

CF76E代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read(){
    int x = 0, f = 1;char ch = getchar();
    while(ch < '0' || ch > '9'){if(ch == '-') f = -1;ch = getchar();}
    while(ch >= '0' && ch <= '9'){x = (x << 1) + (x << 3) + (ch ^ 48);ch = getchar();}
    return x * f;
}
const int maxn = 1e5 + 10;
int n;
int x[maxn], y[maxn];
int sumx, summx, sumy,summy;
signed main(){
    n = read();
    for(int i = 1;i <= n;i++){
        x[i] = read();y[i] = read();
        sumx += x[i];summx += (x[i] * x[i]);
        sumy += y[i];summy += (y[i] * y[i]);
    }
    int ans = 0;
    for(int i = 1;i <= n;i++){
        ans -= x[i] * (sumx - x[i]);
        ans -= y[i] * (sumy - y[i]);
    }
    ans += (n - 1) * (summx + summy);
    printf("%lld\n",ans);
    return 0;
}

CF76F

链接

CF76F题意

在一个数轴上有 n n n 个事件,每个事件的坐标是 x i x_i xi​,会在 t i t_i ti​ 这一时刻出现(之后消失),请问

  • 如果从原点在 0 0 0 时刻出发,那么最多能看到多少个事件
  • 如果可以从任意位置出发,那么最多能看到多少个事件

CF76F题解

首先对于一对点 ( i , j )   ( t i > t j ) (i,j)\space(t_i > t_j) (i,j) (ti​>tj​),如果从 j j j 在 t j t_j tj​ 时刻出发,能看到 i i i 的事件的条件

  • 当 x i > x j x_i>x_j xi​>xj​ 时
    从 j j j 能赶到 i i i    ⟺    \iff ⟺ − x j + v × t j ≤ − x i + v × t i -x_j+v\times t_j\le -x_i+v\times t_i −xj​+v×tj​≤−xi​+v×ti​
  • 当 x i < x j x_i<x_j xi​<xj​ 时
    从 j j j 能赶到 i i i    ⟺    \iff ⟺ x j + v × t j ≤ x i + v × t i x_j+v\times t_j\le x_i+v\times t_i xj​+v×tj​≤xi​+v×ti​

发现一个问题,就是将上面两个柿子推导一下

  • 当 x i > x j x_i>x_j xi​>xj​ 时
    从 j j j 能赶到 i i i    ⟺    \iff ⟺ − x j + v × t j ≤ − x i + v × t i -x_j+v\times t_j\le -x_i+v\times t_i −xj​+v×tj​≤−xi​+v×ti​    ⟺    \iff ⟺ 2 x j − x j + v × t j ≤ 2 x i − x i + v × t i 2x_j-x_j+v\times t_j\le 2x_i-x_i+v\times t_i 2xj​−xj​+v×tj​≤2xi​−xi​+v×ti​    ⟺    \iff ⟺ x j + v × t j ≤ x i + v × t i x_j+v\times t_j\le x_i+v\times t_i xj​+v×tj​≤xi​+v×ti​
  • 当 x i < x j x_i<x_j xi​<xj​ 时
    从 j j j 能赶到 i i i    ⟺    \iff ⟺ x j + v × t j ≤ x i + v × t i x_j+v\times t_j\le x_i+v\times t_i xj​+v×tj​≤xi​+v×ti​    ⟺    \iff ⟺ x j − 2 x j + v × t j ≤ x i − 2 x i + v × t i x_j-2x_j+v\times t_j\le x_i-2x_i+v\times t_i xj​−2xj​+v×tj​≤xi​−2xi​+v×ti​    ⟺    \iff ⟺ − x j + v × t j ≤ − x i + v × t i -x_j+v\times t_j\le -x_i+v\times t_i −xj​+v×tj​≤−xi​+v×ti​

也就是如果让 j ← i j \gets i j←i 需要让上面两个柿子都成立
不妨设 a i = − x i + v × t i , b i = x i + v × t i a_i=-x_i+v\times t_i,b_i=x_i+v\times t_i ai​=−xi​+v×ti​,bi​=xi​+v×ti​
如果按照 a i a_i ai​ 排序的话,就变成了要找一个最长的子序列使得 b i b_i bi​ 单调不降
问题就变成了 L I S LIS LIS
特别的,对于强制从原点出发的,因为 a 0 = b 0 = 0 a_0=b_0=0 a0​=b0​=0,故所有 a i < 0 a_i<0 ai​<0 或 b i < 0 b_i<0 bi​<0 的点不能选,特判一下即可

CF76F代码

#include<bits/stdc++.h>
using namespace std;
inline int read(){
    int x = 0, f = 1;char ch = getchar();
    while(ch < '0' || ch > '9'){if(ch == '-') f= -1;ch = getchar();}
    while(ch >= '0' && ch <= '9'){x=  (x << 1) + (x << 3) + (ch ^ 48);ch = getchar();}
    return x * f;
}
const int maxn = 1e5 + 10;
int n, V;
struct node{
    int pos, times;
    node(int times = 0,int pos = 0):pos(pos),times(times){}
    friend bool operator < (node a,node b){return a.times != b.times ? a.times < b.times : a.pos < b.pos;}
}a[maxn];

struct node1{
    int x, y;
    node1(int x = 0,int y = 0):x(x),y(y){}
    friend bool operator < (node1 a,node1 b){return a.x != b.x ? a.x < b.x : a.y < b.y;}
}b[maxn],tmp[maxn];

int x[maxn], y[maxn];
int que[maxn], r;

signed main(){
    n = read();
    for(int i = 1;i <= n;i++)a[i] = node(read(),read());
    V = read();
    int cnt = 0;
    for(int i = 1;i <= n;i++){
        b[i] = node1(-a[i].pos + V * a[i].times,a[i].pos + V * a[i].times);
        x[i] = -a[i].pos + V * a[i].times; y[i] = a[i].pos + V * a[i].times;
        if(b[i].x > 0 && b[i].y > 0){tmp[++cnt] = b[i];}
    }
    sort(x + 1,x + 1 + n);sort(y + 1,y + 1 + n);

    for(int i = 1;i <= cnt;i++){tmp[i] = node1(lower_bound(x + 1,x + 1 + n,tmp[i].x) - x,lower_bound(y + 1,y + 1 + n,tmp[i].y) - y);}
    sort(tmp + 1,tmp + 1 + cnt);
    int ans1 = 0;r = 0;
    que[0] = -1;que[++r] = 0x3f3f3f3f;
    for(int i = 1;i <= cnt;i++){
        int pos = upper_bound(que,que + r + 1,tmp[i].y) - que;
        if(que[pos] > tmp[i].y)que[pos] = tmp[i].y;
        if(pos >= r){que[++r] = 0x3f3f3f3f;}
    }
    ans1 = r - 1;

    for(int i = 1;i <= n;i++){b[i] = node1(lower_bound(x + 1,x + 1 + n,b[i].x) - x,lower_bound(y + 1,y + 1 + n,b[i].y) - y);}
    sort(b + 1,b + 1 + n);
    int ans = 0;r = 0;
    memset(que,0,sizeof(que));
    que[0] = -1;que[++r] = 0x3f3f3f3f;
    for(int i = 1;i <= n;i++){
        int pos = upper_bound(que,que + r + 1,b[i].y) - que;
        if(que[pos] > b[i].y)que[pos] = b[i].y;
        if(pos >= r){que[++r] = 0x3f3f3f3f;}
    }
    ans = r - 1;
    // for(int i = 1;i <= n;i++)printf("%d %d\n",b[i].x,b[i].y);
    printf("%d %d\n",ans1,ans);
    return 0;
}
CF762F Tree nesting 题解 CF762F 其实这个题也不是很复杂。 首先题目背景里说的是一个联通子图!!! 发现数据范围其实不是很大,我们不妨钦定一个节点为根SSS 的节点。那么本质上对于 SSS 中的每一个节点我们都需要对 TTT 进行一次匹配。 显然因为是联通子图是不可能进行树哈希的,我们考虑进行树形 DpDpDp。 不妨考虑设 f(u,v,S)f(u, v, S)f(u,v,S) 表示对于 u∈S,v∈Tu \in S, v \in Tu∈S,v∈T 的情况,已经匹配了 TTT 中集合 SSS 的方案数。 但是题目中说明的是 阅读详情

相关推荐

避开地图定位偏差!手把手教你用Python实现火星坐标与WGS84精准转换

本文深入解析了国内地图服务中火星坐标(GCJ-02)与国际标准WGS84坐标系之间的偏差问题,并提供了基于Python的精准转换解决方案。文章详细阐述了坐标转换的核心原理,手把手教你构建可复用的转换工具包,并演示如何将其集成到实际应用(如Flask API)中,帮助开发者和数据分析师有效解决地图定位不准、多源数据无法对齐的痛点,提升地理信息处理能力。

weixin_29250403的博客 125

题解 CF76A【Gift】

提供一种题解区没有的 麻烦的要死 的 LCT 做法 转换题意,求所有生成树 PPP 的 Min(Maxi∈Pgi×G+Maxi∈Psi×S) Min(Max_{i\in P}g_i\times G+Max_{i\in P} s_i\times S) Min(Maxi∈P​gi​×G+Maxi∈P​si​×S) 发现和 魔法森林 很像 考虑类似的维护方式 化边为点,先将边按 gig_igi​ 排序,然后逐条加入边,维护 sis_isi​ 的最小生成树,并在图连通后每次更新答案 考虑如何维护 sis_isi​

hongkongreporter 387

VS2019配置Qt5.14.2开发环境全流程(含MSVC2017 64-bit选择指南)

本文详细介绍了在VS2019中配置Qt5.14.2开发环境的完整流程,特别针对MSVC2017 64-bit编译器的选择提供了专业建议。从环境准备、Qt安装配置到VS2019集成设置,逐步指导开发者完成开发环境的搭建,并提供了常见问题的解决方案和高级优化技巧,帮助开发者高效进行Qt开发。

weixin_29243279的博客 513

CF76A·gift

初见安~【第一次写CF的题解QwQ】这里是传送门:Codeforces 76A Description The kingdom of Olympia consists ofNcities andMbidirectional roads. Each road connects exactly two cities and two cities can be connected with ...

樱狸✨愿携清风归来处 421

DDR5内存调优实战:手把手教你搞定Write Leveling Training Mode(附时序图解析)

本文深入解析DDR5内存调优中的Write Leveling Training Mode技术,详细介绍了其核心原理、硬件准备、实战步骤及常见问题解决方案。通过JESD79-5标准定义的反馈机制,帮助硬件工程师精确对齐DQS与CK信号,提升系统稳定性和数据可靠性。附有时序图解析和代码示例,适合DDR5内存系统设计与调试参考。

weixin_29256771的博客 550

LabVIEW QMH模板实战:从创建到错误处理的完整指南

本文提供LabVIEW QMH模板从创建到错误处理的完整实战指南。详细解析了队列消息处理器(QMH)作为LabVIEW核心设计模式如何实现任务解耦与异步通信,涵盖事件处理循环、消息处理循环的搭建、用户事件创建、队列引用管理、消息优先级控制以及健壮的错误处理机制,帮助开发者构建稳定、可维护的复杂应用程序。

white的博客 725

CF76A.Gift [最小生成树]

CF76A.Gift 题意:noi2014魔法森林弱化版QwQ,最小化\(max(g_i)*G + max(s_i)*S\)的最小生成树 考虑按g升序加边,用已在生成树中的边和新加入的边求当前最小生成树。 复杂度\(O(nm)\) vector真好用 #include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;algorithm&...

weixin_34146410的博客 177

图解联合概率密度、边缘概率密度、条件概率密度之间的关系

简要图解联合概率密度、边缘概率密度、条件概率密度之间的关系

一个搬运知识的笨小孩 2万+

牛客练习赛76 C-CG的通关秘籍 组合+数学推导

牛客练习赛76 C-CG的通关秘籍 组合+数学推导题意思路Code(702MS) 传送门:https://ac.nowcoder.com/acm/contest/10845/C 题意 有n个位置,[1..m]中的数无穷多个,构造所有可能的序列。有n个位置,[1..m]中的数无穷多个,构造所有可能的序列。有n个位置,[1..m]中的数无穷多个,构造所有可能的序列。 每个序列的贡献取决于,若ai>ai−1,贡献+1,若ai<ai−1,贡献−1.相等没有贡献。每个序列的贡献取决于,若a_i>a_

狙击美佐的博客 497

mongodb在游戏开发领域的优势

目前游戏服务器使用mysql作为数据库的较多,然而,使用mongodb来作为存储层,在某些方面比mysql更为方便和适合。

littleschemer的博客 1698

Istio ICA考试之路---2-2

找到dr部分,这部分可以在mirroring里找也可以和题2-1一样在Traffic Management的dr里复制,内容都一样。此题之后都是在cluster-2上操作,所以就不需要再切换了.之后的几题2.1节就忽略掉了。可以看到,80%的流量被镜像到了dev上,实际考试这步可以忽略。看到ex-ip是192.168.126.220。获取gw,把gateways加入到vs配置中。获取istio-ingress的ex-ip。就获得了这样一个模板文件。查看2个pod的日志。

Q先生 854

【最小生成树】CF76A Gift

题目链接 Description 有一个国家有N个城市和M条道路,这些道路可能连接相同的城市,也有可能两个城市之间有多条道路。 有一天,有一伙强盗占领了这个国家的所有的道路。他们要求国王献给他们礼物,进而根据礼物的多少而放弃占领某些边。对于每一条道路,强盗都给出了相应的要求,金子gi的数量,银子si的数量。也就是说若国王给强盗G个金子,S个银子,那么他们就会放弃占领满足gi<=G an...

qq_43398760的博客 435

编写一个程序实现顺序表的各种基本运算(假设顺序表的元数基本类型为Char)

/* *Copyright (c) 2016, 烟台大学计算机学院 *All rights reserved. *文件名称:main.cpp *作者:张旺华 *完成日期: 2016 年 7 月 1 日 *版本号:v1.0 *问题描述:编写一个程序实现顺序表的各种基本运算(假设顺序表的元数基本类型为Char) * */ #include #include #include

张旺华的博客 1万+

CF76A Gift 题解

CF76A Gift 题解

ShiRoZeTsu 741

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

CF76E Points 题解

(跑不满),会超时,所以我们要对原式进行化简。本题是一道数学题,第一反应是枚举。,让你求出各个点的距离的平方和。

luogu_553625的博客 152

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

CF1392A 题解

CF1392A 题解题目翻译算法讲解代码 题目翻译 ttt组询问,每次给出一个长度为 nnn 的序列 aaa,对于两个相邻的且不相同的数,你可以将他们合并起来,即将这两个数替换成它们的和。 注意到,你每次进行一次操作后,序列长度会 −1−1−1,现在你可以随意进行若干次操作,问最后序列长度最短是多少。 算法讲解 如果所有数字都一样那么就不能合并,输出n; 如果最大数字只有一个,那么从最大的开始合并。合并完毕后,他还是最大的所以一定可以合并成只有1个数了; 如果最大数字不止一个,和第2种一样可以处理 如果有

柴春阳的博客 269

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

CF76A GIFT

国王的礼物 微妙,题目很ok的表达了我想法 这个打法跟第k小生成树差不多 具体这题还是看题解。 #include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;algorithm&gt; #include&lt;vector&gt; using namespace std; typedef long long ll; con...

beautiful_CXW的博客 485

[CF733F]Drivers Dissatisfaction

触类旁通,举一反三。

七代目鸽影 262

CF-Educational 76 A,B,C,D,E

Contest:https://codeforces.com/contest/1257 目录 A-Two Rival Students(暴力) B-Magic Stick(规律) C-Dominated Subarray(暴力) D-Yet Another Monster Killing Problem(思维+暴力) E-The Contest(思维+DP) A-Two Rival...

永远鲜红の幼月的博客 623

CF集萃3

CF1118F2 - Tree Cutting 题意:给你一棵树,每个点被染成了k种颜色之一或者没有颜色。你要切断恰k - 1条边使得不存在两个异色点在同一连通块内。求方案数。 解:对每颜色构建最小斯坦纳树并判交。我用的树上差分实现。 然后把同一颜色的点缩成一个点,在新树上树形DP,fx表示x子树内,x所在连通块内有一个关键点的方案数。hx表示x所在连通块内没有关键点的方案数。 ...

weixin_34195142的博客 154

CF700C (枚举+tarjan)

Problem Break up (CF700C) 题目大意   给一张n个点,m条边的无向图,有边权,和起点S,终点T。 (n<=1000 , m<=30000)   要求最多割掉2条边,使得S到T不连通。   输出最小代价以及方案。 解题分析   如果只是割掉1条边,那么就是求割边了。   如果要割掉2条边,一个自然的思路就是枚举一条边后再求割点,这样复杂度...

aekijekzn484879763的博客 242

【dp】CF76F. Tourist

http://codeforces.com/problemset/problem/76/F 一个很奇怪的问题,某个人在X坐标上左右移动,方向任意随时可以改变,也随时可以停下,其最大速度为V。在坐标上某些点某些时刻(xi,ti)有特别的事情发生,如果那一瞬间停留在那个点上就将经历可以神奇的事情,问在这个人0时刻可以选择任意位置,以及0时刻在x=0位置上分别可以经历最多特别的...

weixin_30526593的博客 214

题解传送门

做个算法分类,这样找特定算法的题目就方便多了23333。

Resot的博客 1094

CF241E Flights 题解

题目 做了一下这道题,突然发现自己忘了差分约束,赶紧复习一下。 设当前有n个变量 a1,a2,...,an ,有若干组限制形如 ai≤aj+k (其中k为常数),则由点j向点i连一条边权为k的边,再从某一确定的变量出发跑最短路(如若a1=0,则设dis1=0,从点1出发跑最短路),得到的disi即为ai的最大值。类似的,若把上面的小于等于改成大于等于,跑最长路,就可以得到每个点的最小...

baobi9069的博客 210

CF747F Igor and Interesting Numbers

我佛了,这CF居然没有官方题解。 题意:给定k,t,求第k小的16进制数,满足每个数码的出现次数不超过t。 解: 每个数都有个出现次数限制,搞不倒。一开始想到了排序hash数位DP,不过写了写觉得不胜其烦,就弃疗了。 但是思考一下,如果我们知道了每个数的出现次数和数的位数,那么一次普通DP就能够求出方案数。 所以我们暴力做多次这种普通DP即可...... 具体来说,分为带前导0和不带前...

weixin_34347651的博客 198
上一篇: CF835
下一篇: CF1771
Call_me_Eric
博客等级 码龄4年 24粉丝 39原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值