暴力 ---- 模拟
文章平均质量分 62
orz11111111
这个作者很懒,什么都没留下…
展开
-
CF 519D Mysterious Crime 枚举,DP.
题意: m个[1:n]的排列. 操作: 将排列的某个前缀和后缀删除.m<=10. n<=1e5.每个排列操作一次.问有多少种操作方式,使得m个排列变为相同. 若最后相同的序列为第一个排列的[L:R] 那么显然[L,R-1]也是一个解.设d[i]为:当a[1][i]为起点时,最长的一个合法解. nxt[k][x] 为第k个排列,数x下一个位置的数.令x=a[1][i...原创 2018-10-30 19:55:48 · 364 阅读 · 0 评论 -
CF 967D. Resource Distribution 暴力,二分
题意:n个服务器 第i个服务器最多能负载a[i]单元.现在有两个任务其值为s1,s2若有一个任务值为S,分给k个服务器 则这k个服务器其a[i]值>=(S+k-1)/k 每台服务器最多运行一个任务.问任务s1,s2是否能通过这n个服务器运行起来.n枚举任务1要用到x台服务器,那么这x台中最小的为val=(s1+x-1)/x 在a二分找到第一个>=val的下标i,此原创 2018-04-30 22:39:10 · 326 阅读 · 0 评论 -
CF 552D. Vanya and Triangles 枚举+暴力
题意:二维平面上n个点,问从中选三个点能构成三角形的方案数?n任选三个C(n,3) 扣除掉选三在同一条直线上的方案.先枚举dx,dy 然后在选一个点作为起点 查看这条直线上有多少个点.dx,dy要互质 否则一条直线会遍历多次.注意以p[i]为起点的直线上过去有点被标记,那么要先扣除这v1个点方案 然后在加上新的点tot个的方案(为了维护一条直线上的最多点).O(m^原创 2018-04-23 17:14:15 · 171 阅读 · 0 评论 -
CF 591D Three Logos 暴力,模拟
题意:给出三个矩形的长和宽(x[i],y[i]),问用这三个矩形是否能拼成一个正方形(矩形可以旋转)输出正方形的边长和拼成的方案.若sqrt(矩形面积和)正好为某个整数n 则边长为n.因为只有3个矩形,在左上角放一个以后,剩下两个部分必须填满 暴力判断即可.#include using namespace std;const int N=2e3+5;int n=-1,原创 2018-04-06 14:41:56 · 513 阅读 · 0 评论 -
CF 599D SpongeBob And Squares 数列+枚举二分
题意:定义一个n*m矩阵的价值为:这个矩阵中不同正方形的个数,例如2*3矩阵可以有 6个1*1的正方形和 2个2*2的正方形 则价值为8.给出x, x<=1e18. 问有多少个n*m的矩阵其价值正好为x 输出方法数和方案. 枚举n,此时m越大显然价值越大.二分m.n<=m时,计算一个(n,m)的价值 令p=m-n+1 val=∑(n-i+1)*(m-i+1) [i=1..n] =∑...原创 2018-03-28 17:35:42 · 113 阅读 · 0 评论 -
ZOJ 4020 Traffic Lights BFS
题意:n*m矩阵a.若a[i][j]==1则可以往左右走,若a[i][j]==0 则可以往上下走.每一秒可以按上述规则移动,并且每秒钟矩阵所有的值翻转。n*m<=1e5.问从(sx,sy)到(tx,ty)的最短时间.首先n*m<=1e5 开一维数组表示地图.若地图每秒不变化 那么就是一个裸的BFS现在地图每秒翻转 初始地图设为A 翻转的设为B.那么记录每个点状态(x,y,st(A/B)...原创 2018-04-09 12:32:33 · 251 阅读 · 0 评论 -
ZOJ 4016 Mergeable Stack 模拟,链表
题意:初始有n个空的栈,Q次操作.操作1:将v压入第i个栈的栈顶.操作2:弹出第i个栈的栈顶,并输出该栈顶的值.操作3:将第t个栈的所有元素移到第s个栈的顶部. 移动后s变为:E(s,1)..E(s,S),E(t,1)..E(t,S)n,Q<=3e5.v<=1e9 模拟以上操作.设hd[i],ed[i]分别为第i个栈的开头和结尾的编号, sz[i]为第i个栈的大小.val[...原创 2018-08-05 11:43:19 · 191 阅读 · 0 评论 -
CF 596C Wilbur and Points 暴力,set
题意:给出n个点(x,y)并且n个点包括了(0,0)->(max_x,max_y)内的所有的点定义一个点(x,y)的价值s(x,y)=y-x. 现在有价值序列w[i].现在将n个点按照价值来分配,若点(x,y)对应w[i],则所有x'>x&&y'>y对应的w下标要>i.n<=1e5. 0<=x,y<=1e5.问这n个点是否能按上述规则分配....原创 2018-03-30 10:19:24 · 146 阅读 · 0 评论 -
CF 887C Solution for Cuble 魔方,暴力
题意:给出2*2*2魔方的平面展开图 每个格子按照题意编号为[1..24] 现在给出a[i]表示第i个格子的颜色 问是否能通过旋转一次魔方 使得魔方复原2*2*2旋转的方案 一共只有6种 (上层顺时针等价于下层逆时针)每一种相当于一个置换 暴力写出每一种情况即可.#include using namespace std;typedef long long ll;con原创 2018-03-06 11:02:59 · 251 阅读 · 0 评论 -
CF 669C Little Artem and Matrix 暴力,指针
题意:n*m的矩阵,现在有Q次操作记录.操作(1,r) 表示把第r行的数左循环移位.操作(2,c) 表示把第c列的数上循环移位.操作(3,r,c,x) 表示当前a[r][c]的数为x.n,m令二元组f[i][j]={x,y}表示:当前(i,j)是初始矩阵中的{x,y}位置每一次操作暴力更新二元组f,若遇到操作3 则令a[ f[r][c] ]= x即可 O(Q原创 2018-03-18 11:41:00 · 281 阅读 · 0 评论 -
CF 358C C. Dima and Containers 离线+模拟
题意: 有3种数据结果,Queue,Stack,Deck(两端插入) 和 Q次操作 操作1:把数字x压入3种数据结构中的其中一种. 操作2: 遇到输入x==0 将弹出3个数据结构中的非受限端 (Queue为队头,Stack为栈顶).并且清空该数据结构.(Deck 只能选其中一端) 并且要求每次操作2弹出的数之和要最大.1每遇到操作2后 所用数据都清空 所以将两个0之间的数原创 2018-02-25 14:22:23 · 330 阅读 · 0 评论 -
CF 754D. Fedor and coupons 枚举,区间交集
题意:给出n个区间[l,r],选出k个区间,使得这k个区间的交集尽量大n,k先将区间按照左端点从小到大排序, 枚举k个区间中,左端点最大的为i.那么剩下k-1个区间 只能在前i-1个区间中选择 显然选右端点前k大的.#include using namespace std;const int N=3e5+5;struct node{ int l,r,id;}a[N原创 2018-03-17 17:15:35 · 160 阅读 · 0 评论 -
CF 950C.Zebras 模拟,set
题意 定义一个序列为0开头,0结尾 中间有若干个101010交替的序列为合法. 例如0,010,01010.为合法.给出01字符串s,将s分成若个个子序列 使得其每个子序列都为合法,并输出任意一种方案或判断无解. |s|//数据:000111000分别将'0','1'的位置压入集合a,b.因为0可以单独一个,所以只要把'1'配完即可有解.每次从'0'开始暴力生成一个子原创 2018-03-09 20:36:00 · 541 阅读 · 0 评论 -
CF 937C. Save Energy! 二分(精度)+数学
题意:一个炉子有两种模式:食物加热t分钟可以完成,或者在保温模式下进行2t时间. 若炉子连续加热k分钟则自动变为保温模式 . 于是小A每d分钟到炉子查看 若炉子为保温状态 则会把它变为加热状态.给出k,d,t 若d为k的因子 则炉子保持加热状态 答案为t.第一次变为保温的时间为k 下一次变为加热状态的时间为 k+(d- k%d)关键:在加热k秒变保温 因为2k原创 2018-02-28 00:40:32 · 204 阅读 · 0 评论 -
CF 946D. Timetable 暴力+DP
题意:某星球一周有n天,每天m个小时.每天小A会在该天第一次上课时间p,直到最后一次上课时间q待在学校 共q-p+1小时.给出课表s,若s[i][j]=='1'代表有上课 否则代表没课.问溜掉不超过k节课 使得小A这n天在学校的总时间最小. n,m,k如果每次只考虑删一次最多能减小多少,容易找到反例1 24 2110000000000000101010101跑出的结原创 2018-03-07 08:49:31 · 371 阅读 · 0 评论 -
51nod 40 序列分解 暴力dfs or 折半+字典树
题意:长度为n的序列a,从a中选出两个长度为n/2的子序列b,c.a中每个元素要么属于b要么属于c.2初始序列b,c都为空 假如a[1]属于序列b. 那么下一个x=a[1]的数可能属于序列c 中间的数肯定都压入序列b中若序列b长度大于n/2,无解. 141 7 10 1 7 4 5 7 1 10 7 4 5 1WAWAWA... 按上面算法来执行则无解 实际上有{1原创 2017-12-25 13:48:01 · 204 阅读 · 0 评论 -
URAL 1132 Square Root 暴力枚举,二次剩余.
题意:Q次询问,每次给出a,n. n为素数,a和n互质,gcd(a,n)=1.在[1,n-1]得范围内,找到所有满足x*x = a (mod n)的x.Q每次O(N)枚举x,O(QN) TLE.预处理:枚举n,在枚举x,[1,n-1]来更新答案mp[n][(x^x)%n]++ O(n^2 log n) TLE.注意题目的条件 询问中的n都为素数并且n相同的n只进行原创 2017-12-16 15:29:13 · 257 阅读 · 0 评论 -
CF 124C C. Prime Permutation 暴力
题意:长度为n的字符串s,问是否能将s重新排列满足对任意一个素数p 都有 s[p]=s[p*i] [i=1,2..n/p] n<=1000.对素数p1,p2 若lcm(p1,p2)=p1*p2 <=n 那么s[p1]=s[i*p1]=..=s[p1*p2] = s[p2]=s[i*p2] = 某个字符c.质数p,q满足p*q<=n 那么p*2,q*2<=n若质数p*2&g...原创 2018-05-10 21:44:51 · 216 阅读 · 0 评论 -
GCPC 13 F Peg Solitaire 暴力dfs,状态数
题意:5*9的字符矩阵,'.'表示空地','#'表示障碍,'o'表示棋子.操作:若一个'o'它相邻4格中某个方向也为'o' 则它可以跳跃相邻的'o'落在其旁边的'.'空地上.并且被跨越的'o'消失.'o'最多8个. 问最少剩余多少个棋子.并求出此时需要的最少操作次数.因为'o'最多8个 并且每操作一次减少一个'o' BFS存状态麻烦.用dfs是否能不超时?平均每个'o'操作的次数为2. ...原创 2018-11-03 22:42:42 · 380 阅读 · 0 评论 -
GCPC 13 A Boggle 暴力,Trie剪枝
///////////////////////////////////题意:字典中总共有w个单词.b次询问.每次给出一个4*4的字符矩阵.可以从矩阵中任意一个位置开始.往相邻8个方向走.最后组成一个单词.若组成的单词在字典中,则按其长度来计算分数. 长度3,4积分为1.长度5积分2.长度6积分3.长度7积分5.长度8积分11.字典中的单词长度最多为8.矩阵中的同一个位置在一个单词中只能出...原创 2018-11-03 22:36:43 · 274 阅读 · 0 评论 -
HDU 6351 Beautiful Now 全排列,预处理,暴力
题意:十进制数n.操作:可以交换n的任意两个digit的位置. T<=100.1<=n,k<=1e9. 问k次操作后,能得到最小和最大的数字?贪心:假如要大,当前数字和后面最大数字交换.假如有多种 不一定选最后面的..有反例..n只有9位数(1e9情况只有一种).暴力枚举全排列(第i位变到第p[i]位),一个排列到另外一个排列最少的交换次数为:sigma(每个循环节的...原创 2018-10-26 17:20:51 · 154 阅读 · 0 评论 -
HDU 6301 Distince Values 思维,set维护mex
题意:m个限制条件[L,R]表示a[L:R]内的数任意两个都不能相同n,m<=1e5.给出n构造出满足m个条件的最小字典序序列.字典序最小,当前位置尽量小.设:pre[r]表示 限制中:端点r的最远左端点.pre[r]是递增的 单指针维护,初始可以使用数为[1..n]. 根据set维护当前可以选择的最小数字(mex)即可.#include <bits/stdc++.h&...原创 2018-10-26 17:14:15 · 167 阅读 · 0 评论 -
CF Round 174D. Cow Program 思维,记忆化
题意:长度为n的序列a. 第i轮游戏中 令a[1]=i. 初始x=1,y=0.任何步骤出现:x<=0或者y>n时终止.每轮:步骤1:y+=a[x],x+=a[x]. 步骤2:y+=a[x], x-=a[x]. 2<=n<=2e5,1<=a[i]<=1e9.问i=[1...n-1]时 最后y是多少? 永远无法终止时y=-1.暴力模拟时O(n^2) 只要令dp[u]...原创 2018-07-02 10:35:05 · 360 阅读 · 0 评论 -
CF Round 488C. Two Squares 暴力,几何
题意:分别给出两个矩形的4个顶点,第一个矩形的边平行坐标轴,第二个矩形的边和坐标轴呈45度角.顶点都为整数,并且 -100<=x<=100. 问这两个矩形是否相交.若这两个矩形相交,因为肯定有一个矩形的某个边界落在另一个矩形内, 存在有一个交点为整数点.由于坐标的范围很小, 先求出第二个矩形的边界 在求出其所有的整数点标记即可.#include <bits/stdc++.h>...原创 2018-06-19 23:38:52 · 335 阅读 · 0 评论 -
ARC 084D. 700 Small Multiple 同余,暴力
题意:定义f(x)为x的数位之和.例如f(427)=13.2<=k<=1e5. 给出k,问f(y)最小为多少,y为k的倍数?y为k的倍数,也就是y%k==0 余k为0肯定从某个余k为r的更新而来若x≡y(modk) 显然只要保留f(x),f(y)中f值较小的哪一个.从一位数开始bfs搜索,每次可以在该数后面*10+i.只有f(r)比原先优的才会被压入队列. 也就是Dijkstra求最...原创 2018-06-09 16:52:24 · 266 阅读 · 0 评论 -
CF Round 403D Football League 暴力
题意:n个二元组(a,b).a和b为字符串.n次操作:第i次操作: 选法1:选择a的前三个字符,选法2:a的前两个字符和b的第一个字符.规则1:要求选出的n个字符串没有相同的规则2:若第i次使用了选法2,那么任意一次选法1都不能和第i次的选法1相同.例如a=dinamo , b=bytecity 使用选法2:dib,那么其他操作不能用选法1得到:dinn<=1e3,3<=|a|,|b...原创 2018-05-31 22:06:00 · 125 阅读 · 0 评论 -
CF Round 117C. Optimal Sum 暴力(区间前k大和)+Set
题意:长度为n的序列a.定义一个区间的价值为:该区间所有的数相加后的绝对值.操作:改变一个数的正负号.1<=len<=n<=1e5.0<=k<=n,-1e9<=a[i]<=1e9. 问在操作不超过k次的情况下.长度为len区间的最大价值.长度为len的区间中,相同符号的显然要尽量多.所以改变的只有该区间前k大正数,或者前k小负数.如何求所有长度为len区间...原创 2018-06-07 21:31:32 · 823 阅读 · 0 评论 -
CF Round 276D. Maximum Value 暴力,二分.
题意:长度为n的序列a, 问a[i]>=a[j]中. (a[i] mod a[j])的最大值为多少?n<=2e5, 1<=a[i]<=1e6.枚举a[j].此时答案为[0,a[j]-1) 那么把值按a[j]来分段 [a[j],...2a[j]-1],[2a[j]...3a[j]-1]为一段.现在要想知道每段的最大值. 预处理前缀和.若第k段最值为x,pre[x]是该段第...原创 2018-06-21 10:11:56 · 126 阅读 · 0 评论 -
Round 78C. Help Victoria the Wise 暴力(旋转),BFS
题意:给出6种颜色(可以有相同颜色),问将一个正方体用这些颜色上色的方案数.两个方案相同,当其中一个方案可以通过旋转若干次得到另外一个方案.面个数,颜色个数=6. 旋转方案有3种.每种方案选择顺序不同 结果也不同.枚举每个面的颜色后,BFS暴力计算重复的即可. O(6!*3).#include <bits/stdc++.h>using namespace std;const int...原创 2018-06-06 10:01:06 · 252 阅读 · 0 评论 -
CF Round 122C. Cutting Figure 暴力
题意: n*m地图,'.'表障碍,'#'可以走. 问最少删除多少个'#' 使得'#'的联通分量个数>1.n,m<=50,初始地图中‘#’的联通分量个数为1.答案最多为2, 考虑左上角(最左边一列中的最高一个)的'#'. 其左边和上方没有'#' 删除其下方和右边的'#',则联通分量个数>1.现在查看答案是否能为1,暴力删除一个'#'.然后dfs判断联通分量个数即可 O(n^4).#...原创 2018-05-29 15:48:02 · 188 阅读 · 0 评论 -
CF Round 137C. Reducing Fractions 模拟,素因子分解
题意:长度为n,m的序列a,b,分子为a[1]*a[2]..*a[n].分母类似.n<=1e5, 1<=a[i],b[i]<=1e7 将该分数化成最简形式 并且按输入的形式输出. (相乘个数不超过1e5,每个乘数<=1e7).明显先对每个数素因子分解. 分子分母中x的幂为pa,pb 那么最简形式中 pa=pa-min(pa,pb),pb=pb-min(pa,pb).不能...原创 2018-05-27 12:49:54 · 178 阅读 · 0 评论 -
CF 955C Sad Power 枚举(Perfect Powers)
题意:Q次询问,每次询问[L,R]中有多少个数x 满足 x=a^p (a>0,p>1)Q上界为1e18 那么p最大不会超过61.现在计算出f[1,n]有多少个数x 满足x=a^p .那么答案就是f[r]-f[l-1]枚举p,二分此时a^p可以先暴力预处理出1e18内,p>=3的所有Perfect Number. O(1e6).然后对于给定的n,p==2的有sqr原创 2018-04-28 14:39:58 · 409 阅读 · 0 评论 -
GYM Samara16 A Treasure Island 暴力
题意:n*m的地图,'#'表示障碍, '.'表示land, '?'表示待定. 可以上下左右移动.问是否能将地图上所有的'?'变为'.'或者'#' 使得地图上只有一个联通分量.n,m先把所有的'?'都变为'.' 还是有多少个联通分量时如果有某个个联通分量全部都为'?则把该摧毁该连通分量,直到联通分量个数为1为止.若此时联通分量个数还是>1则无解.现在只有一个联原创 2017-12-22 11:47:04 · 213 阅读 · 0 评论 -
CF 903 E Swapping Characters 暴力
题意:k个字符串 每个字符串长度都为n.操作:交换某个字符串中任意两个位置的字符.k首先k个串中,任意两个串其字符出现频率都要相同,否则无解.先算出初始第一个串和其他串得汉明距离暴力枚举第1个串交换哪个位置.算出新的汉明距离 如果新得汉明距离==0或者2(字符频率相同 可以交换使得距离为0),.O(n^2*k).#include using namespace s原创 2017-12-13 20:24:27 · 468 阅读 · 0 评论 -
CS 300 Connect the Graph 并查集+模拟
CS 300题意:n点m条变的图,操作:删除任意一条边,然后增加任意一条边.n,m首先用并查集求出图中有多少个联通分量,假设个数为cnt,则操作数至少要cnt-1次.并处理出每个联通分量中那些多余的边.多余边之和应该大于cnt-1 否则无解.输出解:每次从取出一个多余边,标记一个节点作为根,连接另外一个连通分量的根即可.#include using namespa原创 2017-10-23 08:25:18 · 199 阅读 · 0 评论 -
HDU 5568 sequence2 DP+高精度
题意:长度为n的序列a,问有多少个长度为k的递增子序列? ndp[i][j]:第i个数结尾 长度为j的子序列个数 O(n^3).答案最大为C(n,k) 会爆long long 用高进度加#include using namespace std;typedef long long ll;const int N=1e2+5,mod=1e8;struct Bigint{ int l原创 2017-11-08 11:51:15 · 181 阅读 · 0 评论 -
NEERC 17 H. Palindromic Cut 暴力(回文)
Problem H题意:给出n个字符.问把n个字符分成k个字符串 要求:这k个字符串的长度都相同,这k个字符串都为回文.nk组字符串 每组中最多只能有一个出现奇数次的字符.如何输出方案:先把g个奇数字符仍到每组中间,剩下的2个相同的一对,有c对 如果能平均分给每组 即c为g的倍数 则退出.否则拆掉一个偶数 增加组数后继续判定.O(127*|S|)#include us原创 2017-10-22 15:12:27 · 421 阅读 · 0 评论 -
ZOJ 3985 String Of CCPC 字符串,模拟
题意:给出长度为n的字符串,只包含字符C,P 操作:第i次添加字符需要消耗i-1元 字符串的价值为子串"CCPC"的个数.n添加一个字符 最多使总价值增加1(原本的CCPC可能被覆盖),所以最多操作一次.先数字符串原先有多少个CCPC 把这些位置(除了开头和结尾)涂黑.表示不能在其之间加入(若加入,则贡献-1,+1无意义)然后在数是否有子串CCC CPC CCP即可.原创 2017-11-06 21:41:15 · 242 阅读 · 0 评论 -
CF 205 CLittle Elephant and Interval 分类讨论(计数) D(暴力,水题)
题意:给出[L,R],定义x为合法 当x的最高为和最低位相同 例如1021,9L,R现在求只关心最高位和最低位 现在枚举位数m.n的最高位hi当m小于n的位数 则开头有9种方案.每种对应中间有10^(m-2).当m==n的位数时当最高位当最高位==hi时 此时还要在分最低位是否>=hi 比如n=2451和n=2453 这两种情况.n=2453 则2..2原创 2017-10-11 14:44:08 · 247 阅读 · 0 评论 -
CF 322C. Ciel and Robot 枚举+模拟
题意:初始在(0,0) 操作序列为s,该操作序列可以执行无数次.-1e9设x,y为做一次序列s产生的偏移量,f[i],h[i]为 序列s前缀i产生的偏移量.若存在解 则 a=kx+f[i],b=ky+h[i] k>=0 枚举i判定条件即可.注意i==0特判还有dx和dy等于0的情况.#include using namespace std;typedef long原创 2017-10-11 13:43:05 · 202 阅读 · 0 评论