csp

csp初赛的一些资源

两盒软妹~` 提交于 2019-12-03 14:42:11
快初赛啦,既然快退役了我就留点遗产吧。 清点一下初赛的偏门知识点 (坑点) 吧 csp今年估计就是全选择题了,按照这种方式我们知道分数线一定会大幅度上涨,毕竟蒙对的机会多了,估计也 不 会有什么奇奇怪怪的错误,或者题目特别难了。 主要就是选择题和问题求解,其他的几乎不会有固定考点哒,主要看算法积累和练习情况啦。 选择题 1.无良广告题 每年ccf都会出一些奇怪的概念题,比如问你ccf什么时候成立的。这几乎是无解的,毕竟猜不到要出什么题。但是还是可以押一下的。 去年初赛PJTG都考了ccf几年成立这种东西,而且往年noip相关的题考了不少 所以noi官网就是一个复习资源了。 更过分的是我记得2010年考了noi的html链接写法(||-_-)简直丧心病狂。 一句话,不会就蒙,没事的,平时多攒rp 2.概念题 这个太多了列不完的基本什么都有可能考,看一些当年重点。一些关于操作系统的一些知识,特别是windows等,字节转换啊什么,这些太多了,积累就好,讲一些重点。 比如问你算法的基本性质。 算法的性质 比如问你计算机网络相关: TCP/IP相关 啥( 广 , 城 , 局 )域网缩写啊,范围啊,还有代表。 甚至让你 算星期 计算机基础知识,就是一些基本结构啊,CPU的各种相关知识。计算机系统分软件系统、硬件系统什么的。 也有不少考 名人 的顺便提一句中国考的有获得图灵奖的 姚期智 、

【CSP膜你赛】柠檬的密码(manacher 二分 单调性 st表)

不打扰是莪最后的温柔 提交于 2019-12-03 13:42:56
题目描述 Lemon觉得他需要一个复杂的密码来保证他的帐号的安全。他经过多日思考,决定使用一个长度为奇数的回文串来作为他的密码。 但是这个回文串太长了,Lemon记不住,于是Lemon决定把它记在本子上。当然直接把密码明文记录实在太愚蠢了,于是Lemon决定在记录时加入一些无意义的字符以保证密码的安全。 具体来说,假设Lemon的密码串是S,Lemon选择了一个不超过len(S)/2的正整数x,然后把S的前x个字符组成的字符串设为Left,把S的后x个字符组成的字符串设为Right,把S其余的字符组成的字符串设为Mid. Lemon实际记录在密码本上的内容是A+Left+B+Mid+C+Right. 其中A,B,C都是无意义的字符串(有可能是空串)。他觉得这样就很安全了。 某一天,Melon无意发现了Lemon的笔记本,并发现了这个字符串。Melon决定把Lemon的密码破解出来。但是显然有不计其数的可能密码。 Melon认为,Lemon的密码一定很长,于是他想知道,这个字符串里隐藏的最长可能的密码有多长呢? 输入格式 输入数据第一行包含一个正整数N,表示字符串的长度。 数据数据第二行包含一个长度为N的字符串,仅由小写字母组成,表示需要破译的字符串。 输出格式 输出数据仅包含一个整数,表示最长可能的密码的长度。 输入样例 25 orzabcdxyzefgfeqwertydcba

Web套路学习

早过忘川 提交于 2019-12-03 11:27:25
Web 套路解题步骤 首先要进行信息收集 题目类型 SQL 注入 简单注入 宽字节注入( 针对于 jbk 编码 ) 花式绕 mysql 绕关键词检测拦截 MongoDB 注入 http 头注入 ip 地址 二次注入 解题思路 简单注入,手工或 sqlmap 跑 判断注入点,是否是 http 头注入?是否在图片出注入?等等 利用报错信息注入 尝试各种绕过过滤的方法 查找是否是通用的某模板存在的注入漏洞 小方法: 插入数据截断,插入”admin x”绕过或越权访问。 注意二次注入 有些 username 从 session 中直接带入查询,利用数据库字段长度截断, \ 被 gpc 后为 \\ ,但是被截断之后为 \ ,引发注入。 如果猜解不出数据库的字段,搜索后台,查看源代码,源代码登录时的 表单中的字段一般和数据库的字段相同。 绕过安全狗 sel%ect 针对 asp+access ,首先来挖掘一下数据库的特性。 1、 可以代替空格的字符有: %O9 、 %OA 、 %OC 、 %OD 2、 可以截断后面语句的注释符有: %OO 、 %16 、 %22 、 %27 3、 当 %O9 、 %OA 、 %OC 或 %OD 超过一定长度后,安全狗防御失效。 4、UserAgent :改成 BaiduSpider 偏移注入 1、Union 合并查询需要列相等,顺序一样 2、Select *

【CSP模拟赛】Freda的旗帜

本小妞迷上赌 提交于 2019-12-03 10:58:10
题目描述 要开运动会了,Freda承担起了制作全校旗帜的工作。旗帜的制作方法是这样的:Freda一共有C种颜色的布条,每种布条都有无数个,你可以认为这些布条的长、宽、厚都相等,只有颜色可能不同。每个旗帜都是由一些布条横向拼接起来的,如图所示,图上所示的是一面红、黄、蓝三种颜色布条拼接的旗帜: 就不给你看图 布条数目不同的旗帜显然是不同的。对于布条数目都为T的两面旗帜,如果存在从左到右第i(0<i<=N)个布条颜色不同,那么就认为这两面旗帜是不同的。旋转或翻转后才相同的旗帜被认为是不同的旗帜,比方说,“红黄蓝”和“蓝黄红”被认为是不同的旗帜。有的时候,一些颜色放在相邻的位置上会显得很不好看,比方说红色和绿色放在一起就很不好看。作为一个完美主义者,Freda可不想这样。 全校共有N个班级,不同的班级必须使用不同的旗帜,Freda也就需要制作N面不同的旗帜了。和谐起见,Freda想让使用布条数目最多的那面旗帜使用的布条数目最少,请你帮助Freda计算一下,在避免了不好看的情况之后,使用布条数目最多的那面旗帜最少要用多少布条。 输入格式 第一行两个整数N,C,表示班级的数目和Freda拥有C种颜色的布条。 接下来C行,每行一个长度为C的字符串,每个字符都为’0’或’1’,第i行第j个字符表示第i种颜色和第j种颜色是否能够相邻。如果能,第i行第j个字符为’1’,否则为’0’

算法梳理 (CSP 2019

泄露秘密 提交于 2019-12-03 10:49:19
" 快要考CSP了 " 今年CSP没进TG( 四川省喝了假酒 大概只能再骗一次普及了 整理一下算法模板吧 首先是较为简单的一些数论模板 EXGCD #include<iostream> using namespace std; int X,Y; int x1,y1; int gcd(int a,int b) { return b ? gcd(b,a%b) : a; } int exgcd(int a,int b,int &x1,int &y1) //附带求gcd的功能 { if(b==0){ x=1; //当 ax+by=gcd(a,b)中b=0时,a=gcd(a,b),x=1,y=0 y=0; return a; //gcd功能实现,b=0时gcd(a,b)=a } int x2,y2; int t=exgcd(b,a%b,x2,y2); x1=y2; y1=x2-(a/b)*y2; return t; //返回gcd(a,b) } int main() { int a,b,c; cin>>a>>b>>c; int l=c/exgcd(a,b,x1,y1); X=x1*l; Y=y1*l; cout<<X<<" "<<Y<<endl; } 埃氏筛 void work_prime(int n) { for(int i=4;i<=n;i+=2){ f[i]=true; } for

2019/11/1 CSP模拟

倖福魔咒の 提交于 2019-12-03 05:19:47
写在前面的反思 该拿的部分分还是得拿完啊,因为懒+动作慢没有写最后一道题的菊花图和链的情况,其实这两个点并不难。。 虽然只有 \(10pts\) ,但是已经足够往上爬一截了啊,额外的 \(10pts\) 在今天大众分 \(210pts\) 的背景下显得好重要 另外 \(T2\) 下来发现最后判断的地方假了,所幸好像它能跑得动的数据范围内都没出问题,但要卡还是很好卡,只是这次运气好没被卡而已,下次写的时候还是要注意,正式比赛不一定就不卡了 T1 \(sb\) 题 对于 \(b==1\) ,判断所有总数的 \(gcd\) 能不能整除 \(a\) 对于 \(b == 2\) ,判断总数中最小的一个开方是不是严格大于 \(a\) \(sqrt()\) 的返回值是浮点数救我一命,差点想乘起来了,发现会爆 \(long\ long\) T2 思路 桶套桶 记录标本串每个字母出现的次数(第一层),设每个字母出现的次数为 \(cnt_i\) ,那么第二层以 \(cnt_i\) 为下标,统计每个字母出现次数的次数,记为 \(cnt1_i\) 举个例子 原标本串 \(aabbbcccd\) 第一层桶,下标对应字母: \(2\ 3\ 3\ 1\) 第二层桶,下标对应第一层桶中的值: \(1\ 1\ 3\) 考虑记录一个 \(tot\) 总和,当我们 当前枚举到的子串 和 标本串

[CSP校内集训]race(位运算?)

霸气de小男生 提交于 2019-12-03 04:23:39
题意 有 \(n\) 个人,每个人有一个能力值 \(a_i\) ( \(a\) 互不相同),有 \(2^m\) 场比赛 \([0,2^m)\) ,每场比赛一个人的 得分 为 \(a_i \xor j\) ,按照得分排序,每个人获得排名 \(^2\) 的 积分 ,求每个人的积分 \(q\% (10^9+7)\) 后的异或和, \((n\leq 200000,m\leq 30)\) 思路 考场上的解法,并非最优解法qwq 由于有取模操作,只能一个个人的处理,且可以看出是要一位位的处理问题的 假设当前处理到第i个人,设 \(k_j\) 为能力值在二进制下 更高位与i一样,第j位不同 的人数,(由这个定义可知 \(\sum{k_j}=n-1\) ,即除i外的每个人会且仅会被统计一次) 暂时不管 \(k\) 怎么求,可以发现两个数之间的大小关系仅由 从高向低第一个不同的位 (即上面 \(k\) 的定义),对于一个 \(j\) ,如果第 \(j\) 位和第 \(i\) 个人一样,那么他就比不过那 \(k_j\) 个人,即排名 \(+k_j\) ,否则排名不会增加;而第 \(j\) 位是0或1的概率相等,所以第 \(i\) 个人取或不取 \(k_j\) 的概率相同,那么第 \(i\) 个人的积分为 \(0 + k_1^2 + k_2^2 +....+k_m^2 + (k_1+k_2)^2 +

[CSP校内集训]rank

大城市里の小女人 提交于 2019-12-03 01:57:06
题意 给出一个字符串后缀排序之后的数组 \(sa_i\) ,求原字符串(字典序最小),无解输出-1 思路 显然从 \(rk_1\) 开始填字符是可以保证字符单调不降的 找到 \(sa\) 值相邻的两个位置,现在需要知道 \(rk_i\) 和 \(rk_{i+1}\) 是否可以填相邻字符;当它们填相同字符时需要比较后一位,如果相对关系相同则可行(因为后一位默认已经成立) 举个栗子: \(4,2,3,1\) ,查看4能不能和3填同一个字符,则判断后一位2和1;而 \(4>3 \&\& 2>1\) ,所以可以相同 Code #include<bits/stdc++.h> #define N 200005 #define Min(x,y) ((x)<(y)?(x):(y)) #define Max(x,y) ((x)>(y)?(x):(y)) using namespace std; typedef long long ll; int n,a[N],loc[N]; bool sm[N]; char ans[N]; template <class T> void read(T &x) { char c; int sign=1; while((c=getchar())>'9'||c<'0') if(c=='-') sign=-1; x=c-48; while((c=getchar())>='0

[CSP校内集训]v

六月ゝ 毕业季﹏ 提交于 2019-12-03 01:20:58
题意 有一个长为 \(n\) 的01序列,每次等概率从 \([1,len]\) 中抽取一个 \(x\) ,可以选择从右向左或是从左往右的第 \(x\) 个数字 取走 ,求 \(k\) 次操作后取走1的期望个数 \((k\leq n\leq 30)\) 思路 然而就是直接状态压缩 以24为分界线,24步以内用状态压缩;24步以上可以发现状态很大但状态数很少(因为只进行了几次操作),用 \(map\) 存 对于每种状态枚举 \(x\) 记忆化搜索即可,需要大力卡常 二进制下去掉第 \(p\) 位: \(x=((x>>p)<<(p-1)) | (x\&((1<<p)-1))\) Code (因为我的代码太菜了卡不过常数,所以放的别人的) #include<bits/stdc++.h> #define maxn 35 #define LL long long using namespace std; int n,m,a[maxn]; char s[maxn]; double ans,f[(1<<24)+5]; const double eps=1e-10; LL bin,num; map< LL,double > mp[31]; inline void work(int x,int len) { x=len-x+1; int y=bin&((1<<(x-1))-1); bin=((bin>

hctf2016_302跳转绕csp

匿名 (未验证) 提交于 2019-12-03 00:39:02
页面目录如下: register.php注册页面。 user.php可发送消息给其他用户。 profile.php可配置参数添加用户头像(加载eval js文件)。 static存在redirect.php重定向页面。 看下csp规则: default-src ‘self‘; script-src http://www.123.com/hctf2016_secret_area/static/ ‘sha256-n+kMAVS5Xj7r/dvV9ZxAbEX6uEmK+uen+HZXbLhVsVA=‘ ‘sha256-2zDCsAh4JN1o1lpARla6ieQ5KBrjrGpn0OAjeJ1V9kg=‘ ‘sha256-SQQX1KpZM+ueZs+PyglurgqnV7jC8sJkUMsG9KkaFwQ=‘ ‘sha256-JXk13NkH4FW9/ArNuoVR9yRcBH7qGllqf1g5RnJKUVg=‘ ‘sha256-NL8WDWAX7GSifPUosXlt/TUI6H8JU0JlK7ACpDzRVUc=‘ ‘sha256-CCZL85Vslsr/bWQYD45FX+dc7bTfBxfNmJtlmZYFxH4=‘ ‘sha256-2Y8kG4IxBmLRnD13Ne2JV/V106nMhUqzbbVcOdxUH8I=‘ ‘sha256