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 ...
18thZJCPC
A - League of Legends格莱美喜欢玩世界著名的英雄联盟游戏。在最新版本中,有一个特殊的规则供玩家选择玩。根据此规则, 10 玩家将被分为红队和蓝队。每支队伍由 5 名玩家组成,每个玩家都有一个初始生命值。如果一支队伍中的所有 5 玩家均没有正HP值,则该队伍将输掉这场比赛。每回合,队伍可以选择一名球员并减少他的生命值 1。蓝队首先开始。现在格莱美想知道两支球队是否都按照最优策略比赛,哪支球队会赢得比赛。枚举,比大小,平局蓝队赢
C - Cube给你三维空间中的八个点,请检查它们是否可以组成一个立方体。立方体是正六面体,由六个正方形面包围,每个顶点有三个相交点。T≤100组数据。两两枚举点对之间的距离,根据对角线,体对角线,面对角线,棱的长度和数量关系判断。
123456789101112131415161718192021222324252627282930313233343536373839404142#include <bits/stdc++.h>using namespace std;int t,x[8],y[8],z[8];int main() ...
17thZJCPC
题面:
K - Killing the Brute-force 给定标程和暴力在 n = 1, 2, . . . , m 时的运行时间,找到最小 的 n 使得三倍标程时限可以卡掉暴力 。m很小没什么好讲的就一个遍历找到最小的即可
1234567891011void solve(){ int m; cin>>m; vector<int> a(m),b(m); for(int i = 0;i<m;++i) cin>>a[i]; for(int i = 0;i<m;++i) cin>>b[i]; for(int i = 0;i<m;++i) if(a[i]*3<b[i]) return cout<<i + 1<<endl,void(); cout<<-1<<endl;}
A - AD 2020 给一个日期的区间,问有多少个日期含有子串“202”的。2000.01.01 ≤ 日期 ≤ 9999.12.31参考题解给的是直接 ...
2024年度第五届全国大学生算法设计与编程挑战赛(春季赛)
H 密码是多少?注意字符串长度都是7样例1
1asdfghj
110210310410697115100
样例2
1qazxcdf
11209910010211397122
按题意模拟即可
1234567void solve() { string s; cin>>s; string t = s.substr(3) + s.substr(0,3); for(auto c : t) cout<<(int)c;}
A 送个分吧样例
12aba4
1b
对于给定的样例,前 4 简单的套题分别为:a、ab、aba、b,故答案为 b。对于 100%的数据,1≤∣_s_∣≤5000,1≤_k_≤5,保证答案存在。
就是在问你字典序第k小的子串s的范围决定了这道题最多只能是$O(n^2)$的复杂度。可以这样考虑,比如对于样例而言,前几个子串一定是a开头的,可以是a,ab,aba。那么猜想前面几个一定是字符串中出现的字典序最小的那个字符的某个后缀,比如最小的是a,第二小的是ab(第一个a后面长度为2的后缀),第三小的是aba(第一个a后面长度为3的后缀)。且 ...
2023JSCPC
这个也是当年的湖南全国邀请赛
I Elevator 电梯里有 n 个人(你是其中一个),这些人想去 m 个楼层, 每个人只想去一个楼层。到达一个楼层,所有想去这个楼层 的人都会下电梯。问在你想去的楼层最多有多少人下电梯。
vp的时候题目根本没读懂,感觉就是输出 n − (m − 1) , 交了一发就过了……
J Similarity (Easy Version) 给定 n 个串,求两两之间最长公共子串的最大值。多测T不超过15,字符串长度不超过50,个数也不超过50。并保证n的总和不会超过300。直接暴力匹配即可。
12345678910111213141516171819202122232425262728map<string,int>f;void solve(){ int n; cin>>n; per(i,1,n){ string s; cin>>s; map<string,bool>vis; per(j,0,s.length()-1) ...
2022SHCPC
N Nine Is Greater Than Ten按字典序比较字符串
12345678910void solve(){ string a,b; cin>>a>>b; int res = a.compare(b); if(res == 0){ cout<<a<<'='<<b<<endl; }else if(res < 0){ cout<<a<<'<'<<b<<endl; }else cout<<a<<'>'<<b<<endl;}
G Gua!题意:给你四个参数B R D S,表示枪的一发子弹造成的最大伤害,射速为每分钟射击R次,玩家一共造成了D点伤害,用时S秒,问你这个人是不是挂。不是很懂为什么签到题出这么细节的模拟……vp爆wa心态都炸了三个细节,第一个是由于时间是从0开始算的, ...
整除分块
好像只能用来解决一个类似于$\sum^n_{i = 1}\left \lfloor \frac{n}{i} \right \rfloor$这样的整数求和问题,只要是带这个的,那么复杂度最低就能降到根号级别的。可以发现,比如n = 8这个求和的每一项是这样的
i
1
2
3
4
5
6
7
8
8/i
8
4
2
2
1
1
1
1
那么就可以优化,把结果一样的放在一起分块处理。分的块大概有$2\sqrt{n}$个,因为当i小于等于$\sqrt{n}$时,取值一共有$\sqrt{n}$种,大于也是一样的
12345for (int l = 1; l <= n; ++l) { int d = n / l, r = n/d; ans += (r-l+1)*d; l = r;}
l和r表示这个区间内的数x除n都是d,即n/x = d,累加即可,复杂度是根号的。
[CQOI2007] 余数求和给出正整数 $n$ 和 $k$,请计算$G(n, k) = \sum_{i = 1}^n k \bmod i$其中 $k\bmod i$ 表示 $k$ ...
