solved:3
rank:105
治哥出題了 我感動哭了
a graph game (分塊)
題意:1e5個點 2e5條邊 s(x)表示與x點直接相鄰的點集合
有兩種操作 1種將按輸入順序的邊第l條到第r條邊翻轉 連線->切斷 切斷->鏈結
還有一種詢問 s(x)與s(y)是否相等
題解:題解說 可以給每個點隨機乙個值 然後s(x)可以用與x直接相鄰的點xor起來 (還有這種操作???
然後我們把邊分塊 翻轉操作就是xor操作 每個點之間邊的狀態是一樣的 所以可以共用
而且對一條邊的修改 影響的只有兩個點的資訊 所以對塊兩邊的邊暴力修改他所影響的點
#include usinga graph gamenamespace
std;
const
int maxn = 1e5 + 5
;int
n, m, blo;
int bl[maxn << 1
];int sum[maxn][505
];int
now[maxn];
intval[maxn];
int u[maxn << 1
];int v[maxn << 1
];int vis[505
];void update(int l, int
r)
if(bl[l] !=bl[r])
}for(int i = bl[l] + 1; i < bl[r]; i++) vis[i] ^= 1;}
intmain()
int qu; scanf("
%d", &qu);
while(qu--)
}if(ans1 == ans2) printf("1"
);
else printf("0"
); }
}puts(
"");
}return0;
}
f planting trees
題意:500x500的矩陣 求乙個最大的子矩陣 使得區間最大減最小<=m
題解:列舉縱座標的區間 對於每乙個區間 從第一行開始 單調尺取搞一搞
#include usingf planting treesnamespace
std;
int a[505][505
];int zd[505
];int zx[505
];int qd[505
];int qx[505
];int
main()
int ans = 1
;
for(int j = 1; j <= n; j++)
for(int k = j; k <= n; k++)
int lx = 1, rx = 0
;
int ld = 1, rd = 0
;
int nowl = 1
;
for(int i = 1; i <= n; i++)
if(nowl <= i && zd[qd[ld]] - zx[qx[lx]] <=m) }}
}printf(
"%d\n
", ans);
}return0;
}
g removing stones
題意:n堆石子 每次可以選擇兩堆不同的各拿走乙個 如果能拿完 就表示獲勝
如果石子的和為奇數 則將最少的一堆石子數-1
問有多少對區間 能獲勝
題解:顯然 題目等於 計算 區間max * 2 <= 區間和的個數
考慮反問題 計算max * 2 > 區間和
然後直接暴力列舉每個點作為最大值 往前搞搞 往後搞搞
巧妙的是這樣的時間複雜度其實並不高 要讓這樣暴力列舉的時間複雜度退化到n方的資料 顯然是ai >= ai+1 * 2
舉個例子長度為5的陣列 16 8 4 2 1 能讓暴力列舉的複雜度退化到n方 但是ai < 1e9
均攤一下每個數的平均列舉到log
#include usingg removing stonesnamespace
std;
typedef
long
long
ll;ll a[
300005
];ll pre[
300005
];int
main()
}ans +=cnt;
ll sum = 0
;
for(int j = i - 1; j >= 1; j--)
if(sum + pre[r] < a[i]) ans +=r;
else ans +=l;}}
ans = n * (n - 1) / 2 -ans;
printf(
"%lld\n
", ans);
}return0;
}
2019牛客多校 Round8
solved 3 rank 261 e explorer 線段樹 題意 n個點 m條邊 每條邊只有身高l,r內的人可以穿過 問有幾種身高可以從1走到n 題解 把l,r離散化後 左閉右開 線段樹葉子節點維護區間 然後從線段樹根節點dfs下去 這個區間能不能產生貢獻的關鍵在於1和n的聯通 所以用可撤銷的...
2018牛客多校3
h diff prime pairs 1 3 1 5 1 7 1 11.2 3 2 5 2 7 2 11.3 3 3 5 3 7 3 11.4 3 4 5 4 7 4 11.打個素數表 用素數篩一遍 includeusing namespace std bool a 11111111 int zs ...
19牛客暑期多校 round2 F dfs
題目傳送門 res tp nowcoder dfs先將所有人都歸於一隊,之後從一隊中取出人放置到另乙個隊。include include includeusing namespace std typedef long long ll int n const int l 30 ll a l l ll ...