首页 > TAG信息列表 > 51NOD

51nod模拟4/CSP-S模拟3

T1 score and rank %%t%ourist 比较智慧的贪心。考虑类似求最大子段和类的东西,我们逐个i考虑,当$a_i <0 $时,以i结尾的最大子段显然不会再超过S,但是它会抵消掉一部分之前的数 点击查看代码 #include <bits/stdc++.h> typedef long long ll;typedef unsigned long long ull; typed

51nod 省选3 4补题

3 B 考虑分手是祝愿的推法。 再者,为什么能把每一维的行走都看成步,然后只要计算总步数的答案? 某一维到边界后就不会在走了。 可能是某些维交替进行的 撤销操作不一定是对应同一维减一,仅跟上一次的操作有关,即启发我们把每一维的行走都看成步。 多写写期望题吧。 4 C SAM!!!!

51nod 模拟2

A. 直接pow,代码略 B 分子分母分开处理 \(a/b\)转移到\(\frac{\frac{a}{b}+\frac{b}{a}}{2} = \frac{a^2+b^2}{2ab}\) 然后\(a'=a^2+b^2, b'=2ab\)所以\(a'+b'=(a+b)^2, a'-b' = (a-b)^2\) 可以找规律完成递推 %:pragma GCC optimize(3) #include<bits/stdc++

51nod 矩形的数量V9

http://www.51nod.com/Contest/Problem.html#contestProblemId=4864 题面 在 m∗n 的方格中,有一些格子被涂了色。现在请问整个图形中,共能找出 完全涂了色 的不同形状的矩形分别有多少个? 输入 第一行输入两个数m,n,分别表示方格的列数、行数;(1<=m,n<=600) 之后n行,每行一个m个字符组成

51Nod 1272 最大距离

