B国拥有n个城市,其交通系统呈树状结构,即任意两个城市存在且仅存在一条交通线将其连接。A国是B国的敌国企图秘密发射导弹打击B国的交通线,现假设每条交通线都有50%的概率被炸毁,B国希望知道在被炸毁之后,剩下联通块的个数的期望是多少? Input一个数n(2<=n<=100000) 接下来n-1行,每行两个数x
问题描述 α−76星人入侵地球,尽管英勇的地球卫士们奋勇杀敌,但战火依然烧到了地球本球上,为了维护人类的利益,联合国决定建立m个避难所,第i个避难所能容纳ci个人,坐标为(pi,qi)。现在地球上还残余着n个国家,第i个国家有bi个人,坐标为(xi,yi),现在联合国给出了一个初步的疏散方案,即一个n*m
问题描述 51Nod为了活跃比赛前的气氛,组织了场抽卡比赛。这场比赛共 n 个人参加,主办方根据非欧血统鉴定器,得到了一些数据。每个人抽卡有 Mi 种可能,得到的卡能力值为 Aij 代价为 Gij 的可能性为 Pij ,所谓代价指的是玩家需要将一轮比赛后所得的点头盾的 Gij% 交给主办方。每轮比赛每
给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对。例如K = 8,数组A:{-1,6,5,3,4,2,9,0,8},所有和等于8的数对包括(-1,9),(0,8),(2,6),(3,5)。 输入 第1行:用空格隔开的2个数,K N,N为A数组的长度。(2 <= N <= 50000,-10^9 <= K <= 10^9) 第2 - N
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给出2个整数A,B。可以使用任意次。再给出一段从X - Y的区间T,任选若干个A,B做加法,可以覆盖区间T中多少个不同的整数。 例如:A = 8,B = 11,区间T为3 - 20。在3 - 20中,整数8(8),11(11),16(8+8),19(8+11)。
\(n\) 个点被 \(n-1\) 条边连接成了一颗树,给出 \(a \to b\) 和 \(c\to d\) 两个区间,表示点的标号请你求出两个区间内各选一点之间的最大距离,即你需要求出 \(\max(dis(i,j) |a<=i<=b,c<=j<=d)\) Solution 如果我们有 \(S_1,S_2\) 两个点集合,那么 \(S_1,S_2\) 各取一个点获得最大距
在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。 如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序数是4。给出一个整数序列,求该序列的逆序数。 Input 第1行:N,N为序列的长度(n <= 50000) 第2 - N
#include <bits/stdc++.h> using namespace std; #define int long long const int mod = 7; struct matrix { int a[5][5]={}; int n,m; }; matrix I(int n) { matrix ret; ret.n=n; ret.m=n; for(int i=1;i<=n;i++) ret.a[i][i]=1;
动态规划 1002 数塔取数问题 1.0 秒 131,072.0 KB 5 分 1级题 一个高度为N的由正整数组成的三角形,从上走到下,求经过的数字和的最大值。 每次只能走到下一层相邻的数上,例如从第3层的6向下走,只能走到第4层的2或9上。 5 8 4 3 6 9 7 2 9 5 例
\(dp[i][0/1]\) 表示考虑前 \(i\) 个元素,以 \(i\) 结尾的最大子段和,\(0\) 表示还未交换过,\(1\) 表示已经交换过 \(dp[i][0] = a[i] + \max\{dp[i-1][0],0\}\) \(dp[i][1] = \max\{dp[i][0],dp[i-1][1]+a[i],dp[i-1][0]+\max\{pre[st[i-1]-1],a[i]\},\max\{pre[i-1]\}\}\) \(pre
题目 PAT-B 1079 延迟的回文数【字符串+大数加法】 PAT-B 1017 A除以B【模拟 大数除法】 51Nod_1185 威佐夫游戏 V2 51Nod_1873 初中的算术【高精度小数】 51Nod_1130 N的阶乘的长度 V2(斯特林近似) 51Nod_1057 N的阶乘 51Nod_1029 大数除法 51Nod_1028 大数乘法 V2 51Nod_1027
最近在CF上补题,补到了一道关于约瑟夫环的题目(听都没听过,原谅我太菜) 就去好好学了一下,不过一般的题目应该是不会让你模拟过的,所以这次就做了一个约瑟夫环公式法变形的集合。 首先是最原始的约瑟夫环的题目:https://vjudge.net/problem/51Nod-1073(小数据规模) https://vjudge.net/prob
根据题意,需要交换的部分会形成若干个不相交的环,独立处理每个环。 每个环可以用环内的最小值去和其它元素交换,或者用全局最小值和环上最小值交换,做一遍再交换回去。 #include <cstdio> #include <cstring> const int MOD = 9973; int m, n, k; void M(int &a) { if (
题目传送门 分析: 开始玩一个小小的trick 我们发现\(f(n)=\sum_{d|n}\mu(d)\cdot d\)是一个积性函数 所以: \(~~~~f(n)=\prod f(p_i^{a_i})\) \(~~~~f(gcd(x,y))\cdot f(lcm(x,y))=\prod f(p_i^{min(a_i,b_i)})\cdot f(p_i^{max(a_i,b_i)})\) 可以疯狂使用交换律然后。。。 \(~~~~\p
51nod 题目口胡(1) 1039 X^3 Mod P 令g为P的原根,不妨设 gt1≡X(modP)g^{t_1}\equiv X \pmod{P}gt1≡X(modP),gt2≡A(modP)g^{t_2}\equiv A \pmod{P}gt2≡A(modP) (求离散对数) 显然有3t1≡t2(modP−1)3t_1 \equiv t_2 \pmod{P-1}3t1≡t2(modP−1) 求出离散对数t2之后, t
还有好多东西没做 无限之环 星际竞速 4823: 老C的方块 2007: 海拔 51nod 1551 集合交易
1590 合并数字 STL - List 练习题, 直接用 List 模拟题意即可,或者手写链表也行。 #include <bits/stdc++.h> using namespace std; const int N = 1e4 + 10; list<int> List[N]; int main(){ int n,x,y,y_idx,x_idx; cin >> n ; for(int i = 1;i <= n; ++i){//初始化全
题意 求 $\sum_{i=1}^n \sum_{j=1}^n gcd(i,j)$. 分析 $$\begin{aligned}\sum_{i=1}^n \sum_{j=1}^n gcd(i,j) &= \sum_{i=1}^n \sum_{j=1}^n d[gcd(i, j)=d] \\&= \sum_{d=1}^n d \sum_{i=1}^n \sum_{j=1}^n[gcd(i,j=d)] \\&= \sum_{d=1}^n d \sum_{
挺好玩的一场比赛。 链接 A 打表,打到\(2e4\)左右会发现有一个长度\(104\)的循环节。 #include<bits/stdc++.h> using namespace std; int col[5010][5010]; int dx[4] = {1,0,-1,0},dy[4] = {0,1,0,-1}; long long n,tem=0; int main() { cin >> n; int x=0,y=0,d=0;
有这样一段两两求最大公约数的程序CoGcd, int Gcd(int x, int y){ if(y == 0)return x; return Gcd(y, x % y); } void CoGcd(int m){ for(int i = 1; i <= m; i++) for(int j = 1; j <= m; j++) Gcd(i, j); } 给出m的值,进行t次询问,每次询问包含一对x
题意 求本质不同子序列的数量。 传送门 思路 思路一:\(dp[i] = \sum_{j=last[a[i]]}^{i-1} dp[j]\) \(dp[i]\) 表示第 i 位数字作为子序列的最后一位的数量。 当\(a[i]\) 未出现过时: \(dp[i]\) 可从之前所有状态包括空串转移过来,即:\(dp[i] = \sum_{j=0}^{i-1}dp[j]\)。 当\(a[i]\)
题目描述 两个质数的和是S,他们的积最大是多少? 输入 一个不大于10000的正整数S,为两个质数的和。 输出 一个整数,为两个质数的最大乘积。数据保证有解。 输入样例 21 输出样例 38 题解: 求出≥s的第一个素数,把前面的素数都放入一个数组,然后开一个O(n2)的枚举即可。 代码: #i
二级题(68): 1007 正整数分组(dp) 1050 循环数组最大子段和(dp) 1031 骨牌覆盖(斐波拉契数列) 1062 序列中最大的数(暴力) 1133 不重叠的线段(贪心) 1428 活动安排问题(贪心,任务调度) 1432 独木舟(贪心) 1433 0和5
题目链接 #include <iostream> #include <vector> #include <cstring> using namespace std; const int N = 103; int n, m; vector<int> G[N]; int match[N], st[N]; bool find(int x){ for(int j = 0; j < G[x].size(); j++){ int v = G[x][j];
学python嘻嘻,每题第一个是自己的代码,后面的是看见有些好的代码就顺手保存一波了~侵删 1916 购物 import mathdef isok(X: int,L: int, Z:int)->bool: if(Z>=180) : Z = 360 - Z; if(5*L*1.0 >= math.pi*Z*X/90) : return True return FalseT = int(input())while(T):