- 博客(15)
- 收藏
- 关注
原创 GDUT专题练习1 B 全排列 模板
题目链接:专题学习1 - Virtual Judge (vjudge.net) 因为是模板题,所以直接贴代码了 代码: #include<stdio.h> #include<string.h> char str[10],now[10]; int vis[10]; int n; void dfs(int x) { int i; if(x==n) { printf("%s\n",now); return; } for(i=0; str[i]; i++) {
2022-02-23 23:06:12
295
原创 Codeforces 773 div 2 B Power Walking
题目链接:Problem - B - Codeforces 题目大意: 有n种已编号的物品,已知一个小孩的“能力”为他拥有的不同编号的物品数目之和,现有k个小孩 思路: 代码: #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cctype> #include<cmat.
2022-02-23 22:48:35
596
原创 Codeforces 773 div 2 A Hard Way
题目链接:Problem - A - Codeforces 题目大意: 在直角坐标系XOY的非负区域中,存在一个三角形ABC,从y=0这条直线上的某一个点作一条射线(该射线不能穿过△ABC的内部),如果能到达△ABC的某一条边的某一个点上,那么该点称为“安全点”,现在问你对于给定的△ABC,它的边上的“不安全点”组成的线段有多长? 思路: 我们不妨反过来看,从该三角形边上的一点,看能不能不穿过三角形内部而作出一条直线经过x轴。 对于斜率不存在的那条边,肯定能作出该直线 对斜率不为0的边所在的直线
2022-02-23 21:56:43
292
原创 第九届“图灵杯”NEUQ-ACM程序设计竞赛个人赛 L题 最小生成树
题目链接:L-WireConnection_第九届“图灵杯”NEUQ-ACM程序设计竞赛个人赛 (nowcoder.com) 思路: 最小生成树的模板题 代码: #include<bits/stdc++.h> using namespace std; typedef long long uu; const int N = 2e3+500,inf=0x3f3f3f3f; bool vis[N]; uu a[N][N],ans[N]; struct node { double
2022-02-23 15:25:48
301
原创 第九届“图灵杯”NEUQ-ACM程序设计竞赛个人赛 G题 数学思维
题目链接: 思路: 第一想法是枚举a,b,但是这样复杂度就来到了O(),显然TLE 那么我们就应该想想 N=a+b+ab 能不能变形一下 其实一眼就能看出来N+1=a+b+ab+1=(a+1)(b+1) 也就是说如果N不能分解为a+b+ab 那么N+1必定不能分解为(a+1)(b+1) 又因为a+1>1,b+1>1 也就是说N+1是一个质数 那么我们只要判断N+1是不是一个质数即可得出答案 复杂度为O() 代码: #include<stdio.h> #i..
2022-02-23 14:39:55
562
原创 GDUT专题练习5 Count Color 状态压缩 线段树
题目链接:GDUT-21级第五次专题训练——树状数组,线段树 - Virtual Judge (vjudge.net) 题目大意: 思路: 代码: #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cctype> #include<cmath> #include<
2022-02-23 12:44:10
410
原创 GDUT专题练习5 Lost Cows 暴力解法
题目链接:GDUT-21级第五次专题训练——树状数组,线段树 - Virtual Judge (vjudge.net) 题目大意: 有一个1,2,3,....,n(1<n<=8000)的,现在已知从第二个数开始,每一个数之前小于这个数的数的个数为(1<i<=n),求这个排列。 思路: 从前往后推没有思路,本着正难则反的原则,从后面开始推起,我们不难发现: 先想出t=[0,1,2,3,4,...,n] 最后一个数的大小就是t[+1],然后把它从t中删去 倒数第二个数的大小
2022-02-22 12:48:42
150
原创 GDUT专题练习4 Happy 2006 数论
题目链接:2022_GDUT_新生专题训练_数论 - Virtual Judge (vjudge.net) 题目大意: 对于给定的m(1<=m<=1e6),k(1<=k<=1e8),求出第k个与m互质的数 思路: 直接暴力复杂度为O(K),显然不可取 注意到m最大为1e6,那么出题人可能出的复杂度是O(nlogn)或者O(n) 我们看这样一条公式gcd(a,m)=gcd(a+m*t,m) 也就是说与m互质的数也是有类似周期性的 那么我们只要枚举小于m的与m互质的数,存
2022-02-22 12:29:44
157
原创 GDUT专题练习4 同余方程
题目链接:2022_GDUT_新生专题训练_数论 - Virtual Judge (vjudge.net) 思路: 原式等价于求ax+by=1的x的最小正整数解,我们用扩欧算出其中的一个解x0,可知x的所有解为 x=c/d*x0+k*b/d,取得最小正整数解只需模b/d即可,即x(min)=(x0+b(避免x小于0))%b。 代码: #include<iostream> #include<cstdio> #include<cstring> #include&l
2022-02-21 23:30:52
318
原创 GDUT专题学习3 食物链 图论 记忆化搜索
题目链接:专题训练3-图论 - Virtual Judge (vjudge.net) 思路: 代码: #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cctype> #include<cmath> #include<cstdlib> #include<
2022-02-21 21:47:39
229
原创 GDUT专题学习3 Learning Languages 并查集
题目链接:专题训练3-图论 - Virtual Judge (vjudge.net) 题目大意: 一个公司有n个员工和m种工作语言,每个员工都会0-m(包含0)种语言,会同一种语言的员工可以互相交流,不会同一种语言的员工也可以通过其他员工间接交流,已知,让一个员工学习一种语言的成本为1块钱,公司为了所有员工能够互相交流,至少需要多少钱。 思路: ①如果公司全部人都不会任何一种语言,那么需要他们全部人学习同一种语言,需要花费n块钱; ②用并查集的思想将能交流的人分成k堆,那么将这k堆连接起来的成本需
2022-02-21 13:31:33
270
原创 GDUT专题学习2 采药 简单DP 01背包 滚动数组
题目链接:专题训练2-DP - Virtual Judge (vjudge.net) 思路: dp[i][j]代表前i株药草剩余j时间的最大价值 这样我们的空间复杂度是O(t*m),可以优化为O(m) 实际上更新每一层的信息只用到上一层的信息,所以我们开一个滚动数组就行了 代码: #include<iostream> #include<cstring> using namespace std; typedef long long uu; int dp[2][1500]
2022-02-21 11:55:04
439
原创 GDUT专题学习2 拦截导弹 LIS问题 Dilworth定理
题目链接:专题训练2-DP - Virtual Judge (vjudge.net) 思路: 运用LIS问题的解法可以求出一个系统拦截的最大导弹数,然后用Dilworth定理求出最少系统数。 代码: #include<iostream> #include<cstring> #include<algorithm> using namespace std; typedef long long uu; int dp[100500],q[100500],num[100
2022-02-21 11:46:50
257
原创 GDUT专题学习1 Equidistant Letters 简单思维
题目链接:专题学习1 - Virtual Judge (vjudge.net) 题目大意: 给你一个字符串,只包含英文字母,相同的字母最多出现2次,让你给出一个该字符串的一个排列,使得所有相同字母的距离都相等 思路: 既然距离没有限制,那我们直接特殊化为0,即相同的字母让他们都相邻,那么只要对字符串进行排序即可。 代码: #include<iostream> #include<cstring> #include<algorithm> using namesp
2022-02-21 11:33:43
372
原创 GDUT专题练习1 Red and Black 简单DFS ACM
题目链接:专题学习1 - Virtual Judge (vjudge.net) 题目大意: 在一个W*H地图中有"#"代表的红砖和"."代表的黑砖,其中红砖不能到达,问能到达的砖块数总共有多少个? #include<iostream> #include<cstring> using namespace std; typedef long long uu; char matrix[50][50]; int W,H,i,j,s=0; void dfs(int x,int y)
2022-02-20 22:14:21
306
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