随笔分类 -  基本算法 模拟

摘要:【题目】 " 2303. 「NOI2017」蚯蚓排队" 【题意】给定n条长度不超过6的蚯蚓,初始各自在一个队伍。m次操作:1.将i号蚯蚓和j号蚯蚓的队伍合并(保证i为队尾,j为队首)。2.将i号蚯蚓和它后面的蚯蚓分离成两个队。3.询问:给定字符串S和正整数k,求f(每个长度为k的子串)的乘积。其中f 阅读全文
posted @ 2018-05-25 14:53 ONION_CYC 阅读(431) 评论(0) 推荐(3)
摘要:【题目】 "C.Big Secret" 【题意】给定数组b,求重排列b数组使其前缀异或和数组a单调递增。$n \leq 10^5,1 \leq b_i \leq 2^{60}$。 【算法】异或 为了拆位分析,先考虑一个简单的问题:已知一个合法b数组和一个数字"1",求数字”1“是否能插入? 容易发现 阅读全文
posted @ 2018-05-18 21:58 ONION_CYC 阅读(437) 评论(0) 推荐(1)
摘要:【题目】F. Substrings in a String 【题意】给定小写字母字符串s,支持两种操作:1.修改某个位置的字符,2.给定字符串y,查询区间[l,r]内出现y多少次。|s|,Σ|y|<=10^5,time=6s。 【算法】Bitset 【题解】假设S的长度为n,那么对每个字符建一个长度 阅读全文
posted @ 2018-04-19 08:23 ONION_CYC 阅读(238) 评论(0) 推荐(2)
摘要:【题目】E - Symmetric Grid 【题意】给定n*m的小写字母矩阵,求是否能通过若干行互换和列互换使得矩阵中心对称。n,m<=12。 【算法】模拟 【题解】首先行列操作独立,如果已确定行操作,那么两个在对称位置的列要满足条件必须其中一列反转后和另一列相同,或m为奇数且此列在中间。 已确定 阅读全文
posted @ 2018-04-15 19:51 ONION_CYC 阅读(551) 评论(0) 推荐(0)
摘要:【题目】AtCoder Regular Contest 092 D - Two Sequences 【题意】给定n个数的数组A和数组B,求所有A[i]+B[j]的异或和(1<=i,j<=n)。n<=200000。 【算法】二分+模拟 【题解】将答案分成(A[i]+B[j]-A[i]^B[j])的异或 阅读全文
posted @ 2018-03-17 22:30 ONION_CYC 阅读(747) 评论(0) 推荐(2)
摘要:【题目】B. Restoration of string 【题意】当一个字符串在字符串S中的出现次数不小于任意子串的出现次数时,定义这个字符串是高频字符串。给定n个字符串,求构造出最短的字符串S满足着n个字符串都是高频字符串,若不存在输出NO,若存在多个输出字典序最小的一个。n<=10^5,Σ|si 阅读全文
posted @ 2018-03-15 21:18 ONION_CYC 阅读(320) 评论(0) 推荐(0)
摘要:【题目】D. Picking Strings 【题意】给定只含'A','B','C'的字符串,支持以下变换:1.A - BC 2.B - AC 3.C - AB 4.AAA - empty string(左边变成右边) 给定S串和T串,q次询问,每次给出S串的一个子串x和T串的一个子串y,求x是否能 阅读全文
posted @ 2018-03-11 19:31 ONION_CYC 阅读(314) 评论(0) 推荐(0)
摘要:【题目】C. Black Widow 【题意】给定一个表达式,形式为(...)^(...)^......^(...)=1(n个括号),括号中为1~2个值取或。有m个变量,给出表达式的值为xi或 !xi,xi只能为0或1,求变量赋值使得表达式成立的方案数。每个变量至多出现两次。n,m<=10^5。 【 阅读全文
posted @ 2018-01-16 19:07 ONION_CYC 阅读(543) 评论(0) 推荐(0)
摘要:【题目】B. Robin Hood 【题意】给定n个数字的序列和k次操作,每次将序列中最大的数-1,然后将序列中最小的数+1,求最终序列极差。n<=5*10^5,0<=k<=10^9,1<=ai<=10^9。 【算法】模拟 【题解】关键在于,增加和减少可以分开操作。 将数列排序,从小到大增加前面若干 阅读全文
posted @ 2017-12-21 16:51 ONION_CYC 阅读(252) 评论(0) 推荐(0)
摘要:【题目链接】Universal Online Judge 【题解】本题最大的特点在于从大到小切以及切分规则一致,都是切成px和x-px。 由这两个特点很容易得到结论,后切的蚯蚓得到的px一定比先切的蚯蚓得到的px小,后切的蚯蚓得到的x-px一定比先切的蚯蚓得到的x-px小。 所以可以得到三队列做法, 阅读全文
posted @ 2017-11-02 16:56 ONION_CYC 阅读(188) 评论(0) 推荐(0)
摘要:【题意】按照斗地主出牌规则,给定手牌求出完的最少步数。 【算法】模拟+搜索 【题解】 可以发现除了顺子,其它的出牌规则都和点数无关,只与同点数的牌数有关。 所以可以先暴力枚举要出哪些顺子,然后每一个出完顺子后手牌的情况处理成b[4]表示牌数为1~4的点数有多少个,然后进行dfs。(为了方便,将A接在 阅读全文
posted @ 2017-10-31 08:32 ONION_CYC 阅读(394) 评论(0) 推荐(0)
摘要:【算法】模拟 【题解】O(n^2)预处理横线(y),纵线(x),主对角线(y-x+n),副对角线(x+y)。 然后n^2枚举每个点。 阅读全文
posted @ 2017-09-22 07:17 ONION_CYC 阅读(195) 评论(0) 推荐(0)
摘要:【算法】模拟 【题意】http://codeforces.com/contest/849/problem/D 给定n个点从x轴或y轴的位置p时间t出发,相遇后按对方路径走,问每个数字撞到墙的位置。(还是乖乖啃原题意去吧233) 【题解】 两个数会相撞,当且仅当xi+tj=xj+ti,即xi-ti=x 阅读全文
posted @ 2017-09-06 14:08 ONION_CYC 阅读(274) 评论(0) 推荐(0)
摘要:第一题 模拟送分。 #include<cstdio> #include<cstring> #include<cctype> #include<cmath> #include<algorithm> #define ll long long using namespace std; int read() 阅读全文
posted @ 2017-08-21 12:00 ONION_CYC 阅读(361) 评论(0) 推荐(0)
摘要:第一题 题意:给定n*m网络,定义两个棋子在同行同列则相互攻击,同时要求两个棋子的行和列不能一小一大,求满足条件的最大摆放的方案数。 题解:ans=C(max(n,m),min(n,m)),就是在max中取min个数字的组合,组合内排序构成一种方案。 #include<cstdio> #includ 阅读全文
posted @ 2017-08-13 19:48 ONION_CYC 阅读(215) 评论(0) 推荐(0)
摘要:【算法】模拟 #include<cstdio> #include<algorithm> using namespace std; const int maxn=100010,maxm=1000010; int a[maxn],A[maxm],n; int main() { scanf("%d",&n 阅读全文
posted @ 2017-07-17 22:02 ONION_CYC 阅读(255) 评论(0) 推荐(0)
摘要:【算法】模拟 #include<cstdio> const int maxn=45; int n,a[maxn][maxn]; int main() { scanf("%d",&n); int x=1,y=n/2+1; a[x][y]=1; for(int i=2;i<=n*n;i++) { if( 阅读全文
posted @ 2016-09-20 13:27 ONION_CYC 阅读(240) 评论(0) 推荐(0)
摘要:【算法】模拟 #include<cstdio> #include<cstring> const int maxm=1010; char sm[maxm],key[maxm],s[maxm]; int len,lenk; bool isbig(char c) {return c>='A'&&c<='Z 阅读全文
posted @ 2016-08-14 09:14 ONION_CYC 阅读(344) 评论(0) 推荐(0)
摘要:【算法】 【算法】网络流 【算法】树 【算法】数学 ————【专题】生成树计数(矩阵树定理) ————【专题】计数问题(排列组合,容斥原理,卡特兰数) ————【算法专题】卡特兰数(计数数列) ————【专题】数论 ————【专题】概率和期望 【算法】动态规划 【算法】数据结构 ————【专题】平衡 阅读全文
posted @ 2016-08-10 21:08 ONION_CYC 阅读(2144) 评论(0) 推荐(6)