问题描述 如下图所示,3 x 3 的格子中填写了一些整数. +--*--+--+ |10* 1|52| +--****--+ |20|30* 1| *******--+ | 1| 2| 3| +--+--+--+ 我们沿着图中的星号线剪开,得到两个部分,每个部分的数字和都是60. 本题的要求就是请你编程判定:对给定的m x n 的格子中的整数,是否可以分割为两个部分,使得这两个区域的数字和相等. 如果存在多种解答,请输出包含左上角格子的那个区域包含的格子的最小数目. 如果无法分割,则输出 0.…
简要题意 给你一个长度为 \(n\) 的正整数序列 \(a\),有 \(m\) 个询问,每一个询问给出一个区间 \([l,r]\).定义函数 \(f(x)=\lfloor\log_{2}(x)+1\rfloor\).将 \([l,r]\) 的所有元素 \(a_p\) 修改为 \(f(a_p)\).然后输出序列 \(a\) 的全局和. 对于 \(100\%\) 的数据,\(1 \leq n,m \le 10^5,1 \leq a_i \leq 10^9\). 思路 前置知识:线段树. 这一道题是无…
思路:从大到小枚举,判断其平方是否不重复 答案:9814072356 //水题 标题:平方十位数 由0~9这10个数字不重复.不遗漏,可以组成很多10位数字. 这其中也有很多恰好是平方数(是某个数的平方). 比如:1026753849,就是其中最小的一个平方数. 请你找出其中最大的一个平方数是多少? 注意:你需要提交的是一个10位数字,不要填写任何多余内容. public class Main { public static void main(String[] args) { // TODO…
简要题意 你需要维护一个长度为 \(L\) 的序列 \(a\),初始时全部都是 \(0\),有 \(N\) 个操作,支持: C p x,将 \(a_p\) 修改为 \(x\). Q a b,输出 \([a,b]\) 中的第 \(8\) 大元素的值. \(1 \leq L,N \leq 10^5\),对于任意时刻,存在 \(0 \leq a_i \leq 10^9\). 思路 据说这道题有普通线段树的 \(O(N\log N)\) 做法,但我不会,下面介绍一种较为常规的 \(O(N\log^2 N…
简要题意 有 \(N\) 个二进制数,编号为 \(1\sim N\),初始时都是 \(0\).博士进行了 \(N-1\) 次操作,在第 \(i\) 次操作时,会将 \(1\sim N\) 中所有编号为 \(i+1\) 的倍数的二进制数取反.最后给定一个区间 \([L,R]\),你需要求出 \([L,R]\) 中的所有二进制数中为 \(1\) 的个数. 示例:\(N=10,L=3,R=6\) 时,答案是 \(3\)(\(3,5,6\) 被计算). 思路 首先,我们可以发现,这道题求的就是 \([L…
题面 给定一个仅含小写英文字母的字符串 \(s\) 和 \(m\) 次操作,每次操作选择一个区间 \([l_i,r_i]\) 将 \(s\) 的该区间中的所有字母 \(x_i\) 全部替换成字母 \(y_i\),问所有操作做完后,得到的字符串是什么. 对于所有评测用例,\(1 \leq |s|, m \leq 10^5\),\(1 \leq l_i \leq r_i \leq |s|\),\(x_i\neq y_i\),其中 \(|s|\) 表示字符串 \(s\) 的长度. 思路 首先我写了一个…
#include<iostream> #include<stdio.h> using namespace std; ; ],a[N]; int lowbit(int n){ return n&(-n); } void change(int k,int pos){ while(pos<=n){ c[pos]+=k; pos+=lowbit(pos); } } int SUM(int pos){ ; ){ sum+=c[pos]; pos-=lowbit(pos); }…
import java.util.Scanner; public class _1区间K大数查询 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n= scanner.nextInt(); int[] shuzu = new int[n]; for (int i = 0; i < shuzu.length; i++) { shuzu[i] = scanner.next…
前言略. 看到这个题目本来应该很高兴的,因为什么,因为太TM的基础了啊! 可是当你用常规方法尝试提交OJ时你会发现..hhh...运行超时..(开心地摇起了呆毛 //Fibonacci数列递归一般问题常规方法(当目标序列号<32时适用 评判标准:运行时间<1.00s) #include <iostream> using namespace std; long Fib(int); int main() { ; cin >> n; cout << Fib(n)…
1.填算式 (1)题目描述     请看下面的算式:     (ABCD - EFGH) * XY = 900     每个字母代表一个0~9的数字,不同字母代表不同数字,首位不能为0.     比如,(5012 - 4987) * 36 就是一个解.     请找到另一个解,并提交该解中 ABCD 所代表的整数.     请严格按照格式,通过浏览器提交答案.    注意:只提交 ABCD 所代表的整数,不要写其它附加内容,比如:说明性的文字. (2)涉及知识点:dfs全排列+简单计算(3)分析…