3 yzyyylx

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 1w+

codeforces1158D Winding polygonal line

题面题意在平面上有n个点,现在给你一个长度为n-2的由LR构成的序列,要求你求出一个排列,使得按照排列在点之间连线后组成的路径中没有相交的线段,而且n-2个拐点的转弯方向与给出的序列相同.做法可以先在这n个点构成的凸包上任选一点作为起点,然后若第一个拐点的方向是向左,则可以在剩下n-1个点中选择一个点,使得无论第三个点选什么都满足第一个拐点是向左拐的,不难发现这个点一定存在,可以用差积求出...

2019-05-19 16:37:25

[ZJOI2019]语言

题面题意有一棵有n个点的树,上面有m条链,两个点可以互达当且仅当存在一条两点都在上面的链.问有几对点可以互达.做法对每个点考虑它对答案的贡献,可以发现,若点x在链a1,b1;a2,b2.....a_1,b_1;a_2,b_2.....a1​,b1​;a2​,b2​.....上,则与x可以互达的点恰好都在点a1,b1,a2,b2.....a_1,b_1,a_2,b_2.....a1​,b1...

2019-05-14 10:44:06

codeforces1163 F Indecisive Taxi Fee

题面题意给出一张无向图,每次询问修改一条边的权值,并询问此时点1到点n的最短路的长度,询问之间相互独立.做法首先将修改分成以下三种情况:1.修改了非最短路上的边,则最短路变为min⁡(\min(min(原来的最短路长度,d[1][u]+d[v][n]+len),d[1][u]+d[v][n]+len),d[1][u]+d[v][n]+len)2.修改了最短路上的边,且比原来短,则最短路...

2019-05-13 22:33:49

codeforces1149E Election Promises

题面题意给出一张DAG,每个点上有一个数字,双方轮流进行操作:选择一个权值不为0的点,然后减少它的权值,并任意修改这个点所有后继的权值.做法这道题显然是Nim博弈,但是直接计算整张图的sg函数显然不可能,所以可以考虑将点进行分组,分别进行博弈,因此分组必须满足如下要求:1.一次操作不能同时修改一个组中中的两个数2.对同一个组中的点操作,可以修改的点所在的组构成的集合相同.因此可以按如...

2019-05-13 15:39:50

codeforces1149D Abandoning Roads

题面题意给出一张无向图,每条边的权值只有两种:a或b(a<b),现在对每个点求,在这张图的所有最小生成树中,1号点到它的最短距离是多少.做法首先在建最小生成树时,权值为a的边比权值为b的边的优先级高,因此可以先将所有边权为a的边缩起来,这样如果权值为b的边连接的点在同一个联通块中,则这条边没有价值.然后我们可以发现,如果一条路径经过某个联通块两次,则这条路径不可能出现在最小生成树上...

2019-05-12 21:19:07

codeforces1149C Tree Generator™

