自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 luogu 学习记录

[JSOI2016]最佳团体读完题第一眼就是分数规划,求最大值,所有可以采用二分答案的方式解决。Σi=1npiΣi=1nsi>mid\frac{{\Sigma_{i = 1}^{n}}p_i}{{\Sigma_{i = 1}^{n}}s_i} > midΣi=1n​si​Σi=1n​pi​​>mid则将该式化简可以得到pi−mid∗si>0p_i - mid * s_i > 0pi​−mid∗si​>0故可以将该题可以按照点权为pi−mid∗si>

2021-12-30 18:03:01 131

原创 luogu 学习记录

工作调度记录第一次的反悔贪心题目,用优先队列维护报酬先按照截止时间从小到大排序,然后遍历所有的工作,如果没有截止时间还没有过就先选上,当遍历到截止时间过了之后,此时将队列中报酬最小的弹出,用现在的工作替换,这就是后悔的过程。/** * @file P2949.cpp * @author ruilong fan () * @brief 反悔贪心 工作调度 * @version 0.1 * @date 2021-12-11 * * @copyright Copyright (c) 202

2021-12-11 22:15:42 194

原创 2021-11-15

dp+滑动窗口的应用设计了一款游戏,需要算出从起点经过若干次跳跃到终点的得分,输入为一个整数数组nums,和一个整数k,一开始你在下标 0 处。每一步,你最多可以往前跳 k 步,但你不能跳出数组的边界。也就是说,你可以从下标 i 跳到 [i + 1, min(n - 1, i + k)] 包含 两个端点的任意位置。你的目标是到达数组尾部(下标为 n - 1 ),你的得分为经过的所有数字之和。#分析:由题意可以发现可以用动态规划解决,但是显然在dp时会超时,因为你要每次用一次循环查找[i - k,

2021-11-15 20:28:34 3067

原创 数字和 动态规划

数字和Description给你一个数字sum,再给k个数字num1、num2、...、numk,现在需要将k个数字进行组合,使得他们的和为sum。请问有多少种组合?如果任何组合的和都不等于sum,返回0。Input第一行输入数字sum,第二行输入数字个数k,接下来k行分别输入k个数字。Output输出组合的个数。完全背包#include <bits/stdc++.h>using namespace std;typedef long long ll;const

2021-09-20 19:45:17 280

原创 P1020 [NOIP1999 普及组] 导弹拦截

O(nlogn)做法即贪心+二分,dp数组里存的是最长的不上升序列。第二问求需要多少系统,这个可以参考狄尔沃斯定理。dilworth#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1e5 + 10;vector<int> a;int res = 1;void dp1(){ int dp[N]; int len = 0; dp

2021-07-17 19:46:05 259

原创 luogu P1060 [NOIP2006 普及组] 开心的金明

这是01背包的变种题目,只要把状态转移方程改为dp[j] = max(dp[j],dp[j - v[i]] + w[i] * v[i]);#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N = 3e4+10;int v[N],w[N];ll dp[N];int n,m;void run(){ cin >> n >> m; for

2021-07-17 14:07:50 115

原创 洛谷 P4779 【模板】单源最短路径

#include <bits/stdc++.h>using namespace std;typedef long long ll;typedef pair<int, int> PII;const int N = 1e6 + 10;int n, m, s;int e[N], ne[N], hh[N], idx, we[N];int d[N]; //存储最短路bool f[N]; //表示最短路已经确定void add(int x, int y, int z){

2021-07-14 23:15:11 88

原创 luogu P5149 会议座位

本题是核心是求逆序对,但是题目的序列是字符串,因此可以用map+归并排序求解。将字符串用map维护然后再通过读入第二组字符串将pos[i]更新为原本字符串对应的下标,再通过归并排序求解逆序对。#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1e5+10;ll sum = 0;int pos[N],tmp[N];void ms(int l,int r){ if(

2021-07-13 11:15:52 97

原创 AcWing 4.多重背包问题 I

与01背包类似j从m开始遍历,#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 2500;int n,m;int f[N];int main(){ cin >> n >> m; for(int i = 1; i <= n; i++) { int a

2021-07-11 20:18:51 44

原创 AcWing 3726. 调整数组

判断数组中的数是否奇偶性相同a 表示取与,b表示取或#include <iostream>#include <cstring>#include <algorithm>using namespace std;int main(){ int t; cin >> t; while(t--) { int n,val, a = 1,b = 0; cin >> n;

2021-06-27 19:35:38 55

原创 P2670 [NOIP2015 普及组] 扫雷游戏

题目为了除去对i-1,j-1的特判。可以从1-n读入在循环找地雷过程中找到地雷则将周围的8格全都加一,然后输出时从1-n输出即可。#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N = 110;int main() { // freopen("in.in","r",stdin);//从in.in文件中读入数据 // freopen("out.out","w",st

2021-06-22 17:35:06 231

原创 P1042 [NOIP2003 普及组] 乒乓球

题目简单模拟,需要注意的是乒乓球的规则是当赢球数和输球数大于2时才会胜出。以11分为例,每次计数w,l的个数,当w >= 11&&w-l >= 2||l >= 11&&l-w>=2 时才会printw:l的值。#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1e5+10;int main() {// fr

2021-06-22 17:30:09 235

原创 Acwing 3686.移动序列

##acwing 3686.移动序列思路:这道题你经过分析输入数据和输出数据对比就会发现这道题只需要让第一个1和最后一个1之间的0全部转移到外面即可。然后最精彩的部分来了,这道题只需判断两个1之间有多少0即可。AC代码#include <iostream>#include <cstring>#include <algorithm>using namespace std;int a[55];int main(){ int t,n; c

2021-06-16 22:13:35 65

原创 Bitmap

Bitmap package edu.nwpu.bitmap;import java.util.Random;/** * @author fanruilong * */public class Bitmap {private byte[] bits;private final int MAX_BIT_LEN = 7;private final int MB = 1024 * 1024 * 10;private final int MAX_VALUE = MAX

2021-06-16 16:00:44 73

原创 Acwing 2.01背包问题

##01背包问题#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 1010;int dp[N] = {0};struct node{ int v,w;}a[N];int main(){ int n,v; cin >> n >> v; for (int i =

2021-06-16 00:17:22 123

原创 Acwing 3.完全背包问题

##完全背包问题#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 1010;struct node{ int v,w;}a[N];int dp[N] = {0};int main(){ int n,m; cin >> n >> m; for (int i =

2021-06-16 00:08:20 91

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除