首页 > TAG信息列表 > 1e5
CF535B Tavas and SaDDas
很明显吧,这题是分块打表的板子题。 分块打表很快啊,快如闪电,啪一下就切了。 这题连块长都不用卡,简直是分块打表的模板。 题意: 幸运数字的定义:每一位只含有 \(4\) 或 \(7\)。 找到从 \(1\) 到 \(n\) 内幸运数字的个数。 思路: 分块打表,数据范围是 \(1e9\),块长就设 \(1e5\) 足够了。[AcWing 790] 数的三次方根
点击查看代码 #include<iostream> using namespace std; int main() { double x; scanf("%lf", &x); double l = -1e5, r = 1e5; while (r - l > 1e-8) { double mid = (l + r) / 2; if (x <= mid * mid * mid) r =cf940 E. Cashback
题意: 给定数组 a[] 和一个常数 c,可以把数组切成任意数量的段,并删除每段中前 \(\lfloor (r-l+1)/c \rfloor\) 小的数,其中分子为段长。问数组元素和的最小值。 \(n\le 1e5\) 思路: 若某段长小于 c,则可删去一个数;若段长 \([c,2c)\),则可删去两个数。 那么容易写出一种朴素dp:枚举 \(i\)离散化
形式一(无重复元素): const int N = 1e5 + 7 ; int t [ N ] , a [ N ] ; int main ( ) { cin >> n ; for ( int i = 1 ; i <= n ; i++ ) cin >> a [ i ] , t [ i ] = a [ i ] ; sort ( t + 1 , t + n + 1 ) ;CF1609E William The Oblivious (2400) (线段树+DP)
https://codeforces.com/contest/1609/problem/E 给你长为1e5的只含a,b,c的字符串,有1e5个修改(pos, c),每次将pos位置的字母改成c,每次修改后输出:将该字符串改为subsequence中不含abc的最小修改次数。 在线区间修改查询容易想到线段树,考虑线段树维护怎样的信息,父子之间怎样转移? t[rJava:科学技术法和判断变量的类型
原因 之前用C++敲代码,用科学技术法一直都是写的整数类型,现在到Java里面发现居然报错,是个浮点数。 //不报错 int a = 1e5 + 10; //报错 int a = 1e5 + 10; float a = 1e5 + 10; //不报错 double a = 1e5 + 10; 关于Java的科学计数法 在Java中,当Double的取值符合某条件时,将会以科Libreoj 6279. 数列分块入门 3
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int N=1e5+5; 5 vector<ll>v[N]; 6 ll a[N],tag[N],blg[N],L[N],R[N],block,tot; 7 void resort(int n) 8 { 9 v[n].clear(); 10 for(int i=L[n];i<=R[n][Acwing | 蓝桥杯] 1236. 递增三元组 二分
前言 开学,练习开始了ohh 传送门 : 题意 给定三个三元组,求满足 A [ i ] < B [CF144D
思路: 天真的想法是把每条边上都建上 \(w-1\) 个点然后跑最短路 但是边权总和很大,显然不能这么做。 考虑对原图求单源最短路,记 \(s\) 到 \(u\) 的最短路为 \(d_u\),可以直接统计在点上的答案。 考虑如何统计在边上的答案,显然每条边至多有 \(2\) 个。 记这个边的两端是 \(u\),\(v\),那cf264 C. Choosing Balls(dp)
题意: n个球排成一列,每个球有值 \(v_i\) 和颜色 \(c_i\)。可任取子序列,对子序列中的某个球,若它不是子序列首且与子序列中的上一个球同色,则价值为 \(av_i\);若它是子序列首或者与子序列中的上一个球异色,则价值为 \(bv_i\)。子序列的价值定义为子序列中所有球的价值和。 现有q次询问,每CF1608C
题意: 给定 \(n\) 个人分别在两张地图上的能力值,每次选出其中两人在任意地图上战斗,能力值低者被淘汰,获胜者为最后没被淘汰的那个人,问那些人可以通过控制比赛获胜,那些人一定无法获胜 思路: 考虑那些必败者,要么打不过任何人,要么能打过的人打不过任何人,要么能打过的人能打过的人打不过D1. Sage‘s Birthday (easy version)【1000 / 思维 构造】
https://codeforces.com/problemset/problem/1419/D1 构造,后面一半的数依次放在偶数位,前面的依次放在奇数位。 #include<bits/stdc++.h> using namespace std; const int N=1e5*2+10; int a[N],b[N],n; int main(void) { cin>>n; for(int i=0;i<n;i++) cin>>a[i]; sort(a1041 Be Unique (20 分)【难度: 简单 / 知识点: 暴力】
https://pintia.cn/problem-sets/994805342720868352/problems/994805444361437184 #include<bits/stdc++.h> using namespace std; const int N=1e5+10; int a[N],n; map<int,int>mp; int main(void) { cin>>n; for(int i=0;i<n;i++) cin>>a[i算法快速排序
快排的思想主要是分治 1.确定分界点x=a[i],a[r],a[l+r>>2],或者区间上的任意一个数 2.分区间,左侧<=x,右侧>=x 3.递归处理左右 比如3 1 2 3 5 用两个数i,j模拟指针 #include<iostream> using namespace std; const int N=1e5+10; int a[N]; void quick_sort(int a[],int l,intP1550 [USACO08OCT]Watering Hole G
每个点向井连边,边权为其点权。跑MST就行力。 #include<bits/stdc++.h> using namespace std; const int maxn=1e5+5; struct edge{ int u,v,w; bool operator <(const edge &b)const{return w<b.w;} }e[maxn]; int cnt=0; int n; int fa[305]; int g[305][305]; int Find(intCF1557A题解
思路1: 这道题其实可以用前缀和做的,对于每一次输入,可以先将数组 \(a\) 排序,然后利用前缀和对于每一个 \(x (1 \le x\le n)\) 算出 \(\sum\limits_{j=1}^{x}{a_j}\) ,然后算平均数,求出最大即可。 核心代码 #define int long long int a[(int)1e5+10]={0},f[(int)1e5+10]={0}; int n;牛客多校第五场补题
B.Boxes 题意: N N N个装有黑白球的盒子(每个盒子一定有且只有一个球),你需要知道所有盒子里面都是什么球,为此你需要开盒子,打开第 i[ZJOI2007] 矩阵游戏
注意寻找题面隐藏关系 #include<bits/stdc++.h> using namespace std; const int N=1e5+7; int n,cnt,x,tot,t; int head[N],nxt[N<<1],to[N<<1]; int match[N],flag[N]; int _; void add(int x,int y) { _++; to[_]=y; nxt[_]=head[x]; head[x图的存储与遍历
#include <iostream> #include <vector> using namespace std; const int N=1e5+10,M=1e5+10; int n,m,x,y,w; bool v[N]; vector< pair<int,int> > head[N]; void dfs(int t){ for(int i=0;i<head[t].size();i++){ if(v[head[t][i].first])《牛客2021年儿童节比赛D》
同余方程没推好。。 #include<bits/stdc++.h> using namespace std; typedef long long LL; typedef pair<int,set<int>> pii; const int N = 1e5 + 5; const int M = 1e5 + 5; const LL Mod = 998244353; #define pi acos(-1) #define INF 1e9 #define dbg(ax)C++多继承导致的菱形继承问题
菱形继承问题来源: #include <bits/stdc++.h> using namespace std; const int maxn = 1e5 + 5; class A { public: int age; }; class B : public A { }; class C : public A { }; class D : public B , public C { }; int main() { D d; d.C::age=10; d.B蓝桥杯-12-G-砝码称重
链接:https://www.acwing.com/problem/content/description/3420/ 思路: 1:通过分析题目,本题是一个三进制枚举后取正整数的题目,如果直接dfs进行枚举,则时间复杂度为O(3^n),n<=100,时间复杂度不满足条件,但是题目中强调N个砝码总重不超过1e5,也就是结果在[1,1e5]之间,我们可以对n个整数进牛客2020跨年场 C-最小互质数 筛法
传送门 题意: 我们定义两个数互质当且仅当gcd(a, b) = 1。 现在qcjj手里有n个数,分别为$a_1, a_2, a_3 \dots a_{n - 1}, a_{n}$。问,没有在这n个数中出现过并且与这n个数都互质的最小的数是多少。qcjj觉得这个问题太简单了,于是她把这个问题交给你来解决。 题解: 分两种情况讨论,若输入CF 1110E
思维题 找规律 注意变与不变的量 列出变化的量之间的关系 找到变中的不变 答案就有了 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N = 1e5 + 10; 4 int a[N],b[N]; 5 vector<int>v1, v2; 6 int main(){ 7 int n;scanf("%d",&n); 8 for(int i10.25考试
T1 交换相邻两项贪心,然后推式子即可; #include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int N=1e5+7; struct node{ int a,t; }b[N]; int n; double v,sum1,sum2; int cmp(node x,node y){ return x.a>y.a; } int main(){ freo