自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 Codeforces 750C New Year And Rating 二分判定

点击打开链接思路:ans=初始值+sigma(c[i])  判定简单,二分出最大的初始值即可 #include using namespace std;typedef long long ll;const int N=2e5+20;int n,c[N],d[N];bool check(int x){ for(int i=0;i<n;i++) { if(d[i]==1&&

2016-12-31 13:57:18 835

原创 Codeforces 611D New Year And Ancient Prophecy DP+递推式优化

点击打开链接题意: 给一个数字串(长度ndp[b][c] "b~c"为最后一个数字时的方法数前一个数位数比最后一个数位数小时  dp[b][c]=sigma(dp[a][b-1]]) b-1-a若a=2b-c-1 则比较数"a~b-1" 与"b~c"大小nxt[a][b]=x 为第一个x满足s[a+x]!=s[b+x] ,nxt[a][b]=s[a]==s[b]?nxt

2016-12-30 16:38:45 316

原创 Codeforces 611C New Year and Domino DP+前缀和

点击打开链接题意:给你个矩阵,每个位置是空或者不空每两个相邻空的位置,可以放一个木条有q次询问,每次问你一个子矩阵中,放一根木条有多少种放法//qO(2wh+q(w+h)) 约为1e7定义好状态即可:/f[i][j] 第i行横着放,前j列&&以第j列为终点(第2个'.'在第j列上)连续2个.的个数 //cos A=(b2+c2-a2)/2bc#incl

2016-12-29 22:32:00 700

原创 Codeforces 752D Santa Claus and a Palindrome map应用

点击打开链接题意:k个字符数串,每个字符串长度为n ,val//组成回文:类1:A!=R(A) A和R(A)放在字符串两边  && val > 0 类2:两个相同回文 放在字符串两边 && val>0中间可以放一个回文 从剩下中最大的未配对的选 maxn 或者 原来配对的回文中与最小负数val配对的哪一个 ans-minn #include using namespace

2016-12-29 17:16:00 464

原创 Codeforces 752E Santa Claus and Tangerines 二分+记忆化

点击打开链接二分joy值 每次判定时 对于每个a[i]只要>=joy时,就拆分成a[i]/2,a[i]-a[i]/2, p[a[i]]记忆化保存每个a[i]能拆分出多少个joy即可. 时间复杂度为O(n(logn)^2) n#include using namespace std;typedef long long ll;const int N=1e6+20;const ll in

2016-12-26 20:05:14 455

原创 Codeforces 752C Santa Claus and Robot 思维

点击打开链接题意:给出路线,要求在上面放p个点(p尽量小&&pi,pi+1之间为最短路径)思路 若s[i]和s[j]为pk和pk+1,因为pk->pk+1是最短路径 所以s[i]->s[j]的路径是递增的 找到最长递增序列的个数即可#include using namespace std;int n, Left, Right, Down, Up, sum = 1;

2016-12-25 21:24:08 422

原创 Codeforces 719C Efim and Strange Grade 贪心+模拟

