51Nod
SYaoJun
这个作者很懒,什么都没留下…
展开
-
树状数组【模板题】三连
基础版题目链接单点更新求区间注意数组大小:20000数据范围:用long long格式:每个结果输出后加换行符#include <iostream>#include <cstring>using namespace std;// 前缀和 差分 二分 树状数组 const int N = 2e5+6;int n, m;typedef long long LL;LL a[N], tr[N];int lowbit(int x){ return x&原创 2021-08-01 00:20:13 · 114 阅读 · 0 评论 -
2443 分成两组【51nod】
题目链接类似的题目正整数分组解题思路直接搜索:选与不选时间复杂度O(2n)O(2^n)O(2n)由于n=20n=20n=20所以时间在10610^6106左右#include <iostream>#include <algorithm> #include <cstring> using namespace std;const int N = 22;int a[N];typedef long long LL;LL n, sum = 0, a原创 2021-06-08 21:10:37 · 341 阅读 · 0 评论 -
2518 和为S
题目链接前缀和哈希表#include <iostream>#include <vector>#include <cstring>#include <unordered_map>using namespace std;const int N = 3e5+5;int nums[N];int sum[N];int main(){ int n; cin>>n; memset(nums, 0, sizeof nums); u原创 2021-05-23 11:09:41 · 133 阅读 · 0 评论 -
1065 最小正子段和
前缀和题目排序是个好东西最快是否可以优化到O(n)O(n)O(n)类似题目思路:统计前缀和,然后找到前缀和中右边比它大但是大的程度最小的。#include <iostream>#include <set>#include <algorithm>using namespace std;typedef long long ll;const in...原创 2020-03-25 00:33:23 · 179 阅读 · 0 评论 -
1081 子段求和
前缀和题目注意查询的不是起点和终点而是起点和长度#include <iostream>#include <unordered_map>using namespace std;typedef long long ll;const int N = 5e5+5;ll S[N];int main(){ ll n, m, x; scanf("%lld", &am...原创 2020-03-24 23:22:16 · 139 阅读 · 0 评论 -
1094 和为k的连续区间
前缀和使用哈希可以适当减少复杂度#include <iostream>#include <unordered_map>using namespace std;typedef long long ll;const int N = 1e4+5;ll S[N];int main(){ ll n, k, x; scanf("%lld%lld", &n, ...原创 2020-03-24 23:17:27 · 117 阅读 · 0 评论 -
51nod【2136 打印图形】
Java版import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String str = in.next(); char c = str.charA...原创 2020-02-02 15:32:43 · 236 阅读 · 0 评论 -
51nod【2150 字符替换】
Java版import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String s1 = in.next(); for(int i = 0; i &l...原创 2020-02-02 15:20:54 · 183 阅读 · 0 评论 -
51nod【2149 字符串出现位置】
Java版如果不用库方法,需要用KMP算法import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String s1 = in.next(); St...原创 2020-02-02 15:15:15 · 264 阅读 · 0 评论 -
51nod【2148 字符出现位置】
Java版import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); String str = in.next...原创 2020-02-02 15:03:55 · 193 阅读 · 0 评论 -
51nod 【2140 ISBN码】
Java版注意当余数为10时,输出为Ximport java.util.ArrayList;import java.util.Comparator;import java.util.Scanner;import static java.util.Collections.sort;public class Main { public static void main(Stri...原创 2020-02-02 14:52:48 · 166 阅读 · 0 评论 -
51nod【2142 第m大的身份证号码】
Java版对出生年月日进行排序import java.util.ArrayList;import java.util.Comparator;import java.util.Scanner;import static java.util.Collections.sort;public class Main { public static void main(String[]...原创 2020-02-02 14:01:28 · 366 阅读 · 0 评论 -
51nod【2138 单词排序】
Java版字符串的排序,简单入门题import java.util.ArrayList;import java.util.Scanner;import static java.util.Collections.sort;public class Main { public static void main(String[] args) { Scanner in...原创 2020-02-01 23:56:04 · 241 阅读 · 0 评论 -
1010 只包含因子2 3 5的数
51nod题目链接使用递推先计算出long long范围内的只包含235因子的数经过测试在11000个数内注意:输入的数的范围是long long范围#include <cstdio>#include <algorithm>#include <iostream>using namespace std;const int N = 11000;c...原创 2019-11-15 15:32:57 · 128 阅读 · 0 评论 -
1118 机器人走方格
51 Nod 题目链接题意从一个矩阵的左上角走到右下角,只能往右走和往下走一步,问有多少种走法。解析这是动态规划的经典题,可以使用一维数组优化,同时要在计算的过程中取模。#include <iostream>#include <string>#include <vector>#include <cctype>#include <...原创 2019-10-26 11:05:20 · 167 阅读 · 0 评论 -
1028 大数乘法 V2
51 Nod题目链接import java.math.BigInteger;import java.util.Scanner;public class Main { public static void main(String[] args) { BigInteger a, b; Scanner in = new Scanner(System.in); a = in.nex...原创 2019-10-24 17:07:33 · 144 阅读 · 0 评论 -
51nod 1019 逆序数
题目链接#include<iostream>#include<algorithm>#include<string>using namespace std;const int maxn = 5e4+7;int arr[maxn];int merge(int l, int r){ if(l >= r) return 0; int mid = ...原创 2019-08-27 13:58:45 · 73 阅读 · 0 评论 -
2148 字符出现位置
x = int(input())y = input()z = input()print(y.find(z[0]))原创 2019-09-09 09:06:29 · 228 阅读 · 0 评论 -
2111 倒序输出
x = input().split()a = int(x[0])b = int(x[1])for y in range(b, a-1, -1): print(y)原创 2019-09-09 09:10:29 · 127 阅读 · 0 评论 -
2405 启蒙练习-阶乘
x = int(input())def f(t): if(t == 1): return 1 else: return f(t-1)*tprint(f(x))原创 2019-09-09 09:13:50 · 206 阅读 · 0 评论 -
2093 求最值
x = int(input())ls = []maxa = -2147483648 minb = 2147483647for i in range(x): x = int(input()) if(x > maxa): maxa = x if(x < minb): minb = xprint(minb, end=" ")...原创 2019-09-09 09:19:27 · 541 阅读 · 0 评论 -
2101 越界了吗
#include <iostream>using namespace std;int main(){ long long a, b; cin>>a>>b; long long u = INT_MAX; long long v = INT_MIN; if(a+b< v || a+b > u) printf("Yes"); else p...原创 2019-09-09 10:49:14 · 254 阅读 · 0 评论 -
2398 启蒙练习-数字交换
#include <iostream>using namespace std;int main(){ int a, b, c; cin>>a>>b>>c; swap(a, c); swap(a,b); cout<<a<<" "<<b<<" "<<c<<endl; ...原创 2019-09-10 09:31:23 · 257 阅读 · 0 评论 -
2102 或减与
#include <iostream>using namespace std;int main(){ int a, b; cin>>a>>b; int t = (a|b) - (a&b); //加减 > 移位 > 大于 小于 > 等于不等于 > 位与或 > 逻辑与或 cout<<t<<e...原创 2019-09-10 11:01:29 · 176 阅读 · 0 评论 -
1087 1 10 100 1000
#include <iostream>#include <cstdio>#include <unordered_map>using namespace std;const int N = 1e9+2;unordered_map<int, bool> mp;//用哈希表存储哪些位置上有1,然后直接查找 int main(){ int k...原创 2019-09-20 07:18:13 · 145 阅读 · 0 评论 -
2112 转二进制
x = int(input())print(bin(x)[::-1][:-2])原创 2019-09-09 08:38:09 · 279 阅读 · 0 评论 -
2121 转二进制2
x = int(input())print(bin(x)[2:])原创 2019-09-09 08:25:02 · 201 阅读 · 0 评论 -
2094 前缀和
x = int(input())lista = [0]for i in range(x): y = int(input()) lista.append(y+lista[i])print(len(lista) - 1)for j in range(1,len(lista)): print(lista[j])原创 2019-09-09 08:18:15 · 169 阅读 · 0 评论 -
51nod 1181 质数中的质数(质数筛法)
51nod题目链接素数筛选需要注意的地方是筛选的起始位置是j = i + i每次增加i,相当于把i所有的倍数除了自身全部划掉。另一点是题目说的质数中的质数,计数从1开始,题目保证有解,所以找到了就可以输出。#include<iostream>#include<algorithm>#include<string>#include<vector...原创 2019-08-27 20:15:10 · 87 阅读 · 0 评论 -
51nod 1027 大数乘法
51nod题目链接果然还是java好用import java.math.BigInteger;import java.util.Scanner;public class nod1027 { public static void main(String[] args) { BigInteger a, b; Scanner in = new Scanner(System.in)...原创 2019-08-27 19:37:22 · 119 阅读 · 0 评论 -
51nod 1006 最长公共子序列Lcs
51nod题目链接注意的地方1.将字符串右移一位,让0号位空出来2.寻找子序列的过程,是先尽量往上左上走,当不能走的时候再斜着走。#include<iostream>#include<algorithm>#include<string>#include<vector>using namespace std;int dp[1005]...原创 2019-08-27 19:21:49 · 128 阅读 · 0 评论 -
51nod 1384 全排列
51nod题目链接考虑把每个数字放在哪一位上,不能保证是字典序的,所以用vector存储后,再排序一遍。版本1#include<iostream>#include<algorithm>#include<string>#include<vector>using namespace std;string s, res;vector&l...原创 2019-08-27 16:46:27 · 85 阅读 · 0 评论 -
51nod 1005 大数加法
51nod题目链接注意判断字符串的数值大小,先根据长度判断,当长度相等的时候再利用字符串的内置大于小于符号进行判断。这道题坑挺多的,说好的大数加法,还顺带考了大数减法。还有字符串的处理。注意大数减法的时候,只用消除高位的0, 低位的0要保留。但是也要注意结果刚好的0的情况,所以消除0后,最少保留一位。#include<iostream>#include<algo...原创 2019-08-27 16:03:45 · 154 阅读 · 0 评论 -
51nod 1137 矩阵乘法
注意:数字之间有一个空格, 行末没有多余空格#include<cstdio>int main(){ int n,a[105][105],b[105][105],c[105][105]; scanf("%d",&n); for(int i=0;i<n;i++){ for(int j=0;j<n;j++) scanf("%d",&a[i][j...原创 2019-08-27 11:08:41 · 80 阅读 · 0 评论 -
51nod 1089 最长回文子串 V2(Manacher算法)
题目链接注意点:1.读入字符串的时候,最好用getline读入一行,而非cin2.由于使用manacher算法,字符串长度会被扩充一倍,所以长度最好是题目给定长度的两倍3.注意更新半径中心#include<iostream>#include<algorithm>#include<string>using namespace std;const ...原创 2019-08-27 10:29:16 · 94 阅读 · 0 评论 -
51nod 1008 最长回文子串
长度为奇数和偶数要分开处理#include<iostream>#include<algorithm>#include<string>using namespace std;int main(){ string str; cin >> str; int len = 0; int n = str.size(); for(int i =...原创 2019-08-27 10:01:15 · 83 阅读 · 0 评论 -
51nod 1001 数组中和等于K的数对
与leetcode上的第一题类似先排序再用双指针往中间遍历#include <iostream>#include <string>#include <vector>#include <algorithm>using namespace std;const int maxn = 5e4;int arr[maxn];int main()...原创 2019-08-27 09:27:14 · 99 阅读 · 0 评论 -
51nod 1095 Anigram单词
51nod题目链接#include<iostream>#include<string>#include<vector>#include<algorithm>#include<unordered_map> using namespace std;int main(){ int n, k; string s; cin &...原创 2019-08-27 09:13:38 · 68 阅读 · 0 评论 -
51nod 1002 数塔取数问题
动态规划入门题#include <iostream>#include <vector>using namespace std;const int maxn = 505;vector<vector<int>> arr; int main() { int n, x; cin >> n; for(int i = 0; i &...原创 2019-08-29 11:01:59 · 91 阅读 · 0 评论 -
51nod 2067 n 皇后问题
题目链接#include <iostream>#include <vector>#include <cstring>using namespace std;int n, res = 0;int pos[11];void dfs(int k){ //前0~k-1个皇后已经摆好了,现在摆第k个 if(k == n){ res++; re...原创 2019-09-02 09:21:20 · 394 阅读 · 1 评论