ICode9

精准搜索请尝试: 精确搜索
  • 伟大的牛的聚会2022-07-29 12:00:45

    #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #define N 100005 #define ll long long using namespace std; inline int read() { int x = 0, f = 1; char c = getchar(); while (c < '0�

  • Anton and Tree2022-07-29 08:32:35

    link 树的直径的好题。 首先可以想到把相邻的颜色相同的点合并起来,于是就得到了一棵任意一条边两端颜色都不相同的新树,这样一来操作的过程就是先找一个点,然后把它变成相反的颜色,于是所有和这个点相邻的点全部被这个点收购了;然后这个大点再向四周扩展,于是就这么一层一层地,于是发现

  • Perfect Groups2022-07-29 08:32:08

    link 教会了一个小的结论,假如有 \(A\times B=X^2,B\times C=Y^2\),那么\(A\times C=Z^2(X,Y,Z\in N^*)\)。用唯一分解定理啥的都可以证。 放到这道题中就是说几个元素可以暴力合并而不需要考虑集合内其他元素的感受,也就是说一个元素只要可以和集合内某个元素玩得来那么它就可以成为

  • Prosti2022-07-25 18:04:00

    link 蒟蒻只会打表。 由于题目中 \(K\) 和 \(M\) 都很小,那么我们可以考虑找出一个长度为 \(K\) 的区间满足其中刚好有 \(L\) 个质数,保存下来到时候输出即可。给出打表程序的代码,代码中有注释: #include<bits/stdc++.h> #define feyn const int N=10001000; const int S=1e7-200; c

  • 来自学长的馈赠42022-07-25 12:35:58

    打了一半就跑了,,,垫底垫底 A. 活动投票 摩尔投票,想象让投票不同的两个人同归于尽,选票过半的人的支持者肯定有活下来的 code #include<cstdio> #include<cstring> #include<algorithm> using namespace std; inline int read(){ int x = 0; char c = getchar(); while(c < '

  • 【模板】摩尔投票法2022-07-25 08:32:13

    如果有一些候选人,分别得到了一些票。 其中有一个候选人的票数超过一半,请求出这个候选人。 因为这个候选人得票超过一半,所以只要把不同的候选人的票两两相消,最后剩下的一定是那个候选人。 时间:\(\operatorname{O}(n)\); 空间:\(\operatorname{O}(1)\)。 #include <stdio.h> char _tc;

  • 【模板】子序列自动机2022-07-24 21:32:50

    link 其实感觉这玩意不应该叫什么自动机,这似乎就是一个个人yy出来的东西。。。 给定一个文本串和许多模式串,询问每个模式串是不是文本串的子序列。如果是询问字串的话直接上kmp即可,但子序列呢。考虑贪心,寻找文本中第一个和模式串第一个元素相同的元素位置,选择它相较于选择其它值相

  • 舞蹈链板子2022-07-23 16:33:33

    #include<bits/stdc++.h> using namespace std; #define rg register inline int read(){ rg char ch=getchar(); rg int x=0,f=0; while(!isdigit(ch)) f|=(ch=='-'),ch=getchar(); while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar(

  • 7.22模拟赛2022-07-22 20:37:13

    目录7.22模拟赛甲国的军队 \((army)\)虚弱 \((weakness)\)萨鲁曼的半兽人 \((orc)\)序列 \((seq)\) 7.22模拟赛 甲国的军队 \((army)\) 简单的贪心,手玩一下就能得出结论 假设现在攻打两个城市 \(1\),\(2\) 先打 \(1\) 的代价为 \(b_1+b_2-(b_1-a_1)=a_1+b_2\) 先打 \(2\) 的代价为

  • ENDOR2022-07-21 11:32:42

    link \(O(N^2)\) 的做法比较简单,枚举两个小蜥蜴的相遇时间然后就可以把一只蜥蜴的路程划分成很多阶段,然后每个阶段的颜色可求,累计答案即可。 考虑到数据范围可以猜想需要使用 \(O(NK)\) 的算法,结合意义可以猜出这个算法应该是统计每只蜥蜴路程上每种颜色的路程长度然后累加输出,毕

  • DRŽAVA2022-07-19 16:00:49

    link 总感觉COCI的题面读不懂。题意是说给定一些平面内的点,点有点权,两个点连边的边权是两个点的集合距离。请求出一棵生成树,满足树内存在点权和模K为0的子集,最小化最大边的边权。 有一个很巧妙的结论,随意选出K个点一定能找出子集符合条件。于是得出结论树内结点不会超过K个,所以每

  • 比较纯粹的分块线段树等 DS 趣题2022-07-16 22:38:05

    SP1043 GSS1 要你求一个区间的最大子段和。 那么,显然地,我们可以维护区间最大前缀和和后缀和。 即根据左区间后缀和加上右区间前缀和可以等于最大子段和这个性质。 那么如何维护最大前缀和和最大后缀和呢? 显然一段区间分成两块,最大前缀和有可能是左区间的最大前缀和,也有可能是左

  • 2022/7/15 CSP-S模拟题总结2022-07-16 08:32:54

    题单贴贴 A.烽火传递 其实就是一道单调队列优化 \(DP\),挂分是因为弹出队尾的条件 \(f[q[r]]>=f[i]\) 写成了 \(a[q[r]]>=a[i]\) (悲); AC code #include<bits/stdc++.h> using namespace std; inline int read(){ int s=0,f=1; char ch=getchar(); while(!isdigit(ch)){ if(

  • 简记C语言清空输入残留内容2022-07-14 19:34:11

    为了在命令行程序中实现和用户的交互,我们编写的程序的运行过程中往往涉及到对标准输入/输出流的多次读写。 在C语言中接受用户输入这一块,有着一个老生常谈的问题:“怎么样及时清空输入流中的数据?” 这也是这篇小笔记的主题内容。 先从缓冲区说起。 缓冲区是内存中划分出来的一部分

  • 2022.7.13 模拟赛2022-07-13 19:02:51

    目录2022.7.13 模拟赛最大序列思考熊的马拉松疏散演习下标 2022.7.13 模拟赛 \(\to\text{link}\leftarrow\) 最大序列 思路: 首先出栈的必然是最大的数 设每次出栈的数在 \(i\) 处 然后不断比较 \(i-1\) 处的数和 \(i\sim n\) 中最大的数,判断往哪边出栈 细节很多 貌似就只有我一个

  • 逃跑2022-07-09 17:04:14

    link 并不复杂的题目,读题的时候以为是无向边从而挂了三个点。这道题给我的启事就是关于拆点部分,如果题目中给定的限定条件是关于点的通过次数的,可以把点拆开成为入点和出点,然后在两个点之间连边,这样就可以使得通过次数得到保证。之前蜥蜴那道题其实也是用的这种思路。 #include<bi

  • 罪恶的开始——线性DP学习2022-07-08 19:00:13

    线性DP虽然是被称为DP的入门,其实它是DP的万恶之源,一切其它DP不过是在它上面加入优化 接下来给几个例题,可以让你深刻感受到DP状态设计的恶心 T1.[LuoguP4310]绝世好题 这题很多人第一眼看到会想到设计一个 \(f[i]\)代表以\(i\)为结尾的序列最大长度是多少,转移方程 显而易见是\(f[i]

  • 7月6日测试题题解2022-07-06 19:04:18

    第一题:   FBI树   洛谷同题:https://www.luogu.com.cn/problem/P1087   分析:   题目要求我们根据一个01串构建树。   01串的长度为2^n,所以我们可以按照类似于线段树建树的方法建一棵满二叉树。由此观之,每一个节点p的儿子为p<<1,p<<1|1(p*2,p*2+1)。   代码如下: #include

  • [USACO5.1]夜空繁星Starry Night2022-07-06 11:35:01

    原题链接 前言 蓝题祭。。。 题解 本题最大的难点就是判两个星系是否相似,根据数学知识,如果两个星系中的每个点之间的距离之和相等,则可以判断它们 \(similar\)。这样就简单了。 代码 \(1625B\),\(90\) 行。。。真的超长 Code: #include<bits/stdc++.h> using namespace std; void re

  • [SCOI2005]骑士精神2022-07-05 16:33:19

    link 和八数码难题是一样的,反正都是把一些棋子挪来挪去。这道题对估价函数有更高的依赖性,不开会只有20分(8个TLE),开了就能跑到100ms。好玄学啊。 #include<bits/stdc++.h> //#define feyn using namespace std; inline void read(int &wh){ wh=0;int f=1;char w=getchar(); while(

  • 贪心题目选做2022-07-05 15:33:34

    NC18386 字符串 这道题几乎就是双指针的模板题了。 每次移动一下左端点,然后移动右端点知道满足条件 #include<bits/stdc++.h> using namespace std; int v[300] = {}; int32_t main() { string s; cin >> s; int l = 0 , r = -1 , len = s.size() , ans = 1e9 , k

  • CF702E2022-06-30 20:01:19

    link CF的题总是很良心的。比如这道题完全够不到紫题的难度,充其量一个绿题嘛。就是一个倍增,同时维护元素和和元素最小值的倍增数组,一次询问就可以了。 注意要开long long,而且CF上要用 printf("%I64d"); 输出long long。 代码异常简单。 #include<bits/stdc++.h> //#define zczc #d

  • Codeforces Round #803 (Div. 2)2022-06-29 17:05:56

    复健!!! A&B 略 C 如果有仨正数或者仨负数都不行,然后根据 \(0\) 的数量判断一下边界情况即可。 #include<bits/stdc++.h> using namespace std; #define int long long typedef long long ll; typedef unsigned long long ull; typedef pair<int,int> pii; typedef vector<int> vi; #

  • [APIO/CTSC 2007] 数据备份2022-06-27 21:36:42

    link 教会了我反悔DP。 考虑一步一步来,先思考假如只需要一条路怎么办,很明显直接选最小的;但两条路呢?只有两种方案,要么再选次小的,要么选最小两端的元素(不可能只选一端,如果那样最小就不是最小了)。为了使得后续可以反悔每次考虑pop最小点之后push一个新点,点权为两端点权和减去自身点权

  • 洛谷P7960 [NOIP2021] 报数 (筛法)2022-06-17 21:03:31

    禁止报的数的生成规则与埃式筛法类似,考虑用筛法预处理可以报出的数字列表和不可报出的数字,从而 O(1) 回答每一组询问。 用check函数判断数字中是否含有7,用nx[i]记录数字i的下一个合法数。 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=1e7+10; 4 int T

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

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

ICode9版权所有