ICode9

精准搜索请尝试: 精确搜索
  • [题解]DP-HDU34662020-11-09 10:34:12

    原题链 题目大意 其实就是一个有限制的\(01\)背包,考虑两个物品a,b.如果两个物品都可以买,但是先买了a就不能买b,但先买b还可以买a,那么很明显买先b更优,所以这就涉及到要进行排序再加01背包,将\(a,b\)买的先后关系表示出来就是程序里的cmp函数 代码 #include <bits/stdc++.h> usi

  • NOIP2013 火柴排队 题解2020-11-04 21:04:34

    题解   首先的话,上个题目链接  https://www.luogu.com.cn/problem/P1966 读懂了题目大意,稍微有点头绪   我们发现要求这个和的最小值   即min{∑(ai-bi)^2 (1<=i<=n)}    展开,得min{∑(ai^2+bi^2-2*ai*bi)}=min{∑ai^2+∑bi^2-∑2*ai*bi}   只需要关注2*Σ(a[i]*b[i])的值,使它最

  • 拿糖果2020-10-02 14:02:19

    \(f(i)\)表示对于i块糖的所有拿法,存储最大糖数目 \(f(i) = max\{f(i - 2 * j) + j\}\), 其中\(j\)为\(i\)的所有满足小于等于\(\sqrt{i}\)质因数 #include<iostream> using namespace std; const int N = 100010; int n; int f[N]; int main(){ cin >> n; for(int

  • HDU 1272 小西的迷宫 图判环2020-09-19 09:32:23

    题目链接 并查集判环 思路: 并查集判环,挺简单的,如果刚开始就指向了一个根,后面又指向了他,说明就成环了(这里不考虑数据重复,比如2->3,2->3)。这个题还有一个点要注意,单次数据可能不止一张图! package 记录.HDU; import java.util.HashSet; import java.util.Scanner; public class H

  • P2034 选择数字 / P2627 [USACO11OPEN]Mowing the Lawn G2020-09-13 11:32:16

    Link 题目描述 给定一行 \(n\) 个非负整数 \(a[1]..a[n]\) 。现在你可以选择其中若干个数,但不能有超过 \(k\) 个连续的数字被选择。你的任务是使得选出的数字的和最大。 输入格式 第一行两个整数 \(n\) ,\(k\) 以下n行,每行一个整数表示 \(a[i]\)。 输出格式 输出一个值表示答案。

  • osu合集(期望dp)2020-08-15 18:32:40

    T1 EASY 我们设\(f_i\)表示到\(i\)的连续个数平方的期望。 \(g_i\)表示到到\(i\)的连续个数的期望 在维护\(f_i\)的同时维护一下\(g_i\)就行了。 转移方程: \(g_i\)= \(p_i \times g_{i-1}\); \(f_i = p_i \times (f_{i-1} + 2 \times g_{i-1} + 1) + (1-p_i) \times f_{i-1}\) 解

  • 7.26考试2020-07-26 18:33:57

    DAY1 T1 区间开方线段树 这题我以前好像做过。好像除了用线段树还可以用分块来写。 考试时花30分钟,过了样例就轻松切了。 T2 能量收集 题面 刚开始打了个暴力,把样例调了出来。 把他和他能到达的点连一条边,发现好像是道分层图最长路的问题。 于是打了一个小时的最长路,把样例调了出

  • 题解 洛谷P2034 【选择数字】2020-05-13 20:05:17

    萌新刚学单调队列优化 DP ,发一篇题解纪念一下qwq 自认为详细的讲解 看到题目,是一个纯的选数问题,所以考虑用 DP 解。学过 DP 的都知道 DP 有三要素,所以我们先把这三个填完。 阶段,这个其实一般来说就是循环的东西,比较好填,看题目可知是每个数的位置(编号) 决策,对于每个数,我们当然有两

  • 1248 Problem -AO-美丽数-入门题-数学-C++实现2020-03-08 18:02:03

    问题 AO: 美丽数 时间限制: 1 Sec  内存限制: 32 MB 提交: 191  解决: 47 题目描述 小明很喜欢3和5这两个数字,他将能被3或5整除的数叫做美丽数。现在给你一个整数N(1<=N<=100000),你能告诉小明第N个美丽数是多少吗? 输入 输入包含多组测试数据。每组输入一个整数N(1<=N<=10

  • 【PAT 甲级】 A1093 Count PAT's2020-02-26 19:04:54

    【暴力求解版本-15分】 #include <bits/stdc++.h> using namespace std; char s[100010]; int p[100010]; int a[100010]; int t[10010]; int main(void) { int res=0,np=0,na=0,nt=0; scanf("%s",s); for(int i=0;i<strlen(s);i++) { if(s[i]=='P'

  • P1137 旅行计划2020-01-30 13:56:03

    这题很简单,1分钟想出思路,5分钟打出代码(全WA),找错5分钟(主要是有坑qwq),码量并不长 主要是打了几天线段树,树链剖分(动不动就是几百行代码),写写题解放松一下 本题解力求通俗易懂 题意 给出一个有向图,从任一城市出发到一城市(可以是它本身)最多经过多少城市 思路+代码 拿到题首先分析样例 R

  • 【LuoguP4719】动态DP模板-树链剖分+线段树+矩阵乘法2020-01-22 12:39:05

    测试地址:动态DP 做法: 本题需要用到树链剖分+线段树+矩阵乘法维护动态DP。 动态DP这个东西以前听过,但当时没有看懂,现在想来觉得是卡在矩阵乘法这个地方。这里用的不是传统的矩阵乘法。 一般的DP我们肯定会做,序列上的线性动态DP(可以用线性递推式递推的DP)很容易想到用线段树+矩

  • LOJ #6283. 数列分块入门 72019-11-03 11:03:35

    区间加,区间乘,单点查询。 跟线段树的差不多,为了避免精度问题要先乘再加。区别也和其他的差不多,残块暴力。然后就没什么了。scanf读int要& ! 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cmath> 5 using namespace std; 6 const int mod = 10007; 7

  • Day1T3小w的魔术扑克——图论2019-11-01 14:56:47

    为什么不搞\(T2\)??? 因为我太菜了,那题我是真的搞不出来 题目描述 链接:https://ac.nowcoder.com/acm/contest/1100/C 来源:牛客网 小\(w\)喜欢打牌,某天小\(w\)与\(dogenya\)在一起玩扑克牌,这种扑克牌的面值都在\(1\)到\(n\),原本扑克牌只有一面,而小\(w\)手中的扑克牌是双面的魔术扑克(正

  • 题解 AT2201 【鏡文 / Mirror String】2019-10-06 23:00:27

    一道简单的字符串模拟,刷难度真给力 本蒟蒻的思路比较麻烦,但个人认为比较好理解 1 先将字符串倒序存放 2 按照规则改变字母 3 比较 Code: #include<bits/stdc++.h> using namespace std; char s1[100010],s2[100010]; int len; int main() { cin>>s1; for(int i=strlen(s1

  • P2197 【模板】nim游戏2019-09-22 13:51:06

    题面:https://www.luogu.org/problem/P2197 本题的解法是把nim游戏看做是有向图游戏用SG函数来解的. Code: #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int T,n,m,x,f[10100],a[10010],sg[100010]; bool vis[100010]; void getSG(int n) {

  • BZOJ 1303 中位数图 题解2019-09-11 17:56:37

    题面 因为所求的是中位数,所以考虑改变原序列。把大于 b 的数全部变为 1,小于 b 的数变为 −1,等于 b 则为 0。问题就变为求存在几个包含 b的区间和为 0 。 根据乘法原理,我们枚举每一个l[i],求出l[i]*r[-i]后累加到ans上;   因为数组的下标不能是负数,所以把所有下标都加上100000; #in

  • 题解 | Median-2019牛客暑期多校训练营第三场I题2019-08-20 18:39:16

    题目来源于牛客竞赛:https://ac.nowcoder.com/acm/contest/discuss 题目描述: 输入描述: 输出描述: 示例1: 题解: 代码: #include <bits/stdc++.h> using namespace std; int T,N,a[100010]; int v[100010][3]; bool f[100010][3][3]; int ans[100010]; typedef pair<int,in

  • A + B for you again(最长公共前缀和后缀)HDU - 18672019-08-19 16:01:31

    Generally speaking, there are a lot of problems about strings processing. Now you encounter another such problem. If you get two strings, such as “asdf” and “sdfg”, the result of the addition between them is “asdfg”, for “sdf” is the tail subst

  • cf 1004 C Sonya and Robots2019-08-15 21:03:49

    cf 1004 C Sonya and Robots 题意 给你n个数字\(a_i\) ,在数字的左边和右边各有一个机器人,分别给左边和右边的机器人一个数字\(a_i\), \(a_j\),左边的机器人往右走,右边的机器人往左走,左边的机器人遇到\(a_i\)就停,右边的机器人遇到\(a_j\)就停,问使得两个机器人不相遇的对数有多少对?

  • luogu1020:导弹拦截2019-07-25 21:42:10

    注:n方算法 #include<bits/stdc++.h> using namespace std; int a[100010],f[100010]; int main() { int numb=0,o=0,p,q; while(scanf("%d",&a[o+1])!=EOF) { o++; } for(int i=o;i>=1;i--) { f[i]=1; for(int j=i+1;j<=o;j++) { if

  • 有环图上的动态规划总结2019-07-25 18:54:57

    对于状态转移有环的动态规划,使用如下方式求解: 若转移里没有max/min,只有加减乘除运算,可以建立方程组,通过高斯消元在$O(n^3)$得出解。 若转移只是对一些元素取max/min(或第k大/小值),再加/减一个值,可以建图,使用dij或spfa求解。 若u依赖v,且若v能更新u,则dp[u]>=dp[v],且求的是min(例如$dp(u

  • P2672 推销员2019-07-18 12:51:08

    题面 这tm线段树的题可以用贪心去写??? 不多bb直接上代码 #include<cstdio>#include<iostream>#include<algorithm>using namespace std;struct home{ int s,v;}a[100010];int q[100010];int h[100010],qm[100010];int n;bool cmp(home a,home b){ return a.v>b.v;}int

  • 洛古 P1020 导弹拦截 N^22019-05-01 20:39:36

    第一问维护最长不升子序列,第二问维护最长上升子序列(根据Dilworth定理:偏序集的最少反链划分数等于最长链的长度) 第一问中,f[i]表示以a[i]结尾的最长不升子序列的最长长度,枚举j (1~i-1) ,若a[j]>=a[i],则f[i]=max(f[i],f[j]+1);i(因为a[j]后面可以接下去一个a[i]了,所以是f[j]+1) 最长上升

  • Dijkstra模板2019-04-21 19:47:40

    模板题 #include<bits/stdc++.h> using namespace std; int n,m,s; int head[100010],size,dis[100010]; bool falg[100010]; struct edge { int to,next,val; }e[200010]; priority_queue<pair<int,int>,vector<pair<int,int> >,greater<

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

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

ICode9版权所有