B君的第九题】的更多相关文章

B君的第九题 对于一个排列\(a_1, a_2,\dots,a_n\),如果对于一个i满足\(a_{i-1}<a_i>a_i+1\)则称i是一个极大值.我们认为\(a_0=a_{n+1}=0\).考虑\(1,2,\dots,n\)的所有排列,问有多少个排列恰好有m个极大值.输出答案对p取模的结果.\(1\le n\le10^9, 1\le m\le10, 2\le p\le1001\) 对于统计排列数,其实没有必要按照给出的a的顺序来dp,可以先把a从小到大排序,然后用\(f[i][j]\)表…
题意 分析 考场70分 一看就是裸的kmp,直接打上去. #include<cstdlib> #include<cstdio> #include<cmath> #include<cstring> #include<iostream> #include<string> #include<vector> #include<list> #include<deque> #include<stack&g…
B 君的第二题 (hongkong) 题目大意: 一个长度为\(n(n\le2\times10^5)\)的数组,给定一个数\(k(k\le40)\).用\(a[i][j]\)表示该数组\(i\)次前缀和中第\(j\)项的值,要求支持以下两种操作: 输入\(x,y\),将\(a[0][x]\)加上\(y\): 输入\(x\),求\(a[k][x]\)的值. 思路: 题目询问的实际上就是\(\sum_{i=1}^x\binom{x-i+k-1}{k-1}a[0][i]\). 我们可以得到 \[ \b…
FALSE分值:10 来源: iFurySt 难度:易 参与人数:4567人 Get Flag:2144人 答题人数:2157人 解题通过率:99% PHP代码审计 hint:sha1函数你有认真了解过吗?听说也有人用md5碰撞o(╯□╰)o 格式:CTF{} 解题链接: http://ctf5.shiyanbar.com/web/false.php 原题链接:http://www.shiyanbar.com/ctf/1787 [解题报告] 这是我入门Web开始写的第九道题,打开解题链接,这道题…
题意 分析 考场做法 对p的幂打表发现,我们一定可以把x和y的二进制位从低到高依次调整成0. 具体而言,从0次幂开始每两个分为一组a,b,那么0,a,b,a+b组合中的一种可以将x,y的对应二进制位都调整成0. 然后模拟一下就行了. 时间复杂度\(O(\log |x| + \log |y|)\) #include<cstdlib> #include<cstdio> #include<cmath> #include<cstring> #include<i…
Problem: Determine whether an integer is a palindrome. Do this without extra space. click to show spoilers. Some hints: Could negative integers be palindromes? (ie, -1) If you are thinking of converting the integer to string, note the restriction of…
题意 分析 考场暴力50分. 考虑bfs序,一个点的儿子节点的bfs序一定连续,所以对bfs序建线段树,努力打一下就行了. 时间复杂度\(O(n \log n + m \log n)\) #include<cstdlib> #include<cstdio> #include<cmath> #include<cstring> #include<iostream> #include<string> #include<vector&g…
题意 分析 考场50分 旁边的L君告诉我,求的就是非升子序列的个数,于是写了个树状数组. 但是\(\mod{2333} > 0\)还需要组合数中没有2333的倍数,所以实际上只得了\(a_i \leq 2333\)的部分分,还好. #include<cstdlib> #include<cstdio> #include<cmath> #include<cstring> #include<iostream> #include<string…
题意 分析 考场爆零做法 考虑dp,用\(f(i,j,0/1)\)表示i及其子树中形成j个边连通块的方案数,其中i是否向外连边. \(O(n^3)\),转移方程太复杂就打挂了. #include<cstdlib> #include<cstdio> #include<cmath> #include<cstring> #include<iostream> #include<string> #include<vector> #i…
Palindrome Number time=434ms 负数不是回文数 public class Solution { public boolean isPalindrome(int x) { int palindrome=0; int revers=x; if(revers<0) return false; else{ while(revers>0){ int m=revers%10; palindrome=m+palindrome*10; revers=revers/10; } if(p…
第七题题目描述: 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1].请根据这个假设,如果反转后整数溢出那么就返回 0. 代码如下: int reverse(int x) { ; while (x) { || (num == INT32…
#include <bits/stdc++.h> #define M 1005 using namespace std; int n; char map1[M][M]; bool vis[M][M]; int dir[4][2] = {{1,0},{-1,0},{0,1},{0,-1}}; void dfs(int x,int y) { vis[x][y] = 1; for(int i = 0; i < 4; i++) { int dx = x + dir[i][0]; int dy =…
带分数 100 可以表示为带分数的形式:100 = 3 + 69258 / 714 还可以表示为:100 = 82 + 3546 / 197 注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0). 类似这样的带分数,100 有 11 种表示法. 题目要求: 从标准输入读入一个正整数N (N<1000*1000) 程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数. 注意:不要求输出每个表示,只统计有多少表示法! 例如: 用户输入: 100 程序输出: 11 再例如: 用户…
(17')夺冠概率 足球比赛具有一定程度的偶然性,弱队也有战胜强队的可能. 假设有甲.乙.丙.丁四个球队.根据他们过去比赛的成绩,得出每个队与另一个队对阵时取胜的概率表: 甲 乙 丙 丁 甲 - 0.1 0.3 0.5 乙 0.9 - 0.7 0.4 丙 0.7 0.3 - 0.2 丁 0.5 0.6 0.8 - 数据含义:甲对乙的取胜概率为0.1,丙对乙的胜率为0.3,... 现在要举行一次锦标赛.双方抽签,分两个组比,获胜的两个队再争夺冠军.(参见[1.jpg]) 请你进行10万次模拟,计算…
剪格子 如图p1.jpg所示,3 x 3 的格子中填写了一些整数. 我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是60. 本题的要求就是请你编程判定:对给定的m x n 的格子中的整数,是否可以分割为两个部分,使得这两个区域的数字和相等. 如果存在多种解答,请输出包含左上角格子的那个区域包含的格子的最小数目. 如果无法分割,则输出 0 程序输入输出格式要求: 程序先读入两个整数 m n 用空格分割 (m,n<10) 表示表格的宽度和高度 接下来是n行,每行m个正整数,用空格分开.每…
class Solution { public: bool isPalindrome(int x) { ) return false; ;//这里使用long,也不判断溢出了,反正翻转不等就不是回文 int a=x; ) { y=(a%)+y*; a=a/; } if (y==x) return true; else return false; } }; 分析: 我看到人家问能不能不用字符串,第一反应是,哦,可以用字符串啊.... 这个思路好像也不难,就不写字符串了,但是我还是出现了两处失误,一…
题目链接:http://www.codeforces.com/problemset/problem/69/A题意:给你n个三维空间矢量,求这n个矢量的矢量和是否为零.C++代码: #include <cstdio> #include <iostream> using namespace std; int x, y, z; int main() { int n, tx, ty, tz; cin >> n; while (n--) { cin >> tx >…
地宫取宝 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能向右或向下行走. 走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿). 当小明走到出口时,如果他手中的宝贝恰好是k件,则这些宝贝就可以送给小明. 请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这k件宝贝. [数据格式] 输入一行3个整数,用空格分开…
垒骰子 赌圣atm晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体. 经过长期观察,atm 发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥! 我们先来规范一下骰子:1 的对面是 4,2 的对面是 5,3 的对面是 6. 假设有 m 组互斥现象,每组中的那两个数字的面紧贴在一起,骰子就不能稳定的垒起来. atm想计算一下有多少种不同的可能的垒骰子方式. 两种垒骰子方式相同,当且仅当这两种方式中对应高度的骰子的对应数字的朝向都相同. 由于方案数可能过多,请输出模 10^…
标题:全球变暖 你有一张某海域NxN像素的照片,"."表示海洋."#"表示陆地,如下所示: ....... .##.... .##.... ....##. ..####. ...###. ....... 其中"上下左右"四个方向上连在一起的一片陆地组成一座岛屿.例如上图就有2座岛屿. 由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没.具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹…
// 面试题:用两个栈实现队列 // 题目:用两个栈实现一个队列.队列的声明如下,请实现它的两个函数appendTail // 和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能. #include <iostream> #include <stack> using namespace std; template <typename T> class CQueue//模板类,习惯就好了 { private: stack<T> sta…
题意 分析 考场爆零做法 考虑位数少的一定更小,高位小的一定更少. 然后计算一定位数下不同数字的个数,然后从高到低依次确定数位. 特例:如果确定的高位的后缀出现了x,那么要把x调整到后缀去,这样一定更优. 然而这样做有问题,有重复的情况,譬如样例1的6666. #include<cstdlib> #include<cstdio> #include<cmath> #include<cstring> #include<iostream> #inclu…
题意 分析 考场85分 用multiset暴力,由于教练的机子飞快,有写priority_queue水过了的人. #include<cstdlib> #include<cstdio> #include<cmath> #include<cstring> #include<ctime> #include<iostream> #include<string> #include<vector> #include<…
题意 分析 二次剩余问题. x,y相当于二次方程 \[ x^2-bx+c=0 \mod{p} \] 的两根. 摸意义下的二次方程仍然考虑判别式\(\Delta=b^2-4c\). 它能开根的条件是\(\Delta=0\)或\(\Delta^{\frac{p-1}{2}}=1\) 若能开根,则根为\(\Delta^{\frac{p+1}{4}}\) 然后就是普通的解一元二次方程了. 代码 #include<cstdlib> #include<cstdio> #include<c…
题意 分析 考场做法同标解. 画图模拟分析发现,无论操作顺序怎样,操作数的奇偶性是不变的. 所以等同求出,以每点为根的操作数奇偶性. 用\(f(x)\)表示x及其子树中的边,包括x到它fa的边,将他们全部置0的操作数. \(f(x)\)与\(\sum_{y \in son(x)}f(y)\)的奇偶性有关,但是分4种情况讨论又可以发现,其实f(x)只跟x到fa这条边有关. 那么每点换成根之后,总操作数的奇偶性只跟根节点周围的边的奇偶性有关,于是可以\(O(n)\)做. 代码 #include<cs…
题意 分析 快速子集和变换以及快速超集和变换的裸题. 用\(f(s)\)表示集合s的方案数,初始化为输入中s出现的次数. 做一遍快速子集和变换,此时f(s)表示s及其子集在输入中出现的次数. 对所有f(s)所表示的数两两组合,此时f(s)表示生成s及其子集的方案数. 做一遍快速子集差变换,此时f(s)表示生成s的方案数. 做一遍快速超集和变换,此时f(s)表示生成s及其超集的方案数. 时间复杂度\(O(n \cdot k)\) 浅谈FST 感觉就是对每一个二进制位纵向更新,这样就不会算重,时间复…
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 元素的顺序可以改变.你不需要考虑数组中超出新长度后面的元素. 示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2. 你不需要考虑数组中超出新长度后面的元素. 示例 2: 给定 nums = [0,1,2,2,…
  历届试题 地宫取宝   时间限制:1.0s   内存限制:256.0MB     锦囊1   锦囊2   锦囊3   问题描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能向右或向下行走. 走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿). 当小明走到出口时,如果他手中的宝贝恰好是k件,则这些宝贝就可以送给小明.…
Equal Sums time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output You are given kk sequences of integers. The length of the ii-th sequence equals to nini. You have to choose exactly two sequences…
标题: 分巧克力 儿童节那天有K位小朋友到小明家做客.小明拿出了珍藏的巧克力招待小朋友们.    小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形. 为了公平起见,小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们.切出的巧克力需要满足: 1. 形状是正方形,边长是整数      2. 大小相同 例如一块6x5的巧克力可以切出6块2x2的巧克力或者2块3x3的巧克力. 当然小朋友们都希望得到的巧克力尽可能大,你能帮小Hi计算出最大的边长是多少么? 输入第一行包含两个整数N和…