ICode9

精准搜索请尝试: 精确搜索
  • [NOI2014] 魔法森林 - Link Cut Tree2019-10-18 23:01:57

    [NOI2014] 魔法森林 Description 给定一张图,每条边 \(i\) 的权为 \((a_i,b_i)\), 求一条 \(1 \sim n\) 路径,最小化 \(\max_{i\in P}{a_i} + \max_{i\in P}{b_i}\) Solution 如果我们限定最大的 \(b_i\) ,那么路径一定在以 \(a_i\) 为权的最小生成树上。 Proof. 考虑反证,假设这条路径

  • P5541 [USACO19FEB]Sleepy Cow Herding2019-10-18 21:53:27

    ri,被黄题虐。 思路:贪心?? 提交:2次 错因:没有特判 题解: 先排序。 最小代价:固定区间长度为\(n\),我们扫一遍数组看区间最多包含几个数,设为 \(mx\) ,答案就是\(n-mx+1\);然而还要特判一种,见下。 此时答案是2,但是我们会算成1 最大代价:考虑一定是往一边缩的感觉,于是是端点先跳到一边的里面

  • [LuoguP3064][USACO12DEC]伊斯坦布尔的帮派Gangs of Istanbull(加强版)_线段树_贪心2019-10-16 20:51:06

    伊斯坦布尔的帮派Gangs of Istanbull 题目链接:https://www.luogu.org/problem/P3064 数据范围:略。 题解: 这个题其实分为两问,第一问是$YES$、$NO$和最大值,第二问是最小字典序方案。 整体思路肯定是,后$2\sim m$的帮派先自行抵消,最少能剩下多少奶牛,然后再用$1$去抵消。 先说第一问:

  • 最小瓶颈路2019-10-16 11:52:14

    题目链接:最小瓶颈路 首先,这是一道无脑题 话说我上学校正常信息课20分钟打完,然后一遍A了? 首先不难想到,这个最小瓶颈路一定在最小生成树上 然后我们建一下这棵MST,然后DFS找出S到T的权的最大值 我没这样做 发现n<=1000,感到很happy,发现K<=1000,又很happy 然后上一个大暴力的思路: 可以考

  • os模块常用函数2019-10-15 23:00:19

    本文介绍python os模块包含的常用功能: 新建、删除目录 删除文件 绝对路径获取 路径拆分 文件大小获取 python脚本如何调用linux命令 判别是否是文件、目录 判别文件是否存在 #os.chdir(),切换路径os.chdir("../")#os.getcwd,输出当前路径os.getcwd()#os.mkdir(),创建test目录os.mk

  • Segment tree Beats2019-10-13 10:53:15

    Segment tree Beats   Segment tree Beats,吉司机线段树,主要是关于如何用线段树实现区间取min/max。我们先看一道例题: HDU5306 Gorgeous Sequence   题目大意:给一个序列,要求支持区间取min(即对于一段区间,用min(a[i],x)替换a[i](x已给出)),询问区间和以及区间最大值。   看到区间求

  • 「题解」:Game2019-10-07 21:52:27

    问题 B: Game 时间限制: 1 Sec  内存限制: 256 MB 题面 题面谢绝公开。 题解 对于最初加入的每一个元素开桶记录出现次数。 然后记录一个前p个元素最大值。 先由先手玩家取走一个最大值并判定最大值是否改变。 然后就可以先向集合中加入一个元素再由本轮取数的玩家取走最大的

  • [NOIP2016]天天爱跑步-题解2019-10-06 09:04:31

    题面传送门 解答 设第\(j\)号玩家在\(V_j\)时刻出发。 弱化问题:如果树退化成了一条链。则在\(j\)处的观察员能观察到的\(i\)号玩家当且仅当 \[ i玩家经过j,且 \begin{cases} dep_j - W_j = dep_{S_i} - V_j, &i向下跑步 \\ dep_j + W_j = dep_{S_i} + V_j, &i向上跑步 \end{cases}

  • KD-tree学习笔记(超全!)2019-10-05 15:57:18

    目录 K-D树 更新信息 建树 插入 查询 k远/近询问 重构 完整模板 K远点对 MOKIA(三维数点) K-D 树优化建边 后记 因为之前找不到全的博客,唯一的一篇码风比较毒瘤。。。 所以我就来写了 K-D树 大概是高维二叉树吧 每次按一个维度对超空间内的点进行二分划分 树上存左右节

  • 模拟59 题解2019-10-04 20:53:29

    A. Reverse       B. Silhouette         C. Seat 1 //注意 因为出题人过于弱智 2 //本题中odd为偶数,even为奇数 3 #include<bits/stdc++.h> 4 using namespace std; 5 const int N=1030; 6 int n,mod; 7 int qpow(int x,int k,int ans=1){ 8 while(k){ 9 if

  • Luogu P3826 [NOI2017]蔬菜2019-09-28 11:02:50

    题目 有一个比较与众不同的思路(虽然复杂度可能高一点) 我们一份一份地处理菜怎么卖。 显然,越贵的菜卖出来的越多越有利。 并且对于这个菜,在这个菜即将过期的时候卖显然是最优的。 所以我们每次取出最贵的菜,尽量把它安排在接近过期的时候。这里我们使用并查集来维护前一个可以买菜

  • NOIP模拟测试49·50「养花·折射·画作·施工·蔬菜·联盟」2019-09-24 18:03:28

    一套题 养花 题解 分块\主席树 这里我用的是主席树 查询分段$1-(k-1)$找最大的,能向右找就向右找 for(ll nowl=1,nowr=k-1;nowl<=maxx;nowl+=k,nowr+=k,nowr=min(nowr,maxx)) { if(ans==mod-1) break; chose(rt[r],rt[l-1],nowl,nowr,1,max

  • [Leetcode]5.Longest Palindromic Substring2019-09-23 23:05:11

    这段时间重新刷了一下Leetcode,在此记录下自己容易出错的和经典的题目。 这是Leetcode第5题,寻找最长回文子序列,就是给定一个字符串S,找出其中的最长回文子串,并返回该子串。常用的方法有中心扩展法与Manacher算法,其中Manacher算法时间复杂度可以达到\(O(N)\), 空间复杂度\(O(N)\),需要

  • csps模拟测试50反思2019-09-23 21:52:08

    又考崩了,T1一眼秒掉错误思路,然后迅速码完,并码完错误暴力,对拍拍上,以为AC。T2想到了二维莫队,发现是子任务就没去打,一直在想别的,T3最后想到60分打法,没有打完,也没时间暴力,挂掉。T2还有一个读错题的锅,T了一个子任务。 考试一定要合理分配时间,确定自己算法的正确性,想到一个类似的算法要

  • Codeforces 1220E. Tourism2019-09-20 12:53:11

    传送门 这是一道英语题,首先要读懂题目: $\text{Alex believes that his trip will be interesting only if he will not use any road twice in a row.}$ 这句话意思是不会连续走一条路,但是同一条路是可以走多次的 所以对于一个边双联通分量,是可以全部走一遍并可以从联通分量里的任

  • Codeforces Round #584 (Div. 1 + Div. 2)2019-09-18 23:02:47

    Contest Page A sol 每次选最小的,然后把它的所有倍数都删掉。 #include<bits/stdc++.h> using namespace std; int read(){ int a = 0; char c = getchar(); bool f = 0; while(!isdigit(c)){f = c == '-'; c = getchar();} while(isdigit(c)){ a = a * 1

  • Z算法板子2019-09-18 20:53:03

    给定一个串$s$, $Z$算法可以$O(n)$时间求出一个$z$数组 $z_i$表示$s[i...n]$与$s$的前缀匹配的最长长度, 下标从$0$开始 void init(char *s, int *z, int n) { int mx=0,l=0; REP(i,1,n-1) { z[i] = i<mx?min(mx-i,z[i-l]):0; while (s[z[i]]==s[i+z[i]]) ++z[i]; if (i+z[i]

  • 树的统计2019-09-15 11:02:53

    题目描述 思路 树链剖分模板 代码 #include <cstdio> #include <cstring> #define lc k<<1 #define rc k<<1|1 #define max(a, b) ((a) > (b) ? a : b) #define FOR(a, b) for(int i=a;i<=b;++i) const int MAX = 3e4 + 5; int n, ot, oa[20], inf = 0x3f3f3

  • 吉哥系列故事——完美队形II HDU - 45132019-09-14 21:44:16

    //主要中间的-1以及起点为无穷大,,因为起始递增的话需要不符合递增条件 #include <iostream> #include <algorithm> #include <cstring> #include <cstdio> using namespace std; const int MAXN=1e6+10; int h[MAXN]; int len=0; const int inf = 0x3f3f3f3f; int Manache

  • 析合树2019-09-12 17:02:17

    析合树是一种解决连续段问题的数据结构。 比如这样的一个问题:给你一个\(1\)到\(n\)的排列,然后有一堆询问,每次询问区间\([l,r]\),问包含\([l,r]\)的最小连续段是什么。 也就是这题 所谓的连续段,就是满足\(max_{l..r}-min_{l..r}+1=r-l+1\)的连续段。 推荐这篇:https://oi-wiki.org/d

  • 【JZOJ6346】ZYB和售货机2019-09-10 17:02:27

    description analysis 其实这个连出来的东西叫基环内向树 先考虑很多森林的情况,也就是树根连回自己 明显树根物品是可以被取完的,那么买树根的价钱要是儿子中价钱最小的那个 或者把那个叫成收益,也就是选择所有儿子中收益最大的儿子 既然树根可以取完,同理所有非叶子节点也可以被

  • 马拉车maracher2019-09-09 17:03:55

    目的:线性查找一个串的最长回文子串 时间复杂度:O(n) len[i]表示以i为中心的回文串的半径   2019徐州G colorful string,求所有回文子串的value之和,一个串的value为串中字母种类,dfs预处理了第i位前一个a-z的位置,复杂度26*n #include <bits/stdc++.h>using namespace std;typedef l

  • P4747 [CERC2017]Intrinsic Interval2019-09-06 20:00:42

    P4747 [CERC2017]Intrinsic Interval 前言 这道题有高大上的析合树做法 不过我不会,可能退役后会考虑学学吧。 题目大意 \(ProblemLink\) 其实题目里面讲的很清楚了。 简单的说就是给你一个\(1\) ~\(n\)的排列 定义如果一个区间\([l,r]\)是好区间,仅当\(l\)至\(r\)的序列中的数排序

  • BZOJ - 3242 :快餐店 (基环树DP) 最小化半径2019-09-06 13:54:40

    题意:给定N点N边的无向连通图,现在让你在图中找一点作为餐厅,使得最远点距离这点最近。 思路:为了保留整数,我们求最小直径,最后去除2。  直径来源于两部分:         1,在外向树中; 那么就是树的直接,一棵树求直径直接跑一边DP就可以了。(或者两遍BFS吧,麻烦一点而已),假设最大值为ans1

  • Manacher算法2019-09-05 19:57:37

    题目传送门 初学 $ Manacher $ (马拉车)算法 Manacher算法用于处理回文串问题,可以求出每个字符所在的最长回文串的长度 Code #include<cmath> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define LL long long using namespace std; const int

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有