连续两次崩盘是一种什么样的体验?
最近没练题,结果就是昨天全程被木下大佬带飞。可能跟平常练的也有关系吧。毕竟平常练习的题目还是高端算法多一点。f能一眼描出记忆化,但是b和c就被卡的死死的。
我打算从今天起3 + 1练习模式,3道黄题 + 1道洛谷绿-紫,这样才能不在低级错误失分。
昨天E题我能做出来的,非常简单,就是正着编号,然后倒着扫一遍把编号重新填进去求逆序对就行,然而万恶的没做出来。今天听人讲了思路之后秒懂,哎。
#include <bits/stdc++.h> using namespace std; #define limit (200000 + 5)//防止溢出 #define INF 0x3f3f3f3f #define inf 0x3f3f3f3f3f #define lowbit(i) i&(-i)//一步两步 #define EPS 1e-6 #define FASTIO ios::sync_with_stdio(false);cin.tie(0); #define ff(a) printf("%d\n",a ); #define pi(a,b) pair<a,b> #define rep(i, a, b) for(ll i = a; i <= b ; ++i) #define per(i, a, b) for(ll i = b ; i >= a ; --i) #define MOD 998244353 #define traverse(u) for(int i = head[u]; ~i ; i = edge[i].next) #define FOPEN freopen("C:\\Users\\tiany\\CLionProjects\\acm_01\\data.txt", "rt", stdin) #define FOUT freopen("C:\\Users\\tiany\\CLionProjects\\acm_01\\dabiao.txt", "wt", stdout) #define debug(x) cout<<x<<endl typedef long long ll; typedef unsigned long long ull; inline ll read(){ ll sign = 1, x = 0;char s = getchar(); while(s > '9' || s < '0' ){if(s == '-')sign = -1;s = getchar();} while(s >= '0' && s <= '9'){x = (x << 3) + (x << 1) + s - '0';s = getchar();} return x * sign; }//快读 void write(ll x){ if(x < 0) putchar('-'),x = -x; if(x / 10) write(x / 10); putchar(x % 10 + '0'); } int kase,n,k; int a[limit]; char str[limit]; int temp[limit]; ll ans; deque<int>q[30]; void mergeSort(int l , int r){ if(l == r)return; int mid = l + (r - l) / 2; mergeSort(l , mid); mergeSort(mid + 1, r); int pa = l , pb = mid + 1, cnt = l; while(pa <= mid && pb <= r){ if(a[pa] > a[pb]){ ans += ll(mid - pa + 1); temp[cnt++] = a[pb++]; }else{ temp[cnt++] = a[pa++]; } } while(pa <= mid){ temp[cnt++] = a[pa++]; } while(pb <= r){ temp[cnt++] = a[pb++]; } for(int i = l ; i <= r ; ++i){ a[i] = temp[i]; } } int main() { #ifdef LOCAL FOPEN; #endif cin>>n>>str+1; rep(i,1,n){ int num = str[i] - 'a'; q[num].push_back(i); } reverse(str + 1, str + 1 + n); rep(i,1,n){ a[i] = q[str[i] - 'a'].front(); q[str[i] - 'a'].pop_front(); } mergeSort(1,n); write(ans); return 0; }
天才选手zerol的主页:https://zerol.me/
|
WeepingDemon的个人主页:https://weepingdemon.gitee.io/blog/

浙公网安备 33010602011771号