
思维
lcxdz
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C. Given Length and Sum of Digits...(贪心 构造
添加链接描述给长度和数位的和 求最大值和最小值原创 2022-06-11 11:55:38 · 302 阅读 · 0 评论 -
E. Polygon(思维
添加链接描述从右下角向左上角便利 如果在边缘那就是最先开始的,否则要判断他的i+1或者j+1是否有根据原创 2022-06-07 22:56:41 · 234 阅读 · 1 评论 -
B. Just Eat It! (连续最大子段和
添加链接描述如果为整数就相加 否则就为当前数 取mx就是连续最大子段和原创 2022-06-07 22:54:38 · 155 阅读 · 0 评论 -
C. Equalize (贪心 思维
添加链接描述可以发现当相邻时交换是最优的,否则那就是改变01最优,因为改变的花费为1原创 2022-06-07 22:53:07 · 118 阅读 · 0 评论 -
A. Strange Birthday Party(贪心
添加链接描述原创 2022-06-07 21:41:12 · 156 阅读 · 0 评论 -
B. Move and Turn(数论 思维
添加链接描述如果是偶数,可以上下和左右分别走n/2+1如果是奇数,左右上下分别为n/2+1或者n/2+2 两种情况要累加A robot is standing at the origin of the infinite two-dimensional plane. Each second the robot moves exactly 1 meter in one of the four cardinal directions: north, south, west, and east. For t原创 2022-06-05 21:54:14 · 176 阅读 · 0 评论 -
C. Lose it! (map 思维
添加链接描述删除元素,使得序列满足固定的数字原创 2022-06-05 21:51:13 · 112 阅读 · 0 评论 -
7-3 家谱处理 (树的存储
添加链接描述#include<bits/stdc++.h>using namespace std;map<string,string>fa;string num[110];int main(){ int n,m; cin>>n>>m; getchar(); for(int i=1;i<=n;i++){ string s; getline(cin,s); int su原创 2022-05-14 12:54:55 · 225 阅读 · 0 评论 -
带黄狗的礼物 (重复组合问题 概率论
添加链接描述从n个数选m个数 不考虑顺序,每个数可以选任意次的方案数为C(m+n-1,m)#include<bits/stdc++.h>using namespace std;const int N=2e7+9,mod=1e9+7;#define int long longint q_pow(int a,int b){ int ans=1; while(b){ if(b&1)ans=ans*a%mod; a=a*a%mod;原创 2022-05-12 09:26:02 · 174 阅读 · 0 评论 -
CF414B Mashmokh and ACM (dp
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=2100,mod=1e9+7;int dp[N][N];//长度为i 最大元素为j种类int main(){ int n,k; cin>>n>>k; // dp[0][0]=1; for(int i=1;i<=n;i++)dp[1][i]=1; for(int i=2;i<=k;i++){原创 2022-05-12 08:18:44 · 124 阅读 · 0 评论 -
P1049 [NOIP2001 普及组] 装箱问题 (滚动数组 dp
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=2e4+9;int dp[2][N],g;int main(){ int V,n; cin>>V>>n; for(int i=1;i<=n;i++){ g=1-g; int x; cin>>x; for(int j=0;j<=V;j原创 2022-05-11 21:57:34 · 210 阅读 · 0 评论 -
4414. 子序列 (数论 线性dp
添加链接描述数论:三种情况:1.找到最大的数,如果这个数是<=0,说明都是负数或0,找到最大的负奇数既答案2.最大的正数和为奇数,为答案,3.最大的正数和为偶数,判断减去最小正奇数和加上最大负奇数哪个大为答案;#include<bits/stdc++.h>using namespace std;const int N=1e5+9;int arr[N];int sum=0,mx_ne=-0x3f3f3f3f,mi_po=0x3f3f3f3f,mx_num=-0x3f3f3原创 2022-05-06 22:04:46 · 183 阅读 · 0 评论 -
Strategic game (树形dp 树的最小点覆盖
添加链接描述#include<stdio.h>#include<vector>#include<algorithm>#include<iostream>#include<cstring>using namespace std;const int N=2000;vector<int>v[N];int dp[N][2],root=1,in[N];void dfs(int u,int fa){ dp[u][1]=1;原创 2022-04-28 22:40:02 · 306 阅读 · 0 评论 -
没有上司的舞会 (树形dp 最大独立集
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=6e3+9;vector<int>v[N];int arr[N];int mx=0;int dp[N][2];void dfs(int u,int fa){ dp[u][1]+=arr[u]; for(auto it:v[u]){ if(it==fa)continue; dfs(it,u); dp原创 2022-04-28 22:39:10 · 155 阅读 · 0 评论 -
3424. 最少砝码 (构造 规律
添加链接描述你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。那么这套砝码最少需要包含多少个砝码?注意砝码可以放在天平两边。输入格式输入包含一个正整数 N。输出格式输出一个整数代表答案。数据范围对于所有评测用例,1≤N≤109。输入样例:7输出样例:3样例解释3 个砝码重量是 1、4、6,可以称出 1 至 7 的所有重量。#include<bits/stdc++.h>using namespace std;#defin原创 2022-04-26 22:14:06 · 374 阅读 · 0 评论 -
3491. 完全平方数(数论
添加链接描述一个完全平方数的质因子是偶次方#include<bits/stdc++.h>using namespace std;#define int long longsigned main(){ int n; cin>>n; int ans=1; for(int i=2;i<=n/i;i++){ int p=0; while(n%i==0){ n/=i; p++; } if(p&1){原创 2022-04-26 22:00:52 · 257 阅读 · 0 评论 -
L3-005 垃圾箱分布 (30 分)(dijkstar
#include<bits/stdc++.h>using namespace std;const int N=2e3+9;int dist[N],vis[N];struct node { int to,w;};vector<node>v[N];typedef pair<int,int> pii;void dij(int st){ priority_queue<pii,vector<pii>,greater<pii&原创 2022-04-21 21:23:34 · 328 阅读 · 0 评论 -
L3-004 肿瘤诊断 (30 分)(三维 bfs
#include <bits/stdc++.h>using namespace std;int n, m, l, t;const int N = 1300, M = 150, H = 70;int arr[N][M][H], vis[N][M][H];struct node{ int x, y, z;};int dx[] = {0, 0, 0, 0, 1, -1};int dy[] = {0, 0, 1, -1, 0, 0};int dz[] = {1, -1, 0,原创 2022-04-21 21:21:04 · 123 阅读 · 0 评论 -
L3-003 社交集群 (30 分) (并查集
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=1e3+9;vector<int>v[N];int fa[N];int find(int x){ if(x==fa[x])return x; return fa[x]=find(fa[x]);}void merge(int a,int b){ a=find(a),b=find(b); if(a!=b)fa[a]=b;原创 2022-04-21 21:20:15 · 271 阅读 · 0 评论 -
L2-032 彩虹瓶 (25 分)(栈
#include <bits/stdc++.h>using namespace std;const int N = 1e3 + 9;int arr[N];int n, m, k;bool solve(){ stack<int> st; int p = 1, mx = 0; for (int i = 1; i <= n; i++) { if (arr[i] == p) { p++;原创 2022-04-21 21:09:03 · 201 阅读 · 0 评论 -
L2-030 冰岛人 (25 分) (最近公共祖先 思维
添加链接描述#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 9;unordered_map<string, int> sex;unordered_map<string, int> id;unordered_map<int, string> name;struct node { string s;};unordered_map<string,node&原创 2022-04-21 21:07:33 · 192 阅读 · 0 评论 -
L2-029 特立独行的幸福 (25 分)(模拟 思维
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=1e5+9;int mp[N],cnt[N];bool is(int n){ if(n<2)return 0; for(int i=2;i<=n/i;i++){ if(n%i==0)return 0; } return 1;}int solve(int n){ int S=n; int原创 2022-04-19 17:00:48 · 211 阅读 · 0 评论 -
L2-028 秀恩爱分得快 (25 分)(思维 结构体 +1
#include<bits/stdc++.h>using namespace std;const int N=1e4+9;set<string>s[N],in;struct node{ string name; double p; bool operator <(const node &x)const{ return p>x.p; }}ta[N],tb[N];int sexa,sexb;int mai原创 2022-04-19 17:00:03 · 177 阅读 · 0 评论 -
L2-025 分而治之 (25 分)(思维 建图
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=1e4+9;vector<int>v[N];int dist[N],now[N];int main(){ int n,m; cin>>n>>m; for(int i=1;i<=m;i++){ int a,b; cin>>a>>b;原创 2022-04-19 16:57:03 · 103 阅读 · 0 评论 -
2-017 人以群分 (25 分)(模拟 排序
添加链接描述#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 9;int arr[N];int numa, suma, numb, sumb,di;int main(){ int n; cin >> n; for (int i = 1; i <= n; i++) { cin >> arr[i]; } sort(a原创 2022-04-18 13:41:50 · 159 阅读 · 0 评论 -
L2-014 列车调度 (25 分)(思维
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=1e5+9;set<int>s;int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ int x; cin>>x; auto it=s.lower_bound(x); if(it!=s.end原创 2022-04-18 13:35:01 · 167 阅读 · 0 评论 -
L2-005 集合相似度 (25 分) (思维 hash
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=55;vector<int>v[N];unordered_map<int,int>s[N],sum[N];int main(){ std::ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); int n; cin>>n; for(int i=1;i<=n;原创 2022-04-15 15:23:10 · 124 阅读 · 0 评论 -
L2-001 城市间紧急救援 (25 分) (dijkstra 记录路径信息
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=510,M=N*N;int arr[N];int h[N],e[M],ne[M],idx,w[M],num[N];void add(int a,int b,int c){ w[++idx]=c; e[idx]=b,ne[idx]=h[a],h[a]=idx;}int dist[N],vis[N],path[N],distnum[N];type原创 2022-04-15 15:10:15 · 126 阅读 · 0 评论 -
4404. X 进制减法 (进制 思维
添加链接描述这题其实要完全理解进制 (原来一直对进制的理解都是错的-。-#include<bits/stdc++.h>using namespace std;#define int long long const int mod=1000000007,N=1e5+9;vector<int> arr,brr;int mx[N];signed main(){ std::ios::sync_with_stdio(0); cin.tie(0),cout.ti原创 2022-04-12 22:24:05 · 481 阅读 · 0 评论 -
Sum of Numerators (dfs 思维 数论
添加链接描述#include<bits/stdc++.h>using namespace std;#define int long long int ans=0;int n,k;void dfs(int p,int now){ if(p==k||now==0){ ans+=(1+now)*now/2; return ; } int c; if(now%2==0){ c=now-1; } e原创 2022-04-12 21:55:09 · 209 阅读 · 0 评论 -
Ah, It‘s Yesterday Once More (贪心 思维
添加链接描述#include<bits/stdc++.h>using namespace std;#define int long long const int N=2e5+9;int arr[N];int ans;int brr[N];signed main(){ std::ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); int n,t; cin>>t; while(t原创 2022-04-12 21:53:57 · 466 阅读 · 0 评论 -
牛牛的方格图 (思维 差分 前缀和
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=1e3+9,M=1e6+9;typedef pair<int,int> pii;vector<pii>v[M];int res[N][N];void di(int x1,int y1,int x2,int y2){ res[x1][y1]++; res[x2+1][y2+1]++; res[x1][y2+1]--;原创 2022-04-10 17:03:06 · 273 阅读 · 0 评论 -
造桥 (线性dp
添加链接描述#include <bits/stdc++.h>using namespace std;#define int long longconst int N = 1e5 + 9, mod = 1e9 + 7;string s[N];int dp[N][30];//前i个物品的最后数字为j的长度signed main(){ std::ios::sync_with_stdio(0); cin.tie(0), cout.tie(0); int T;原创 2022-04-10 17:01:59 · 324 阅读 · 0 评论 -
小猫排队 (思维 模拟
添加链接描述#include <bits/stdc++.h>using namespace std;#define int long longconst int N = 1e6 + 9, mod = 1e9 + 7;int arr[N];int q_pow(int a, int b){ int ans = 1; while (b) { if (b & 1) ans = ans * a % mod;原创 2022-04-10 17:01:09 · 413 阅读 · 0 评论 -
AcWing 1299. 五指山 (数论 扩展欧几里得 求特解
添加链接描述#include<bits/stdc++.h>using namespace std;#define int long longint T;int exgcd(int a,int b,int &x,int &y){ if(b==0){ x=1,y=0; return a; } int d=exgcd(b,a%b,y,x); y-=a/b*x; return d;}signed mai原创 2022-04-08 16:54:18 · 394 阅读 · 0 评论 -
1246. 等差数列 ( gcd 思维
添加链接描述每个数都和第一个数有个d的倍数差求的d的最大,即为数列的最小值,d就是相邻数差的最大公约数#include<bits/stdc++.h>using namespace std;const int N=1e5+9;int arr[N];int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ cin>>arr[i]; } sort(arr+1,原创 2022-04-08 09:57:15 · 325 阅读 · 0 评论 -
886. 求组合数 II (逆元 小费马定理 组合数模板
添加链接描述#include<bits/stdc++.h>using namespace std;#define int long longconst int N=1e5+9,mod=1e9+7;int fac[N],infac[N];int q_pow(int a,int b){ int res=1; while(b){ if(b&1){ res=res*a%mod; } a=a*a%m原创 2022-04-07 22:50:47 · 170 阅读 · 0 评论 -
试题 D: 货物摆放
试题 D: 货物摆放本题总分:10 分【问题描述】小蓝有一个超大的仓库,可以摆放很多货物。现在,小蓝有 n 箱货物要摆放在仓库,每箱货物都是规则的正方体。小蓝规定了长、宽、高三个互相垂直的方向,每箱货物的边都必须严格平行于长、宽、高。小蓝希望所有的货物最终摆成一个大的长方体。即在长、宽、高的方向上分别堆 L、W、H 的货物,满足 n = L × W × H。给定 n,请问有多少种堆放货物的方案满足要求。例如,当 n = 4 时,有以下 6 种方案:1×1×4、1×2×2、1×4×1、2.原创 2022-04-07 19:53:10 · 134 阅读 · 0 评论 -
1238. 日志统计 (滑动窗口 排序
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=1e5+9;vector<int>v[N];int main(){ int n,d,k; cin>>n>>d>>k; for(int i=1;i<=n;i++){ int t,id; cin >>t>>id; v[id].push_back(t); } for(int原创 2022-04-07 13:03:06 · 204 阅读 · 0 评论 -
1247. 后缀表达式 (贪心 思维 数论
添加链接描述没有负号就是全部的总和如果有负号,将最大值-最小值然后通过负负得正最优肯定可以换成绝对值#include<bits/stdc++.h>using namespace std;#define int long longconst int N=2e5+9;int arr[N];signed main(){ int n,m; cin>>n>>m; for(int i=1;i<=n+m+1;i++){ c原创 2022-04-06 14:49:17 · 118 阅读 · 0 评论