博客更新记录
2024-12-31
上传文章:2024,更新文章:19thZJCPC
2024-11-22
上传文章:2024CCPC山东邀请赛,更新文章:19thZJCPC
2024-10-25
上传文章:2024ICPC昆明邀请赛
2024-09-18
上传文章:2024JXCPC
2024-07-26
上传文章:2024SXCPC
2024-07-24
上传文章:2024SCCPC
2024-07-18
上传文章:文件管理系统的搭建
2024-07-01
更新文章:关于linux(Ubuntu),调整了一些文章的优先级以及标签分类等
2024-06-29
更新文章:关于Ubuntu->关于linux(Ubuntu)
2024-04-07
更新文章:18thZJCPC,19thZJCPC
2024-04-06
上传文章:17thZJCPC,18thZJCPC
2024-03-31
上传文章:2024年度第五届全国大学生算法设计与编程挑战赛(春季赛)更新文章:XCPC模板
2024-03-26
上传文章:2022SHCPC,2023JSCPC;更新文章:hexo-github个人网站开发;添 ...
XCPC模板
DSU12345678910111213141516171819202122232425262728#define N 200005struct DSU { int n; vector<int> par, h; explicit DSU(int _n) : n(_n + 1), par(_n + 1), h(_n + 1) { for (int i = 1; i <= _n; ++i)par[i] = i; }; int find(int x) { return par[x] != x ? par[x] = find(par[x]) : par[x]; } void unite(int x, int y) { x = find(x); y = find(y); if (x == y)return; if (h[x] == h[y]) { h[x]++; ...
trick
本文用来记录一些做题时看到的小技巧以及踩过的坑
技巧
bool可以直接作为参数传递:1234567891011bool f(int i,int j,int m,int n,int next){ if(next>=8){ s[i][j]=1; return 1; } if(a[i+m][j+n]==k[next]) if(f(i+m,j+n,m,n,next+1)){ s[i][j]=1; return 1; } return 0;
清除缓冲区printf(“字符串”);后面加fflush(stdout);cout使用endl。
bool类型可以用bitset代替C++ bitset用法_牛客博客
递归可以实现倒序十进制转二进制输出123456 int r; r = num%2; if(num>=2) toBin(num/2); if(r) cout<<1; else cout<<0;}使用递归解决了倒取余数的问题而递 ...
2024CCPC山东邀请赛
题面:
I - Left Shifting签到题,从左往右检查字符串中有没有相邻两个一样的位置,注意有可能一开始就已经是首尾相同的。
12345678void solve() { string s; cin>>s; if(s.front() == s.back()) return cout<<0<<endl,void(); for(int i = 1;i<si(s);++i) if(s[i] == s[i-1]) return cout<<i<<endl,void(); cout<<-1<<endl;}
A - Printer一道很明显的二分题,二分最后的时间,固定时间根据能产生多少的试题来左移或者右移mid,注意直接统计能产生的试题个数的时候可能会爆longlong,可以写int128或者check的时候如果大于k就直接返回true。
12345678910111213141516171819202122 ...
2024HNCPC
题面:
C - easy math给出一个长度为n整数数组a。数组a中的每一个整数$ a_i $都是2的幂。求满足$ \prod_{i=1}^{n} a_i \leq 2024^b $的最小整数b。
注意到每个数都是2的幂所以可以直接对每个元素取对数让乘法变加法,最后直接用换底公式搞一下2024的b次方把b提出来就行。
123456789101112131415void solve(){ int n; cin>>n; vector<int> a(n); int sum = 0; for(int i = 0;i<n;++i){ cin>>a[i]; a[i] = (int)log2(a[i]); sum += a[i]; } long double base = log(2024),p = log(2); long double logg = p/base; int ans = (ceil)(s ...
2024ICPC昆明邀请赛
题面:
B - Gold Medal签到题,很显然先分配那些补较少人数就能产生牌子的比赛,那么补全了之后如果还有剩的直接除k向下取整就行。
12345678910111213void solve() { int n,k; cin>>n>>k; vector<int> a(n); int ans = 0; for(int i = 0;i<n;++i) cin>>a[i],ans += a[i] / k,a[i] %= k; int m,p = 0; cin>>m; sort(all(a),greater()); while(p < n && m - (k - a[p]) >= 0) ans++,m -= (k - a[p++]); ans += m / k; cout<<ans<<endl;}
G - Be Positive观察样例可以发现当n == 4 || n == 1的时候归零了。
首先不难看出0,1,2,3;4,5, ...
2024JXCPC
题面:
A - Maliang Learning Painting签到题问你a + b + c等于多少
C - Liar n 个人每人有一个数,分别宣称自己的数为 a1, a2, . . . , an。已知所有人的 数的和为 s,求至多有多少人没撒谎。
显然如果$ \sum a_i == s $那么最优的是每个人都说了真话答案是n,如果不相等那就贪心的认为只有一个人说了谎其他人都没说谎,答案是n-1。
G - Multiples of 5 给出一个 11 进制的数,问这个数是否是 5 的倍数。数的长度比较长,以 二元组 (x, y) 的形式逐个给出,表示接下来有 x 个 y 将要拼接到右侧。
每一位拆开来看,对于长度为n的数可以理解为
$\sum a_i*(11)^{i-1} $
因为任意个11相乘模5等于1,即
$ (11)^{n}\%5 = 1 $即
$ (11)^n\equiv 1\ (mod\ 5) $
所以原式可以化为
$ \sum a_i*(11)^{i-1} \%5=\sum a_i\%5 $
所以求和取模即可
123456789101 ...
2024SXCPC
题面:
F - Try a try, AC is OK 得分就是单次提交所能获得的最高分。
1234567891011void solve(){ int n; cin>>n; int maxx=INT_MIN; for(int i=1;i<=n;++i){ int tmp; cin>>tmp; maxx=max(tmp,maxx); } cout<<maxx<<endl;}
A - chmod模拟即可。
1234567891011121314void solve() { string x, s = "xwr"; cin >> x; for (auto i : x) { int n = i - '0'; string t; t.resize(3); for (int i = 0; i < 3; ++i) ...
2024SCCPC
题面:
有点可惜要是先看的A题说不定就过金牌线了。
L Beef Tripe in Soup Pot?阅读理解题,我和另一个队友当时没看到有中文题面看了半天,就是在说有n种物品,每个有四个信息,第一个和第二个信息表示第一和第二个种类对应的值表示代价,第三个和第四个是这种物品的是属于第一种类还是第二种类。问你个每个物品划分完之后的最小代价。就是排序。
123456789101112131415161718192021void solve() { int n; vector<int> a,p1,p2; cin>>n; for(int i = 0,x,y,u,v;i<n;++i){ cin>>x>>y>>u>>v; if(u && v){ if(x > y) a.push_back(y),p2.push_back(i); else a.push_back(x),p1.push_back(i); }else& ...
文件管理系统的搭建
先搓了个本地的,等什么时候买了服务器弄个云端的玩玩。用的是free-fs。装完mysql和navicat之后,配置好环境等,打开服务器,然后把它连到navicat(新建连接,选MySQL,起个名称,以下以名称local为例,主机选本地即localhost,端口用默认的3306,用户名和密码自定义,以下以root和123456为例)。
然后右键local连接,选择新建数据库,将数据库名称改为free-fs,字符集选择utf8mb4,排序规则选utf8mb4_general_ci。最后在这个数据库上新建一个查询,打开用IDEA打开项目,找到sql文件,里面有一个free-fs.sql脚本。复制这个文件的内容到这个查询,选择运行。这样就创建好了数据库。然后是配置文件的修改部分:先找到配置文件,在fs-admin里面,具体位置是../src/main/resources/application.yml,可以配置端口啥的。必须要改的地方就一两处:1.spring里的部分,profiles里的active改成dev,表示用的是dev这个配置。
1234......profiles: active ...