list
- AC自动机
- KMP(记得看!!!!!)
- 二维差分
最好的连接
代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll M=2000005;
ll n,ans,x;
struct node{
ll a,b,po;
}a[M];
char aa[M];
bool xyl(node a,node b){
return a.a*b.b>b.a*a.b;
}
int main(){
// freopen("best.in","r",stdin);
// freopen("best.out","w",stdout);
scanf("%lld",&n);
for(int i=1;i<=n;i++){
scanf("%s",&aa);
ll a1=strlen(aa)-1;
for(int j=0;j<=a1;j++){
if(aa[j]=='X')
++a[i].a;
else if(aa[j]>='0'&&aa[j]<='9')
a[i].b+=aa[j]-'0',a[i].po+=(aa[j]-'0')*a[i].a;
}
}
sort(a+1,a+n+1,xyl);
for(int i=1;i<=n;i++){
ans+=a[i].po+a[i].b*x;
x+=a[i].a;
}
printf("%lld",ans);
return 0;
}
notes:
- sort内部不能出现>=或者<= ,不然会因为判断标准不明确而RE!!!!
贪心模板:
- 求分为多个局部的最优排列,若任两个局部之间交换并不影响其他局部,就可以通过假设当前为最优排列为前提,推导每个局部之间的排序关系,将关系式化简到只关于相邻的两个局部,然后将每个局部看为整体进行排序QwQ
看到了一篇很不戳的文章QwQhttps://www.cnblogs.com/mathematician/p/12633276.html
哥德巴赫猜想:
- n%2==0:n=2+(n-2)(n-2可以被拆分成若干个质数)
- n%2==1:n=3+(n-3)(同上)