题面题意给出一棵树的括号序列,每次询问会交换括号序列中的两个字符,求交换之后树的直径.做法此题的难点在于如何将树的直径转化为括号序列上的某个值.将’)‘看作1,’('看作-1后,发现直径就是max⁡i−1<=j<=k<=2∗(n−1)∑x=ijnum[x]−∑x=j+1knum[x]\max_{i-1<=j<=k&am...

2019-05-12 18:37:26

codeforces1161F Zigzag Game

题面题意交互题.给出一张二分图,左右两个点之间两两有边,每条边有一个权值且每条边的权值都不相同,Alice与Bob在上面玩游戏.每局游戏由Alice选择"增加"或"减少",Bob自动选择另外一项,然后Alice选择一个点并将棋子放在上面,Bob将它移动到一个与它相连的点,之后Alice与Bob轮流将棋子移动到一个之前没有移动到过的相邻点上.要求若Alice选的是"增加",则棋子移动所经过的边...

2019-05-09 19:52:46

codeforces1161E Rainbow Coins

题面题意交互题有n个硬币,每个硬币有一个颜色,这个颜色是R或G或B,每次询问可以询问多对硬币是否相同(一个硬币不能同时属于两对),最多7次询问,将硬币按颜色分成三对.做法首先考虑硬币只有两种颜色怎么做,发现可以只用两次询问得到:第一次询问:1 2|3 4|5 6|…第二次询问:2 3|4 5|6 7|…这样就可以得到标号相邻的硬币的颜色是否相同,即可得到每个硬币的颜色.考虑三种颜...

2019-05-08 20:32:22

codeforces1146H Satanic Panic

题面题意平面上有n个点,两两之间连线后,求一共能构成多少个五角星.做法首先可以将五角星看作是有5个点的凸包,也就是5个极角排序后递增的向量首尾相接后得到的图形.因此可以记dp[x][y][i]dp[x][y][i]dp[x][y][i]表示从点x到点y经过i个线段的方案数,对所有向量(一个线段可以看作是两个向量)进行极角排序后,依次来更新dp值,这样∑i=1ndp[i][i][5]\su...

2019-05-07 10:05:14

codeforces1146G Zoning Restrictions

题面题意在一条路上有标号为1-n的n座房子,每座房子最高为h,若一座房子的高度为x,则这座房子的收益为x*x,有m条限制,每条限制表示如果在l-r之间的所有房子的最大高度超过hi,则罚款ci.问所有房子的最大收益是多少.做法一道经典的最小割.假设一开始所有房子的高度均为h,初始答案为n∗h∗hn*h*hn∗h∗h,可以对每座房子的每一种取值建一个点,并且这样连边S->0->1...

2019-05-07 07:31:18

Atcoder agc033 D - Complexity

题面题意给出一个矩阵,若一个矩阵中的所有元素都相同,则这个矩阵的代价为0,反之可以将它分成两个子矩阵,代价为两个子矩阵的代价的较大值+1.做法因为答案是log级别的,所以可以考虑枚举答案,记dp[l][r][i]dp[l][r][i]dp[l][r][i]从第l行到第r行从第i列开始最多可以向右扩展到哪一列所形成的矩阵的代价为当前答案,若dp[1][n][1]=mdp[1][n][1]=m...

2019-05-05 11:55:37

Atcoder agc033 E - Go around a Circle

题面题意给出一个环,上面有n个点,将他划分为n段弧,现在要求对每段弧进行红蓝染色,要求染色完成后,从每个点开始通过在环上移动,经过的弧构成的字符串都可以成为给定的字符串,问一共有几种染色方法.做法首先要确定一些结论.假设给出字符串的第一个字符为’R’('B’同理).分两种情况进行讨论:1.给定字符串中的所有字符都相同可以发现环上不存在两个连续的弧且它们的颜色都是B,因此除了所有弧同...

2019-05-05 09:32:20

codeforces1155F Delivery Oligopoly

题面题意给出一张无向图,问至少保留几条边才能使此图是一个边双,并输出方案.做法考虑怎么构造出一个边双,发现可以通过在一个小边双上加一条链,使它变为一个新的大边双,所以可以记f[u][v][i]f[u][v][i]f[u][v][i]表示是否存在一条从u到v的链上包含了状态i的点,然后进行dp,dp[i]dp[i]dp[i]表示状态为i的点组成的边双至少要有几条边,用f数组进行转移即可.代...

2019-05-04 19:57:57

codeforces954I Yet Another String Matching Problem

题面题意定义一种对字符串的操作为将某种字符全部替换为另一种字符,定义两个字符串之间的距离为让两个串相同的最少操作次数.现给出两个字符串S,T,求S的每个长度为∣|∣T∣|∣的子串与T之间的距离.做法首先转化一下两个字符串a,b之间的距离,若a[i]=u,b[i]=va[i]=u,b[i]=va[i]=u,b[i]=v,则可以由u向v连一条边,这样最后所有联通块的大小减一之和即为答案.现...

2019-04-18 08:42:32

[CQOI2012]局部极小值

题面题意将1,2,3…,m*n填入一个m∗nm*nm∗n的矩阵,要求一些位置满足比周围八个数都小,且其他位置不满足,则一共有几种方案.做法首先不考虑"其他位置不满足"这个要求,因为数据范围很小,因此最多有8个位置符合条件,可以状压dp.考虑将m∗nm*nm∗n个数从小到大依次填入矩阵,用dp[i][j]dp[i][j]dp[i][j]表示当前要求位置填的数的状态为i,其他位置一共填了j个的...

2019-04-15 10:20:53

codeforces1153F Serval and Bonus Problem

题面题意在一条线段上随机放n个线段,则被至少k条线段覆盖的区间总长度期望为多少.做法首先可以发现这n个线段的2∗n2*n2∗n个端点期望把线段等分为2∗n+12*n+12∗n+1段,那么只要计算每一段的贡献即可.这个可以用dp求出每段区间被大于等于k条线段覆盖的方案数,再除以总方案数,即可得到每段区间对答案的贡献,然后就能统计答案了.代码#include<bits/stdc++....

2019-04-15 08:37:28

codeforces1119H Triple

题面题意给出三个数x,y,z,再给出n组数,每组数包含(x+y+z)个数,x个a,y个b,z个c,那么从每一组数中选择一个数的异或值为t的方案数是多少,对每个t输出答案,a,b,c均小于(1<<m).做法首先考虑一个简单的暴力,对每组数进行一次fwt,然后全部乘起来,时间复杂度为O(2m∗m∗n)O(2^m*m*n)O(2m∗m∗n),肯定不行.对于一组数a,b,c,可以考虑...

2019-04-14 22:18:52

codeforces1119F Niyaz and Small Degrees

题面题意给出一棵有n个点的树,每条边有一个边权,对于[0,n−1][0,n-1][0,n−1]的每一个数x求,至少删掉权值和为多少的边后,所有点的度数都小于等于x.做法首先考虑对于一个x怎么做,记dp[i][2]dp[i][2]dp[i][2]表示第i个点与其父亲之间的边是否删去时,以i为根的子树最小要删去权值和为多少的点,转移时可以用堆处理出所有子节点t中dp[t][1]+val−dp[...

2019-04-12 19:54:13

[ZJOI2019]麻将

题面题意共有n种麻将牌,给出一开始的13张麻将牌,问期望摸上来几张牌后,与开始的13张牌组合后存在一个大小为14的能和的子集.做法因为要求期望的摸牌次数,我们可以将这个次数转化为∑i=134∗np(i),p(i)\sum_{i=13}^{4*n}p(i),p(i)∑i=134∗n​p(i),p(i)表示总共有i张牌后仍然没和的概率,而p(i)=cnt(i)/A4∗n−13i−13,cnt(...

2019-04-11 07:41:10

codeforces864F Cities Excursions

题面题意给出一张有向图,多次询问,每次询问给出三个数u,v,k,表示询问从u到v的路径上第k个点是什么。若u,v不连通或长度大于k或该路径无限长输出-1做法首先可以通过n次dfs求出数组ok,ok[i][j]表示从点i出发是否可到达点j,然后将询问离线。对于以点v为终点的询问,可以对于所有可以到达它的点u(u!=v),找到点u直接连接,字典序最小且可以到达点v的点t,并让t向v连一条边...

2019-03-21 19:00:16

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。