ICode9

精准搜索请尝试: 精确搜索
  • P1966 [NOIP2013 提高组] 火柴排队做题笔记2022-09-03 10:01:08

    这题和 P5677 一样,是从树状数组题单里翻出来的,由于开始看时感觉题解代码写的不是很清晰,就先放进了做题计划里,后来几次看这道题,但由于第一次看题可能留下了一些心理阴影以及时间不多,一直没切掉。直到先去做了用树状数组求逆序对,才感觉这道题变得简单了不少。思路:用一个数组储存输入

  • P1966 [NOIP2013 提高组] 火柴排队2022-08-31 13:02:38

    有两盒火柴,每盒装有 \(n\) 根火柴,每根火柴都有一个高度。 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相同。其中 \(a_i\) 表示第一列火柴中第 \(i\) 个火柴的高度,\(b_i\) 表示第二列火柴中第 \(i\) 个火柴的高度。 每列火柴中相邻两根火柴的位置都可以交换,通过交换使

  • C20220712T3 牛半仙的妹子Tree2022-08-30 16:32:38

    给定一棵树,要求执行3种操作: 给树上某一结点涂色,从下一次操作起每一次向周围传染一个单位。 树上所有点变为正常 询问某个点是否被感染。 \(n,m\leq 10^5\)。 首先想到暴力做法,用栈维护现在被感染的节点以及感染时间,那么对于操作1,2都好解决,对于操作3需要遍历栈并求出是否有节点

  • CF808G Anthem of Berland2022-08-30 14:01:14

    给定 \(s\) 和 \(t\) ,其中 \(s\) 中有 \(k\) 个 ? ,求 \(s\) 补齐 ? 后匹配 \(t\) 的最大次数。 \(|s|\times |t|\leq 10^7\)。 先用一组数据 \(HACK\) 掉贪心做法: (贪心只能过样例) a?ba aba 正确输出 \(1\) 考虑正确做法,题目中给出 \(|t|\times|s|\leq10^7\) ,暗示 \(O(|t||s|)\)

  • NC20185 [JSOI2010]缓存交换2022-08-28 09:30:08

    题目 原题地址:[JSOI2010]缓存交换 题目编号:NC20185 题目类型:堆、贪心 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 1.题目大意 Cache容量以及主存单元访问次序一致,求最少的非命中次数 2.题目分析 每次删除缓存区中元素中下一次出现最晚的 3.题目代

  • 棋盘上的守卫2022-07-29 18:32:47

    棋盘上的守卫   在( i,j )这个点上我们可以放置两种守卫,第一种是横向守卫,第二种是竖向守卫,所以它们之间只能选择一种,可以抽象成一条边,链接的是横向的第 i 个阶段,竖向的第 j 个阶段,为了方便,我们将 j的下标写作j + n。 可以得到一条性质: 对于任意一个点 i, 若 i > n,则这是列的阶段

  • 2022-7-62022-07-06 13:50:28

    学会了dijkstra算法的堆优化,其实就是用一个小根堆来维护队列,将距离的相反数储存起来,这样堆顶的元素距离就最小(相反数最大)。 随后遍历每个点,已经遍历过的就打上visit标记不再遍历。题目:洛谷P4779.代码: #include <bits/stdc++.h> using namespace std; struct edge{int v,w;}; vec

  • 关于毛毛虫剖分2022-07-01 17:02:32

    毛毛虫剖分 一种由重链剖分推广而成的树上结点重标号方法,支持 修改/查询 一只毛毛虫的信息,并且可以对毛毛虫的身体和足分别 修改/查询 不同信息 。 可以用来解决一些大力树剖也可以解决的问题。 一些定义: 毛毛虫:一条树上的链和与这条链邻接的所有结点构成的集合; 虫身:毛毛虫的链部

  • 链式前向星2022-06-28 22:34:20

    大概定义: 以图中每一顶点为起点,记录下其所有边在图中的起始位置和权值,可快速访问某顶点的所有邻接点。   链式前向星存储一般包括边集数组(e[],e[i]表示第i条边)和头结点数组(head[],head[i]表示以i为起点的一条边在e[]中的下标)两种。 则建立结构体为: 1 struct kk{ 2 int to,w,

  • P1073 [NOIP2009 提高组] 最优贸易做题笔记2022-06-13 08:00:40

    思路是建一个反图,在原图上从点 \(1\) 开始跑一遍 \(SPFA\),算出点 \(1\) 到点 \(x\) 的最短路径上的价格最小值 \(e_x\);再在反图上从点 \(n\) 开始跑一遍 \(SPFA\),算出点 \(n\) 到点 \(1\) 的最短路径上的价格最大值 \(f_x\),答案为 \(\max(f_x - e_x) (1 \le x \le n)\)。 #include

  • 【16年浙江省赛 B ZOJ 3937】More Health Points 题解2022-04-04 20:00:45

    题目链接 \(Describe\) 给定一棵以节点\(1\)为根的树,节点间单向边连接,每个节点有权值\(B_i\),找到其中一串子链(也可以为空),该子链最靠近\(1\)的节点为该子链的根节点,计算每个节点的深度(根节点深度为\(1\))与权值的乘积,并求和,即\(ans= \sum\limits_{i=1}^ndeep_i*B_i\)(其中\(n\)

  • 士兵过河2022-04-04 13:01:59

    今天WC的时候想起之前打比赛遇到一道挺有趣的题目 最后才做出来的 我们从上帝视角(就是站的很高很高)看士兵过河 每个士兵就好比是一个蚂蚁 两个蚂蚁相遇分别转向 就好比是两个蚂蚁一直直线行走 这样一个蚂蚁的时间就很好算 我们就能算出 所有蚂蚁的时间 但是a蚂蚁算出来的时间不

  • P8109 [Cnoi2021]幻想乡程序设计大赛 题解2022-02-05 13:32:39

    因为 \(\{a_n\},\{b_n\}\) 单调不下降,即都已经排好序,直接从小到大依次比较就行了。 我们可以考虑先求出所有的气球数,减去不能派发的气球数,得出能派发的气球数。 当 \(b_i > a_i\) 时,即分发的气球有多的时,需要从气球总和中减去多余的气球,具体可以见代码。 #include<bits/stdc++.h>

  • E-Lexicographically Maximum Subsequence2022-01-10 18:59:37

    题意 找一个串的最大字典序字串 题解 正序考虑会遇到无法确定这个数该不该选的情况,遇到的矛盾是无法确定后面有没有比它大的字母,所以我们只需要解决这个问题即可,做题时的基本思路就是正序不想试一试倒序能不能优化,我们可以记录住以i为结尾的最大字符然后第i-1个数与之比较,就

  • 蓝桥杯2019年第十届省赛-外卖店优先级2022-01-09 09:59:02

    来警醒一下自己 -=不要写反; 先踢出优先缓存,之后如果有订单的话在+2; #include<bits/stdc++.h> using namespace std; struct shop{ int time=0;int num=0; }; int sum=0; shop s[100005]; vector<int> ti[100005]; bool vis[100005]={0}; int main() { int n,m,t,time,nu

  • 7-27 人以群分2022-01-02 18:02:41

    #include<iostream> #include<cstdio> #include<algorithm> using namespace std; long long n,a[100005],x,y,b[100005],dif; int main() { cin>>n; for(int i=1;i<=n;i++) scanf("%lld",&a[i]); sort(a+1,a+1+n); for(int i

  • poj 1936(水题)2021-11-17 11:02:28

    #include<iostream> #include<cstring> using namespace std; int main(){ char a[100005],b[100005]; int i,j,len_a,len_b; while(scanf("%s%s",a,b)==2){ len_a = strlen(a); len_b = strlen(b); j = 0;

  • Codeforces Round #750 (Div. 2) E. Pchelyonok and Segments2021-10-25 20:34:38

    链接 首先将整个数组逆置 dp[i][j] 表示前i个数能产生长度 j 结尾的片段的最大和 , 只有结尾段尽可能地大 , 才能更好地保证后续拼接的片段相对前面的片段降序 。 dp[i-1][j]到dp[i][j]产生不超过500种新的状态。用dp[i][j] = 0 表示所有不合法状态。 code: #include <bits/stdc

  • 严格次小生成树2021-10-09 23:04:07

    luoguP4180 [BJWC2010]严格次小生成树 题目大意: 给出一张无向图,求出这个图的严格次小生成树。 解法: 严格次小生成树满足的条件之一是当且仅当只有一条边和最小生成树不同时才有可能是严格次小生成树。 所以我们先求出最小生成树,之后枚举每条不在最小生成树上的边,把这条边加入生成

  • 「CEOI2020」春季大扫除 题解2021-08-27 08:32:22

    题意 \(~~~~\) 给出若干次询问,每次询问将对若干个点增加叶子结点(同一个点可能加多次),定义一组叶子结点匹配的权值为这两点间路径经过的边数,求最小的匹配权值。 \(~~~~\) \(1\leq n\leq 10^5,1\leq \sum D_i \leq 10^5\) 本文版权归 Azazel 与博客园共有,欢迎转载,但需保留此声明,并

  • poj 1936(水题)2021-07-30 20:03:29

    #include<iostream> #include<cstdio> #include<cstring> using namespace std; char s[100005],t[100005]; int main(){ while(scanf("%s%s",s,t)==2){ int i,j,lens = strlen(s),lent = strlen(t); for(i=0,j=0;i<lens&

  • 1067 Sort with Swap(0, i) (25 分)2021-07-13 12:34:09

    1067 Sort with Swap(0, i) (25 分) 举个例子,有以下数据 i01234a[i]04321 根据线性代数知识,可以分成{0},{1,4},{2,3}三组。 记包含0的组合的个数为 n 0 n_0

  • leetcode 207.课程表2021-06-20 22:35:43

      拓扑排序。能得到拓扑序就是true,不能得到就是false。 vector<int> to[100005]; int in[100005]; int temp; class Solution { public: bool canFinish(int numCourses, vector<vector<int>>& prerequisites) { if (prerequisites.empty()) re

  • 洛谷 P3901 数列找不同 题解2021-06-13 20:02:10

    洛谷 P3901 数列找不同 题解 题目:在此。 静态查询区间内是否全部不同。 有很多别的算法,具体讲莫队。 首先按询问离线排序,然后移动一下,每一次将当前的 ( l , r

  • 某一个字符在字符串中第一次出现的位置是多少2021-06-12 18:31:38

    方法一:用return 0; #include<stdio.h> int main() { int n=0; scanf("%d",&n); getchar(); char a[100005]; for(int i=0;i<n;i++) { scanf("%c",&a[i]); } getchar(); char c; scanf("%c",&c); for(int i=0;i

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

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

ICode9版权所有