自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xywy的博客

xywy的博客

  • 博客(40)
  • 收藏
  • 关注

原创 P1908 逆序对

树状数组+离散化离散化的技巧就是给输入的顺序按权值(输入的值)排序如 [5,4,2,6,3,1] 排完序后得到的顺序序列就是 [6,3,5,2,1,4]两者的逆序对数量相等。我们可以这么理解:在这个有序序列中任意选一个数,对于这个数来说,它前面的所有数都小于它,如果前面数在原数组中的下标大于它,则构成一个逆序对。...

2022-06-27 22:16:47 287 1

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

坑点1:E会在任意位置出现, 不一定是结尾。坑点2:输赢只差必须大于等于2场坑点3:读到E时,不论比分是否为零,都要输出

2022-06-27 22:00:36 140

原创 1010 Radix

1010 Radix

2022-06-18 21:36:00 102

原创 【Codeforces Round #799 (Div. 4)】H. Gambling

【Codeforces Round #799 (Div. 4)】又写了一遍。。加深印象

2022-06-15 17:22:39 427 1

原创 【Codeforces Round #799 (Div. 4)】E. Binary Deque

题意:给了一组数据,只含0、1,每次你可以从开头或者末尾拿掉一个,问最少需要几步使得剩下的数总和为s思路:类似滑动窗口的题目。一个思路是可以固定左边界,想办法迅速确定右边界。由于左边界固定,随着右边界越靠右,区间和一定越大,所以可以考虑对前缀数组二分。时间复杂度是 O (n log n)其实这题还可以在 O (2n) 的时间内解决(双指针),在开始时,左右边界都设置为1,右边界先走,到达满足sum == s 的位置便停下,由于左边界每次循环前移一位,与此同时sum可能会 -1,这时候只要继续将右边界往右移

2022-06-15 14:25:51 673

原创 L2-043 龙龙送外卖

龙龙送外卖不知道送了多少遍。。今天又送一遍,感觉比以前好多了思路就是要走的总距离 - 最长路径。算总距离直接每次dfs往他父亲走就行了,如果这个点没有被访问过,那么显然要把距离给加上去;如果已经访问过了,因为每次只走父亲结点,再访问的结点也都是访问过的,直接return...

2022-05-04 23:50:31 655

原创 L2-042 老板的作息表

#include<bits/stdc++.h>using namespace std;int main() { int n; cin >> n; vector<pair<string, string>>v; v.emplace_back("00:00:00", "00:00:00"); for (int i = 0; i < n; i++) { string a,b,c; cin >> a >> c &gt

2022-05-04 14:04:01 491

原创 L2-041 插松枝

#include<bits/stdc++.h>using namespace std;int main() { queue<int>q; stack<int>s; vector<int>v; int n, m, k; cin >> n >> m >> k; for (int i = 0; i < n; ++i) { int x; cin >> x; q.push(x); }

2022-05-04 14:03:02 447

原创 L2-044 大众情人

考察floyd算法和模拟能力#include<bits/stdc++.h>using namespace std;#define inf int(1e9 + 7)#define eps 1e-9struct r{ bool operator()(const pair<double, int>&a,const pair<double, int>&b)const{ return abs(a.first - b.first) < eps

2022-05-03 23:52:17 277

原创 L2-038 病毒溯源 (25 分)

#include<iostream>#include<vector>using namespace std;#define MX int(1e4+10)vector<int> a[MX];int ans;vector<int> v;vector<int> t;void dfs(int x,int dep){ if(dep>ans){ ans = dep; v = t; }e

2022-04-18 21:51:37 204

原创 L2-029 特立独行的幸福 (25 分)

#include<iostream>#include<vector>#include<unordered_map>#include<map>#include<cmath>using namespace std;unordered_map<int, int> xr;int pm(int x){ if(x<2) return 0; else if(x==2) retur

2022-04-17 18:00:18 300

原创 L2-028 秀恩爱分得快 (25 分)

#include<iostream>#include<vector>#include<algorithm>#include<unordered_map>#include<string>using namespace std;#define MX 1010#define EPS 1e-7vector<vector<double>> g(MX, vector<double>(MX));vecto

2022-04-17 13:04:00 374

原创 L2-027 名人堂与代金券 (25 分)

#include<iostream>#include<vector>#include<algorithm>using namespace std;#define MX 10100struct node{ string s; int score; node(string s="",int score=0){ this->s = s; this->score = score; }

2022-04-16 19:34:50 334

原创 【DFS】L2-026 小字辈 (25 分)

#include<iostream>#include<algorithm>#include<vector>#include<functional>using namespace std;#define MX 100100vector<vector<int>>a(MX);int n;int mdep=1;vector<int>ans;int root=0;void dfs(int x,int dep