题目:给了一个数组如果他后面存在大于等于该元素的数,则这两个数可以组成一对。 注意这里说的是下标可以为一对,每个元素和自己也可以组成一对。 例如:{5, 3, 6, 3, 4, 2},可以组成11对,如下(数字为下标):(0,0), (0, 2), (1, 1), (1, 2), (1, 3), (1, 4), (2, 2), (3, 3), (3, 4), (4, 4), (

「题解」51Nod 加权约数和

咱就是说要卷起来。思维也不能僵化。 \(\sum_{i=1}^{n} \sum_{j=1}^{n} {\max(i,j)\sigma(ij)}\) 老套路。 \(\sum_{i=1}^{n} \sum_{j=1}^{n} \max(i,j)\sum_{u|i}\sum_{v|j}[(u,v)=1]\frac i u v\) \(\sum_{i=1}^{n} \sum_{j=1}^{n} \max(i,j)\sum_{u|i}\sum_{v|j}\sum_{gcd

51Nod B 小明与回转寿司V2

传送门 题目 小明来到一家新开的日料店品尝回转寿司。 料理师傅共准备了26种不同的寿司,记为a~z。每次他都会选出每种寿司各一枚,按照一定顺序(如mildreabcfghjknopqstuvwxyz)放到传送带上,记为一轮。之后每轮,师傅都会按照同样的顺序将寿司放上传送带。 由于店内客人较多,寿司到达小明

51nod 3216 授勋

历经旷日持久的战争之后,百纳瑞王国(The Kingdom of Binary)终于迎来了胜利的曙光。于是国王决定在胜利日这一天为在战争中奋战的将领们授勋。 已经需要为N位将领授勋,他们每人有一个功勋值p[i]。国王准备了不同种类的勋章,它们分别代表1,2,4,8,16......(即2的幂次)的功勋值。国王将用

[51nod : 2102][位运算] 或减与

题目 \(Link\) 解析 按照题目说法,即输出 \(a | b - a & b\) 即可。 但是按照这则运算,可以发现\(a | b - a & b = a ^ b\) 这个可以举例说明,再次就不赘述了。 Code #include <bits/stdc++.h> #define ll long long using namespace std; int main () { ll a, b; scanf ("%lld%ll

#原根,BSGS,扩欧#51nod 1038 X^A Mod P

题目 \(T(T\leq 100)\) 组询问在模 \(P\) 意义下给 \(B\) 开 \(A\) 次方根, 求出 \([0,P)\) 的所有解,\(P\) 是一个质数。 分析 求出 \(P\) 的原根 \(G\),若 \(G^x\equiv B\pmod{P}\),这个 \(x\) 可以通过 BSGS 求出来。 那么 \(X^A\equiv B\pmod{P}\) 就可以转换成 \(G^{kA}\equiv G

[51nod : 2106] [位运算] 一个奇数次

一个奇数次 51nod 题目 \(Link\) 解析 这里采用的是位运算异或。 让 ans 每次都异或输出的数,因为 a ^ a = 0 的, 所以每次异或时出现偶数次的数就可以消掉(异或符合交换律)。 因为题目中指定只有一个数会出现奇数次,所以易证这个做法的正确性。 Code #include <bits/stdc++.h> using n

51nod 1268

51nod 1268 基础dfs 题目如下: 给出 N 个正整数组成的数组 A,求能否从中选出若干个,使他们的和 为 K。如果可以,输出:”Yes”,否则输出"No"   样例: 输入: 5 13246810 输出: No   题目分析: 该题目是最基础的dfs深度优先搜索算法的题目,思路就是将枚举尝试每个数并求和,如果发现所有数都枚

51nod 01组成的N的倍数 题解

前言 发现一道好题目。题目广搜,需要绝妙的数学证明与剪枝,思维含量较大,搜索玩出花来。 若在比赛中肯定想不出正解(话说这篇题解也不是最优解)。我的数学太弱了……抽屉原理都不知道…… 看题解吧: ) 题目 给定一个自然数N,找出一个M,使得M>0且M是N的倍数,并且M的10进制表示只包含0或1。

51Nod 2602 树的直径

题目链接:51Nod 2602 树的直径 题目大意: 题解: 两遍\(dfs\),第一遍从根开始找到最深的结点,第二遍从最深的结点开始得到树的直径。 #include <cstring> #include <iostream> using namespace std; struct Edge { int v, next; } edge[200010]; int head[100010], cnt; int n, di

队列复原 51Nod - 2151 java题解

题目描述: 小瓜现在让1到n这n个整数排成一列,但是他只告诉你每个整数的后面那个数是什么(最后一个整数的后面那个数是0),请你帮忙复原这个队列。 Input 第一行一个整数n(n<=100000),表示有n个整数。 接下来n行,每行两个数i,j,表示排在整数i后面的那个数是j。 Output n行,每行一个整数,表

NOI科目校 信息学知识点测评-图论专题【51nod】 游记

比赛地址:Link A 颜色块 1.0 秒 131,072.0 KB 100 分 一张 \(m\times n\) 的图片,每个点有一个颜色,相同颜色的点连在一起(上下左右四连通)属于同一个颜色块,问这张图片共有多少个颜色块。数据保证单个颜色块的点数量不超过 \(10^5\)。 输入 第一行:2个数\(n\),\(m\),中间用空格分隔,表示地

51nod 补题

11.27 孢子传播 暴力连边是 \(O(n^{2})\),发现 \(k\) 很小,考虑把每个种类的孢子移动表现出来 建 \(nk\) 个新点,\(id[i,j]\) 表示一个从类型 \(j\) 土壤出发的孢子走到 \(i\) 的最小距离,连边: 原点散发孢子:\((i,id[i,q[i]],0)\) 孢子移动 \((id[i-1,j],id[i,j],1),(id[i,j],id[i+1,j

#直径,线段树#51nod 1766 树上的最远点对

题目 多组询问,在 \([a,b]\) 和 \([c,d]\) 中分别选一个点 \(x,y\) ,使得 \(dis(x,y)\) 最大 分析 考虑直径的一个性质,两个点集两条直径的四个端点可能成为合并后点集的直径, 用线段树维护区间直径询问时合并即可,LCA可以用dfs序 \(O(1)\) 询问 代码 #include <cstdio> #include <cc

【51nod】2092 翻转数组

原题链接: 【51nod】 翻转数组 思维点: 字符串的应用 ac代码 #include<cstdio> using namespace std; int main() { int n; int a[100000]; scanf("%d", &n); for(int i = 0; i < n; i++) scanf("%d", &a[i]); printf("%d\n", n); for

Anigram单词 51Nod - 1095

题 一个单词a如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的Anigram,例如单词army和mary互为Anigram。另:相同的2个单词不算Anigram。现在给定一个字典,输入Q个单词,从给出的字典中找出这些单词的Anigram。 Input 第1行:1个数N,表示字典中单词的数量。(1 <= N <=

51Nod - 1095 Anigram单词(map容器)

链接┗|`O′|┛ 嗷~~ 一个单词a如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的Anigram,例如单词army和mary互为Anigram。另:相同的2个单词不算Anigram。现在给定一个字典,输入Q个单词,从给出的字典中找出这些单词的Anigram。 Input 第1行:1个数N,表示字典中单词的

51nod 分成两组

很简单的搜索 每一个数都有放和不放两种 然后暴力就好了 然后代码 #include<bits/stdc++.h> using namespace std; long long a[25]; int read(){//一个快读 int x=0,f=1; char ch=getchar(); while(!isdigit(ch)){ if(ch=='-') f=-1; ch=getchar(); } while(isdigit(

51Nod-1597 有限背包计数问题 根号分治

51Nod-1597 有限背包计数问题 根号分治 题意 有一个大小为\(n\)的背包,第\(i\)种物品的大小是\(i\),且有\(i\)个 求装满背包的方案数是多少个 \[1 \leq n \leq 1e5 \]分析 容易发现当\(i > \sqrt{n}\)的时候个数大小相当于没有限制,因此这道题可以往根号分治的角度去思考 当\(i \le

51Nod 1432 独木舟

题目链接:51Nod 1432 独木舟 题目大意: 题解: 按体重从小到大排序,两个指针分别指向头尾,从最重的开始分配船只,他可以和当前最轻的坐船,如果重量超了就自己坐船。 #include <algorithm> #include <iostream> using namespace std; long long w[10010], n, m; int main() { ios::s

51Nod 2605 没有上司的舞会

题目链接:51Nod 2605 没有上司的舞会 题目大意: 题解: 树形\(dp\)很经典的一道题,各职员的上下级关系可以构成一棵树。 设\(dp[i][1/0]\)表示编号为\(i\)的职员参加或不参加聚会时,以他为根的子树所能获得的最大快乐指数。 当某职员参加聚会时,他的下级只能不参加;当他不参加聚会时,他的