- 博客(41)
- 收藏
- 关注
原创 __int128与一些数据范围、读取问题
本文探讨了在编程竞赛中处理大整数和浮点数的常见问题。针对超出long long范围的整数运算,推荐使用__int128类型,并提供了自定义的读写函数实现。文章还总结了常见数据类型的存储范围、精度及对应的格式化输出方式,包括int、long long、float、double等。特别强调了long double和__int128这类特殊类型的正确输出格式,帮助选手避免因数据类型选择不当或格式化错误导致的失分问题。
2025-12-30 11:28:06
246
原创 Linux使用经验——mv命令
mv是 Linux/Unix 系统中核心的文件/目录操作命令,全称,核心功能是或文件/目录(本质都是修改文件系统的目录项),无需复制文件数据(除非跨文件系统),效率极高。
2025-11-29 22:54:24
432
原创 Linux使用经验——离线运行python脚本
将日志写入test.log关键参数-u:禁用 Python 输出缓冲,保证日志实时写入文件(否则日志可能延迟显示)。nohup python3 -u 脚本.py > 日志文件 2>&1 &-u(实时日志)、2>&1(合并错误输出)、(后台运行)运维技巧:结合pskill管理进程、tail -f查看日志、systemd 实现开机自启。
2025-11-29 22:50:34
850
1
原创 matlab(2)——MATLAB语言基础
也就是说如果之前在命令行中给某一个变量进行了赋值操作,或者运行了某一个其他的脚本,其中出现了变量a,那么我们在新的脚本中就不能把a当成一个其他类型的变量来使用。一种很好的解决办法是在命令行中输入clear这样就可以清楚工作期中之前存储的变量。这里一定要注意意见事情,matlab的工作区是会一直储存变量的值的。
2025-07-11 19:04:55
250
原创 matlab(1)——MATLAB软件初步与入门
本文介绍了MATLAB常用操作与矩阵处理技巧。主要内容包括:1)输出格式调整方法,通过format命令设置显示格式;2)路径管理,使用菜单或addpath命令添加搜索路径;3)语句分号的使用区别,分号可提高执行效率;4)矩阵操作函数,包括eye、rand、diag等基本函数,以及矩阵转置、子矩阵提取、行列删除等操作。这些基础操作对于MATLAB编程和数据处理具有重要实用价值。
2025-07-04 19:51:48
765
原创 Codeforces Round 1020 (Div. 3)D
的新花,并将它放置在花园中的任意位置(两朵花之间、第一朵花之前或最后一朵花之后)。由于他的魔法能力有限,他最多只能进行一次这样的操作。本题的关键在于考虑前k个a_i能至多匹配到的b_j的下标和后k个a_i能之多匹配到的b_j的下标这两个数组。为此,他将从左到右走过花园,并决定是否采集他当前位置的花。对于每个测试用例,在单独的一行上输出伊戈尔在执行上述操作时必须选择的最小整数。朵花,所以在他开始采集花之前,他可以选择任意一个整数。伊戈尔注意到,有可能无法采集到满足他美丽值要求的。,以确保他能够采集到。
2025-04-27 17:26:55
380
原创 高联几何100题
高联难度几何题第一道BECF构成调和四边形GB、GE、GF、GC构成调和线束I、B、E、H构成调和点列∠EFG为直角FE为BFH的内角平分线//接下来我们从求证出发,寻求本题的欧式解法欲证∠BFE=∠HFE⇔∠DBH=∠DFH⇔DHFB四点共圆⇔∠DFB=∠DHB=∠DBH⇔DB=DH=DC⇔D是BCH外接圆的圆心⇔∠BDC=2∠BHC现在看来我们已经完成了本题证明的关键部分,剩下的就是倒角了:∠BHC=Π/2-∠BGC∠BDC=Π-2∠DBC=Π-2∠BGC得证.
2022-04-22 20:48:41
5983
原创 有关高精阶乘的一点思考
起因//从大佬那抄的#include<cstdio>#include<algorithm>#include<vector>using std::vector;using std::swap;typedef long long ll;const int N=1e6+10;const ll P=998244353;const ll G=3;ll read(){ ll a=0;int op=1;char ch=getchar(); whil
2021-08-23 21:45:00
134
原创 有关压位高精
压位高精在高精度运算中加入了压位思想。详情请看代码(以高精加法为例)#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#define p 8 //要压的数#define carry 100000000 //用于进位 using namespace std;const int N=100010;char s1[N],s2[N];int a[
2021-08-23 21:41:42
239
原创 最小生成树
#include<bits/stdc++.h>using namespace std;#define re register#define il inlineil int read(){ re int x=0,f=1;char c=getchar(); while(c<'0'||c>'9'){if(c=='-') f=-1;c=getchar();} while(c>='0'&&c<='9') x=(x<<3)
2021-08-09 18:09:11
120
原创 有关幻方.
一道水题#include<cstdio>using namespace std;int n,a[40][40],x,y;int main(){ scanf("%d",&n); x=1,y=(n+1)/2; for(int i=1;i<=n*n;i++){ a[x][y]=i; if(!a[(x-2+n)%n+1][y%n+1]) x=(x-2+n)%n+1,y=y%n+1; else x=x%n+1;//数学运算 } for(int i=1;i<
2021-08-09 15:54:49
114
原创 lgP1320
#include <cstdio>int d[40020],i=1; // d 记录压缩码(显然恒小于等于 40002 ) , i 用来记录存储的位置char c; // 临时存储字符int main(){ for(;scanf("%c",&c)&&c>0x2F;) // 先读入第一行,不断读入,直到 c 不是 ‘0’(0x30) 和 ‘1’ (0x31) 为止。 i+=!(i&1^(c-0x30)),d[i]++,
2021-08-08 14:10:23
116
原创 关于读入不定数量的数据&&其他STL(主要是读入读出技巧)
1.while (scanf("%d",&input)!=EOF){2.while((cin>>m)!=0)
2021-08-08 14:02:24
201
原创 一些字符串输出题
luoguP5461赦免战俘#include<bits/stdc++.h>using namespace std;int n;int main(){ scanf("%d",&n); for(int i=0;i<(1<<n);i++){ for(int j=0;j<(1<<n);j++){ printf("%d ",(i|j)!=((1<<n)-1)?0:1);} printf("\n");} return 0;}
2021-08-03 15:43:07
190
原创 一道红题.
洛谷P5731#include<cstdio>using namespace std;int read(){//没啥用的快读 int x=0,f=1; char c=getchar(); while(c<'0'||c>'9'){ if(c=='-') f=-1; c=getchar(); } while(c>='0'&&c<='9'){ x=x*10+c-'0'; c=getchar(); } return x*f;}
2021-08-02 16:20:19
160
原创 noip常用技巧之快读
void write(int x){ if (x<0){ putchar('-'); x=-x; } if (x>9) write(x/10); putchar(x%10+'0');}int read(){ int x=0,f=1; char c=getchar(); while (c<'0'||c>'9'){ if (c=='-') f=-1; c=getchar(); } while (c>='0'&&c<='.
2021-08-02 16:01:41
343
原创 求逆元的3种方法
//扩展欧几里得求逆元 O(log n)void Exgcd(ll a, ll b, ll &x, ll &y) { if (!b) x = 1, y = 0; else Exgcd(b, a % b, y, x), y -= a / b * x;}//快速幂求逆元 O (log n)ll fpm(ll x, ll power, ll mod) { x %= mod; ll ans = 1; for (; power; power >&g
2021-02-27 17:46:59
190
原创 2021-01-16
void qsort (int l,int r){ int mid=a[(l+r)/2],i=l,j=r; do { while (a[i]<mid) i++; while(a[j]>mid) j--; if(i<=j){ swap(a[i],a[j]);i++,j--;} }while (i<=j); if (l<j) qsort(l,j); if (i<r ) qsort(i,r);}
2021-01-16 14:38:36
119
原创 树状数组
树状数组可以在O(logn)的时间复杂度内求出前缀和||插入一个数树状数组的三种基本模板区间查询+单点修改 将a[i]最为树状数组中的每个元素题目链接#include<iostream>#include<cstdio>using namespace std;int n,m;const int N=1000010;int tr[N];int lowbit(int x){ return x&-x;}void add(int x,int v
2020-08-30 17:03:09
117
原创 贪心训练日记
1.陶陶摘苹果luoguP1478贪心贪心假设:在所有可以摘到的苹果中,优先选择需要力气小的苹果。贪心证明:因为要求的是共能摘多少个苹果,所以我们可以将每个苹果的价值都视为1。那么无论是摘比较费劲的苹果还是比较省力的苹果所得到的价值都是一样的。但如果摘比较省力的苹果,就可以留下更多的力气去摘其他的苹果。#include<iostream>#include<algorithm>using namespace std;const int N=5100;int n;int
2020-08-24 15:46:52
189
原创 noip中的那些鲜为人知的“常识“
在看题解时,我们经常会看到这样一句话:大家应该都知道……,众所周知……,但对于我这种蒟蒻,大佬眼们中的常识,到我这里仿佛比高级算法还难,大多都是听都没听过。所以,本蒟蒻决定总结一下那些鲜为人知的"常识",让自己不断变强。持续更新1.两个数的积=它们的最大公约数和最小公倍数的积。2.一个序列最少可以用多少个下降子序列拼出来=这个序列最长上升子序列的长度3.八数码问题中如果逆序对的数量是奇数,那么一定无解。所有的奇数码问题中,如果逆序对的数量时奇数,那么一定无解。4.偶数码问题中,如果空格到当前目
2020-08-21 18:03:54
221
原创 lgP1146 硬币反转
一道经典的规律题:仔细想一次反转n-1个数,和一次反转一个数实际上时等价的。#include<iostream>using namespace std;int n;const int MAX=110;bool vt[MAX];int a[MAX];int main(){ cin>>n; cout<<n<<endl; for (int i=1;i<=n;i++){ for (int j=1;j<=n;j++){ i
2020-08-16 15:32:57
135
原创 BFS之flood_fill模型
xa1249:Lake Counting#include<cstdio>#include<iostream>using namespace std;typedef pair<int ,int > PII;int n,m;const int MAX=210;char g[MAX][MAX];PII q[MAX*MAX];int mx[8]={-1,-1,-1,0,0,1,1,1};int my[8]={-1,0,1,-1,1,-1,0,1};voi
2020-08-05 17:37:06
259
原创 动态规划之最长上升子序列模型
## LIS问题及其应用模板#include<iostream>#include<algorithm>using namespace std;int n;const int MAX=1010;int a[MAX];int dp[MAX]; int main(){ cin>>n; for (int i=1;i<=n;i++) cin>>a[i]; for (int i=1;i<=n;i++){ ...
2020-07-27 19:57:18
189
原创 动态规划之数字三角形模型
模板#include<cstdio>#include<iostream>#include<algorithm>using namespace std;const int MAX=1010;int a[MAX][MAX];int n;int main(){ cin>>n; for (int i=1;i<=n;i++) for (int j=1;j<=i;j++) cin>>a[i][j]; for (int
2020-07-24 17:00:02
109
原创 进阶指南IncDec Sequence
一道典型的差分+贪心首先我们来了解一下差分的原理差分是前缀和的逆运算,差分数组往往是这样定义的:b[i]=b[i]-b[i-1]b[1]=a[1];根据这个定义我们可以看出,如果b[i]=b[i-1]那么差分序列的值就会是0.有因为b[1]=a[1].所以如果从2到末尾的差分序列的值都为0,那么序列中的所有数就都一样了。题目中的把所有数都变成一样就变为了,把从0到末尾的差分序列全部变成0.既然如此,我们如何求得最少的操作次数呢?我们可以以0为分界线,把整个差分序列分成正负两种情况(因为值为.
2020-07-23 12:12:08
716
原创 激光炸弹
这个题我本来写对了,但是提交后就是有一个case点过不了,看了别人的代码,才知道要注意这样几个细节。1.同一个坐标上可能会有两个目标,所以在处理读入的时候要写+=2.如果给定坐标中的最大值<爆炸范围r,那么最后更新ans的循环就不会进行,从而输出0.所以,坐标的范围最少也应该是r。3.(这一点我注意到了),因为在递推区间和的时候需要-1操作,而本题中的坐标又是从0开始的。所以应该把所有的坐标都在读入时+1,防止数组越界。接下来是思路分析:在一个2维的坐标系中,求一个2维区间的和,很轻易便能想
2020-07-22 15:44:36
97
原创 进阶指南004
看到数据范围就知道,这道题肯定是状压dp(纯暴力做法肯定会超时)设状态dp[i][j] i表示当前走过的点的集合, j表示当前停在了哪个点?这个状态该如何转移呢?显然:可以用floyed得算法思路,不断枚举中间界限来尝试松弛操作。但需要注意的是:** 集合i中必须要包含k 否则该状态就是不合法的(因为如果当前在的点是k点,那么我就肯定走过k点)**按照刚才的思路,如果i中不包含j,那么该状态也是不合法的。即:12if (i>>j&1)continue;这里着重解释.
2020-07-22 11:45:40
104
原创 进阶指南003
64位整数乘法 本题位快速幂思想的一个简单应用:简单来说就是,既然我们可以用快速幂...
2020-07-22 11:33:36
110
原创 进阶指南002
因为不是中文题,这里给出大致题意。输入一个数T表示有T组测试数据,每组测试数据中先输入一个数mod表示用来取模的数。再输入一个数n表示接下来会后n组数。接下来输入n个a和b,表示a的b次幂。对于每组测试数据,输出这n个a的b次幂之和%mod的值。仍然是一道快速幂的题目。注意数据要开long long 还有答案res再每次循环中都要恢复成0#include<cstdio>#include<iostream>typedef long long ll;using name..
2020-07-21 18:01:59
206
原创 进阶指南001
进阶指南刷题日志,这里的进阶指南题目是从牛客网上刷的。本人也是一个菜鸡,如果有错误的欢迎指出。这是一道十分裸的题目,第一眼就应该能看出这道题考察的时快速幂。快速幂的原理就不赘述了。这里给出...
2020-07-21 17:53:32
140
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