2022-04-16 13:43:02 179

原创 L2-025 分而治之 (25 分)

#include<iostream>#include<functional>#include<unordered_map>#include<vector>using namespace std;int main(){ int n, m; cin >> n >> m; vector<vector<int>> a(n+1); for (int i = 0; i < m

2022-04-16 01:02:23 280

原创 【并查集】L2-024 部落 (25 分)

#include<iostream>#include<unordered_map>#include<functional>#include<vector>using namespace std;#define MX int(1e4+10)int main(){ unordered_map<int, int> mp; vector<int>a(MX); for (int i = 0; i <

2022-04-16 00:46:44 283

原创 L2-023 图着色问题 (25 分)

#include<iostream>#include<vector>#include<unordered_map>using namespace std;#define MX 1010int main(){ int n, m, k; cin >> n >> m >> k; vector<vector<int>> a(MX,vector<int>(MX)); for (int i

2022-04-15 19:46:32 127

原创 L2-022 重排链表 (25 分)

#include<iostream>#include<vector>using namespace std;#define MX 100010int main(){ int first, n; cin >> first >> n; vector<int> data(MX), next(MX); for (int i = 0; i < n;++i){ int ads; cin >> ads>>

2022-04-15 18:49:52 866

原创 L2-021 点赞狂魔 (25 分)

#include<iostream>#include<map>#include<vector>#include<algorithm>using namespace std;struct node{ string s; map<int, int> mp; int num, k; bool operator<(const node&oth)const{ return num==oth.num?k<oth.k:

2022-04-15 18:34:11 240

原创 L2-020 功夫传人 (25 分)

#include<iostream>#include<vector>using namespace std;int n; double z,r,ans=0;vector<vector<int>>a;void dfs(int i,double p){ if(a[i][0]<0) ans+=-p*a[i][0]; else for(int x:a[i]) dfs(x,p*(1-r/100));}int main(){ cin>&gt

2022-04-15 00:44:56 58

原创 L2-019 悄悄关注 (25 分)

#include<bits/stdc++.h>using namespace std;struct t{ string name; int num;};int main(){ int n;cin>>n; unordered_map<string,int>mp; while(n--){ string s;cin>>s; mp[s]++; } int m;cin>>m; vector<t>v(m); dou

2022-04-15 00:43:31 66

原创 L2-018 多项式A除以B (25 分)

#include<iostream>#include<vector>#include<functional>using namespace std;#define MX 10010#define MIS 1e-7int main(){ vector<double> c1(MX), c2(MX), c3(MX); int n, m,s1,s2; cin >> n; for (int i = 0; i &lt

2022-04-15 00:36:59 195

原创 L2-017 人以群分 (25 分)

#include<iostream>#include<vector>#include<numeric>#include<algorithm>using namespace std;int main(){ int n; cin >> n; vector<int> v(n); for (int i = 0; i < n;++i){ cin >> v[i]; } sort(v.begin(), v

2022-04-13 19:05:19 74

原创 【DFS】L2-016 愿天下有情人都是失散多年的兄妹 (25 分)

要点:建有向图,注意双亲性别。分别对两人dfs,五代以内出现被访问过的结点说明两个人最近的共同祖先如果在五代以内#include<queue>#include<iostream>#include<functional>#include<vector>#include<algorithm>using namespace std;#define MX 100100 int main(){ int n; cin >>

2022-04-13 18:53:35 52

原创 L2-015 互评成绩 (25 分)

#include<iostream>#include<vector>#include<algorithm>using namespace std;int main(){ int n, k, m; cin >> n >> k >> m; vector<vector<int>> a(n, vector<int>(k)); for (int i = 0; i < n;++i){

2022-04-13 14:50:01 175

原创 L2-014 列车调度 (25 分)

这个问题等价于在递增区间内找第一个大于他的数将其替换,找不到则插在最后,这样一来区间也是保持有序的。#include<iostream>#include<vector>using namespace std;int main(){ vector<int> v; int n; cin >> n; for (int i = 0; i < n;++i){ int x; cin >> x; if(v.size()==0|

2022-04-13 14:30:32 51

原创 L2-013 红色警报 (25 分)

#include<functional>#include<iostream>#include<vector>using namespace std;int main(){ int n, m; cin >> n >> m; vector<vector<int>> a(n,vector<int>(n)); for (int i = 0; i < m;++i){ int u, v; ci

2022-04-13 13:21:13 104

原创 L2-012 关于堆的判断 (25 分)

#include<iostream>#include<vector>#include<unordered_map>using namespace std;int main(){ int n, m; cin >> n >> m; vector<int> v(n+1); for (int i = 1; i <= n;++i){ int x; cin >> x; int j =i; for