点击打开链接题意:给定n,m分别代表字符串长度和可操作次数,接下来给出长度为n的字符串代表原始成绩,要求在m次内得到可以对这个成绩也就是实数的满足四舍五入的最大数,可以不使用完m次机会,并且整数部分只能进位一次思路:找到离小数点最近的s[i]>='5'进位(如果从pos从后面开始效果是一样的,还浪费操作次数),模拟进位即可例如(1.2456 ->1.25) (1.2456->1.2

2016-12-25 17:02:04 459

原创 Codeforces 749D Leaving Auction 二分+Set

点击打开链接题意;一共有n次喊价,有q个询问,每一个询问有一个num,接下来num个人从这次拍卖中除去,问对于每一个询问减掉num个人后是谁赢了拍卖,最小的价格是多少。n,q思路:set存每个人的最大bids和编号  && vector保存每个人投的bid,先T掉num个人后利用set自动对最大bids排序后 如果当前set size()为1时 输出vector[x]的最小即可如果

2016-12-23 18:39:29 793

原创 poj 2505 A multiplication game 博弈基础

点击打开链接题意:从1开始轮流操作,操作mul from 2 to 9  >=n 时无法操作,则输 一个state 后继有一个为必败态时,该state为必胜态n明显n为必败 则[n/9,n)都为必胜态 x=n/9  [x/2,x)  x/2~x都为必败态 因为[x/2,x)不管mul什么都会进入必胜态的区间(该区间的任意一个数的使用后继都为必胜态)#includ

2016-12-23 16:16:50 330

原创 Codeforces 746C Tram 模拟+思维

点击打开链接//t1//因为坐车第k次经过x2的时间是固定的,所以上车前走了多少步是不重要的.//人选择坐车时,车要经过x1,人才有可能上车 #include using namespace std;const int N=2e4+20;int main(){ int s,x1,x2,t1,t2,p,d; while(cin>>s>>x1>>x2>>t1>>t

2016-12-20 20:34:52 420

原创 Codeforces 749C Voting 贪心+模拟

点击打开链接题意:有两组人D和R,一次轮流投票,D的人可以说R里面的某个人不能投,也可以什么都不做,R里面的同理  //贪心:轮到第i人(D)投票时,应选择把下一个能做决策的对手X(R)淘汰(既淘汰掉一个人,又防止下一个D被淘汰,即可能又多了一次淘汰(R)的机会) //RDRDDRD ->RDD->D Win:D  //用队列模拟即可 #include using nam

2016-12-20 14:56:44 599

原创 Codeforces 747D Winter is Coming 贪心(从最坏解开始优化)

点击打开链接如果k>=cnt 一定有解 即仅在neg使用tire 答案最坏为cnt*2;可以在positive上使用tire的次数最多为k-cnt天 如果两个neg之间长度(positive个数)为l,则如果在l上依旧使用tire 则k-=l ans-=2贪心:优先对l小用tire即可 最后特判最后一个neg能否使用到结束即可.#include using nam

2016-12-19 23:45:03 640

原创 Codeforces 746D Green And Black Tea 构造

点击打开链接题意:有n杯茶,a杯绿茶,b杯红茶,问怎么摆放才可以让不超过k杯一样的茶连续摆放,如果不能就输出NO。//颜色少的Y至少要有n/(k+1)个 插入后如果还有剩下,则在每组里面隔一个间隔插入即可 #include using namespace std;typedef long long ll;const int N=2e5+20;char s[N];int m

2016-12-19 15:10:28 650

原创 Codeforces 745B HongCow and puzzles 矩形(水)

点击打开链接//题意:'X'是拼图碎片 问给出两块G(不能旋转) 能否拼出矩形// 反过来看 就是把一个矩形切成两块,则每一块仍然是矩形,判断G中的'X'能否组成矩形 //确定矩形边界后求出面积与个数比较即可#include using namespace std;typedef long long ll;typedef pair P;const int inf=1

2016-12-18 10:39:05 606

原创 Codeforces 745C 并查集+贪心

点击打开链接//题意:n个定点 m条边(无重边),有k个顶点之间不能有路径存在,问最多能添加多少条边时,仍然满足情况 //因为k个顶点之间不能有路径存在 则最后图中剩下的联通分量个数为k//显然最后组成的最大的哪一个联通分量,点数要尽可能的多,其余有限制的联通分量里面的边数是size*(size-1)/2#include using namespace std;typede

2016-12-18 10:11:52 614

原创 hdu 3032 Nim or not Nim SG函数入门+打表找规律

点击打开链接//题意:n堆石子 每堆a[i] 操作为:拆分成两堆或者取若干个 //sg[a[i]]>=sg[a[i]]^k ,sg[x]=mex(sg[yi])// BOUTON'S THEOREM:n堆石子对应的(sg[a[1]]^sg[a[2]]....^sg[a[n]])=k时(k!=0) 将sg[a[i]]->sg[a[i]]^k即可使异或式为0//SG异或式为0时 由于消

2016-12-17 23:33:02 405

原创 hdu 5996 dingyeye loves stone nim同阶博弈

点击打开链接题意:给出n个结点的树 两个人轮流操作,操作为u-fa[u]传k个数 k小于等于a[u] 谁先不能操作则输.观察发现 a[i]是在不断向root移动,当且仅当a[root]!=0 其他a[i]=0时 游戏结束如果一个结点距离root为偶数,则对该结点操作无意义(若对手移动它们,则可模仿操作) 剩下的操作只有奇深度向偶深度移动这一步(移动这一步的数量a[i]等价于nim中

2016-12-17 22:45:49 334

原创 hdu 1847 SG递推入门

点击打开链接http://wenku.baidu.com/link?url=47DequTlLK6bfAMcuRauPRYbJ5ZU5P8ChR9Jgbg7ZY4dPgkaY8p1RReXAuRpsbal-sbL1QEVFl3btKX4sKce3cQQY4tbIpRNjK9ogyaQYfK/mex{}集合中没有的最小非负整数 g[x]=mex{g[yi]|yi为x的后继状态}g

2016-12-17 20:15:32 320

原创 Codeforces 672D Robin Hood 二分判定+思维

点击打开链接//题意:有n个数 k个操作 每次把最大值+1,最小值-1 问k次后的最大值和最小值之差,每个数都相等时停止//n// 。二分一个符合情况的最大值max。那么就要把比max大的数补给比max小的数。//假设给出部分为A 最能得到的最大部分为B,如果A=A A#include using namespace std;typedef long long ll

2016-12-16 22:09:24 330

原创 Codeforces 672C Recycling Bottles 几何+贪心

点击打开链接//题意:给出平面上n个bottle 两个人和bin的坐标 求把bot捡完所需要最短时间 n//除了第一次是从pos->bot->bin 其余之后的路线都为bin->bot->bin//贪心假设:两人初始都在bin时 ans=2*sigma(distance(bin,bot(i))) 乘2为来回//现在由于每个人第一次选择bot不同 导致时间的变化T//若两人分别选

2016-12-15 22:42:32 461

原创 Codeforces 743D Chloe and pleasant prizes 树型dp

点击打开链接ll dp[N];//dp[u] 以结点u为根时,最大的子树和 //题意:选两颗结点使其子树不相交&&使其子树和最大 //因为要求两个点所在子树不相交 所以这两个点一定为兄弟关系//找到每个结点儿子中,前两大兄弟的子树和即可  #include #include using namespace std;typedef long long ll;con

2016-12-15 16:28:53 293

原创 hdu 2263 Heavy Cargo Floyd(求最大容量)

点击打开链接//dp(k)[i][j] 从i->j(中间结点最大编号不大于k)时最大容量//容量(i->j路径中的最小边) //题意:求i->j的最大容量 (i->j路径中的最小边最大的那一个)// dp(k)[i][j]=max(dp(k-1)[i][j],min(dp(k-1)[i][k],dp(k-1)[k][j]])#include #include #incl

2016-12-14 22:20:36 370

原创 hdu 3466 Pround Merchants 排序+01背包

点击打开链接题意:n个物品,每个物品体积pi 价值vi 只有当前体积>=qi时 才能购买物品i关键:对物品决策的顺序不同会导致最后的价值不同: 例如总体积为10,物品(pi,qi) : a=(2,7) b=(1,10) 先选a就不能在选b,先选b就可以在选a//dp[j]=min(dp[j],dp[j-p[i]]//j=qi~m 最小能算到 qi-pi 也就时说使物品没有按照qi-

2016-12-14 11:58:28 306

原创 Codeforces 66D World tour BFS+枚举

点击打开链接题意:给一个有向图 求出4个点最短距离和最大 (nd(a+b+c+d)要最大 枚举b,c 因为路程要最大 找到离b最远a和离c最远d即可#include #include #include using namespace std;const int N=5e3+20;const long long inf=2e7;vector e[N];int n,m,A,B

2016-12-13 22:13:30 329

原创 Codeforces 667C Reberland Linguistics dp+set

点击打开链接//题意:取>=5的串的作为root,之后截取长度为2或者3作为"suffix",直到结束,求出有多少种不同的"suffix"? 限制:相邻的suffix不同即可 //dp[i][0] 处理到第i个字符时 截取[i,i+1]时是否可行 ->只要(dp[i+2][0]可行&&[i,i+1]!=[i+2,i+3]])|| dp[i+2][1]可行即可 //dp[i][1] 处理

2016-12-12 20:30:34 348

原创 ARC 065D Connectivity 并查集+map

点击打开链接//题意:求出i->j既可以通过roads到达又可以通过railways达到的city数量(自己和本身connect)//先用并查集分好成两组A,B(road,railway),如何快速求出每个i对应的j的数量? ((i,j)在A是联通的&&在B也联通的) //即如果i两组的祖先为x,y j的祖先也为x,y则i->j在两组都即可通过road也可以通过railway(i-

2016-12-10 23:12:24 434

原创 ARC 065C DayDream Trie+暴力

点击打开链接题意:给出串str问是否能由若干个s串按任意顺序组成思路:对s建立Trie 在Trie上对str进行暴力匹配即可#include #include #include #include #include using namespace std;typedef long long ll;const int N=1e6+20;const int M=30;cha

2016-12-10 23:07:47 332

原创 hdu 5563 five-pointed star(几何)

点击打开链接题意:给出5个点问是否能组成5角星5角星的5个顶点和正5边形的5个定点一一对应,即判断这5个点是否能组成正5边形(C(5,2)=10条边中是否 5个边相同 5条对角线相同即可)#include #include #include #include #include #include using namespace std;typedef long long

2016-12-10 11:29:17 331

原创 Codeforces 742DArpa's weak amphitheater 并查集+01背包

点击打开链接题意:有n个人,每个人都有颜值bi与体重wi。剧场的容量为W。有m条关系,xi与yi表示xi和yi是好朋友,在一个小组。 每个小组要么全部参加舞会,要么参加人数不能超过1人。 问保证总重量不超过W,剧场中的颜值最大能到多少?先用并查集分组,然后在每组进行01背包即可#include #include #include #include #include usi

2016-12-08 16:00:07 357

原创 Codeforces 742C Arpa's loud Owf 思维

点击打开链接题意要求:x->y y->x要t次 即x->y->x要2*t次 //i总有一次为winner,所以总要有个人的c[k]为i,即每个c[i]都不同,否则无解 现在按照i->c[i]建立有向图,则能互传的两个人一定在同一个环内 如果环上定点数为偶数cnt,则t尽量小取cnt/2即  lcm(k,x),(2k,x)求lcm时k显然会更小 奇数的话,t只能取k*cn

2016-12-08 11:25:59 415

原创 codeforces 742B Arpa's obvious problem(水)

点击打开链接//题意:求ai^aj=x 的(i,j)&&i/两边同^ai   ->   aj=x^ai枚举i用map统计aj=x^ai出现次数即可 //坑点ans爆int1e5 x=31 2 1 2.......答案约等于1/2(1e5*1e5)统计出来的ij的个数一一对应,则i>j个数也为k#include #include #include #in

2016-12-07 11:05:24 337

原创 poj 2570 Fiber Network Floyd思想+二进制处理

点击打开链接题意:某条道路由一些公司修建,修建道路的公司可以提供这条路上的连通,询问哪些公司可以提供从A到B的路径.每个公司由一个小写字母表示。Floyd的递推式可以有若干种变形:加法,min,max,与和或运算等等//d(k)[i][j]:提供i->j连接&&中间点序号不大于k时 = 提供i-j连接&&中间节点序号j连接&&中间节点序号为k(即提供i->k&&提供k->j连接的公

2016-12-06 19:46:30 276

原创 poj 1125 Stockbroker Grapevine Floyd(基础题)

点击打开链接d(k)[i][j]:i->j中间点序号不大于k时 =min(i-j中间节点序号小于k,i->j中间节点序号为k) d(k)[i][j]=min(d(k-1)[i][j],d(k-1)[i][k]+d(k-1)[k][j]))#include #include #include #include #include #include using names

2016-12-06 19:35:03 269

原创 poj 1511 Invitation Cards 最短路SPFA(模板题)

点击打开链接SPFA:动态逼近法定理:只要最短路径存在,上述SPFA算法必定能求出最小值。证明:每次将点放入队尾,都是经过松弛操作达到的。换言之,每次的优化将会有某个点v的最短路径估计值d[v]变小。所以算法的执行会使d越来越小。由于我们假定图中不存在负权回路,所以每个结点都有最短路径值。因此,算法不会无限执行下去,随着d值的逐渐变小,直到到达最短路径值时,算法结束,这时的最短路径估计

2016-12-06 17:07:58 398

原创 ZOJ 2750 Idiomatic Phrases Game 最短路(dijkstra)

点击打开链接按照题意建图,跑个最短路即可#include #include #include #include #include #include using namespace std;typedef pair ii;typedef long long ll;const ll inf=1e8;const int N=1e3+20;int n;struct node

2016-12-06 15:35:47 329

原创 uva 1629 Cake Slcing 记忆化搜索+dp

点击打开链接//题意:n*m的矩形上有k个cake 问最少切多少次能把这k个cake分离开来(不在同一个矩形上) idp[N][N][N][N]; N//dp[u][d][l][r] 定义上下左右边界为u,d,l,r时,最小的切割次数 按水平和垂直切割转移状态即可#include #include #include #include #include #include

2016-12-05 16:35:51 389

原创 uva 10118 Free Candy dp记忆化搜索

点击打开链接//题意 :4堆糖果每堆n个 有一个能放5个candy的basket 如果basket中有两个颜色相同candy,则可以把这一对放进口袋,求口袋中最多有多少对candy//dp[a][b][c][d] candy中状态为a,b,c,d时(拿了a,b,c,d),口袋中最多有多少对 ,颜色相同用位运算&即可(颜色#include using namespace std;

2016-12-04 21:18:49 327

原创 poj 2387 bellman-ford裸题

点击打开链接d(k)[i]:源点到i最多经过k条边时的最小值 d(k)[i]=min(d(k-1)[i],d(k-1)[j]+w(j,i))无负圈,则最短路最多经过n-1条边 #include #include #include #include using namespace std;typedef long long ll;const int N=1e3+20;

2016-12-04 19:55:40 503

原创 FJNU 1199 火柴棒 贪心+构造

点击打开链接题意:用sum根火柴棒能组成最大的回文数是多少?如果sum%2==0 则全部用1 这样位数最多也就最大反证:假如最后不全为1 则可以把不是1的全部拆成1 位数增多回文性质不变 奇数的情况:因为最后肯定为数字1和7(只要3根最小,8,9都可以换成若干个7) && 7的个数不可能为偶数如果为偶数则可以把所有7都变为1与sum为奇数矛盾.如果sum%4==3则 中

2016-12-04 11:16:29 433

原创 FJNU 1195 捧杯 向量(受力分析模拟)

点击打开链接#include #include #include #include #include using namespace std;typedef long long ll;const int N=1e5+20;const ll mod=400;int gcd(int a,int b){ if(a%b==0) return b; else return

2016-12-03 22:13:09 515

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除