2022-04-12 21:48:49 182

原创 L2-011 玩转二叉树 (25 分)

#include<iostream>#include<vector>#include<queue>#include<functional>using namespace std;#define MX 40struct node{ int left, right;};int main(){ int n; cin >> n; vector<int> mp(MX), v(n + 1); vector<no

2022-04-12 21:17:59 524

原创 【并查集】L2-010 排座位 (25 分)

#include<iostream>#include<vector>using namespace std;vector<int> a;int find(int x){ return a[x] == x ? x : a[x] = find(a[x]);}void unin(int x,int y){ a[find(x)] = find(y);}int main(){ int n, m, k; cin >> n >>

2022-04-12 09:04:20 56

原创 L2-009 抢红包 (25 分)

简单排序题#include<iostream>#include<algorithm>#include<vector>#include<iomanip>using namespace std;struct node{ int id; double sum=0; int num=0; bool operator<(const node&t)const{ return sum == t.sum ? num==t.num?id

2022-04-11 23:53:48 156

原创 【dp / 中心扩散 / 马拉车】L2-008 最长对称子串 (25 分)

法一:中心扩散#include<iostream>#include<string>using namespace std;int main(){ string s; getline(cin, s); int n = s.size(); int ans = 0; int start = 0; int left = 0, right = 0; while(start<n) { if((n-start)*2<ans) break; wh

2022-04-10 21:48:20 272

原创 【DFS / 并查集】L2-007 家庭房产 (25 分) 两种算法的效率差距如何?

直接建图暴搜。。并查集的写法还没试过,a了回来补上#include<iostream>#include<vector>#include<functional>#include<algorithm>using namespace std;#define MX 10010struct node{ int minX, ppl, cnt, ttl; double ecnt, ettl; bool operator<(const node

2022-04-10 10:04:51 420

原创 L2-006 树的遍历 (25 分)

这题考察由中序序列和后序序列创建一棵二叉树。由中序序列可以得知当前结点(即根)的左右儿子的大小。由于后序遍历的排列方式是左右根,而左右边界都已知,因此只需要知道左儿子大小即可,其值等于在中序序列中根位置减左边界位置。根位置可以事先对中序序列做映射得到。所以在递归创建左右子树的时候,除了传入后序序列中的左右边界,还要传入左边界在中序序列中的位置。其值只能通过上一层获得。对于左子树在上一层直接传入左边界,对于右子树在上一层传入中序根位置+1#include <functional>#in

2022-04-09 22:44:12 922

原创 L2-005 集合相似度 (25 分)

#include<iostream>#include<vector>#include<unordered_map>using namespace std;int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int n; cin >> n; vector<unordered_map<int, int>> mp(

2022-04-09 20:43:56 57

原创 L2-004 这是二叉搜索树吗? (25 分)

#include<iostream>#include<vector>#include<functional>using namespace std;int main(){ int n; cin >> n; vector<int> a(n); for (int i = 0; i < n;++i) cin >> a[i]; vector<int> ans; int mir = 0; int

2022-04-09 19:52:59 199

原创 L2-003 月饼 (25 分)

可以使用优先队列,好处是卖完时队列为空自动退出。键为pair<double,int>,按first 单价排序,second值为下标i,直接可以索引输入的两个数组位置。#include<iostream>#include<queue>#include<vector>using namespace std;int main(){ int n, m; cin >> n >> m; vector<double>

2022-04-09 19:04:22 216

原创 【正则】L1-058 6翻了 (15 分)

输入格式:输入在一行中给出一句话,即一个非空字符串,由不超过 1000 个英文字母、数字和空格组成,以回车结束。输出格式:从左到右扫描输入的句子:如果句子中有超过 3 个连续的 6,则将这串连续的 6 替换成 9;但如果有超过 9 个连续的 6,则将这串连续的 6 替换成 27。其他内容不受影响,原样输出。输入样例:it is so 666 really 6666 what else can I say 6666666666输出样例:it is so 666 really 9 what els

2022-04-09 09:41:56 378

原创 【正则】L1-064 估值一亿的AI核心代码 (20 分)

python正则表达式解题import ren = int(input())for i in range(n): s = input() print(s) s = re.sub(r'\s+', ' ', s).strip() s=s.replace(' !', '!').replace(' ,', ',').replace(' .', '.').replace(' ?', '?').replace(' \'', '\'') s=''.join(map(lambd

2022-04-08 22:38:40 749

原创 给unity酱复刻了个原神相机视角

寒假在家闲着无聊写的,留个代码,防止忘记。

2022-02-02 21:41:53 2865 1

bombbombbombbombbomb

bombbombbombbombbomb

2023-03-24

空空如也

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

TA关注的人

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