Luogu 考前模拟Round. 1

A.情书

题目:http://www.luogu.org/problem/show?pid=2264

赛中:sb题,直接暴力匹配就行了,注意一下读入和最后一句话的分句

赛后:卧槽 怎么只有40

B.小朋友的球

题目:http://www.luogu.org/problem/show?pid=1655

赛中:sb题,第二类斯特林数,加个高精度就行了,我还写了个暴力对拍

赛后:卧槽 怎么只有80 未知错误怎么回事儿啊

C.命运的彼方

题目:http://www.luogu.org/problem/show?pid=2263

赛中:sb题,poi2008砖块,splay维护中位数,加减数即可,数据范围有点大,算一下好像也能过?

赛后:卧槽 怎么CE了 又交了4、5遍 怎么还是CE bzoj还能A啊

1.5h交完3t,然后坐等AK。。。

最后知道真相的我眼泪掉下来。。。

我已无力吐槽luogu。。。

3道sb题,结果一半分都没有,是我太sb还是我太sb。。。

明信片再见。。。

UPD:t2 数据出错

t3 long long 的常数需要在后面加 ll  。。。

luogu为何连CE都不报,以后还能不能快乐地做比赛了T_T

UPD:还是贴上代码吧。。。

A

 1 #include<cstdio>
 2 #include<cstdlib>
 3 #include<cmath>
 4 #include<cstring>
 5 #include<algorithm>
 6 #include<iostream>
 7 #include<vector>
 8 #include<map>
 9 #include<set>
10 #include<queue>
11 #include<string>
12 #define inf 1000000000
13 #define maxn 500+100
14 #define maxm 500+100
15 #define eps 1e-10
16 #define ll long long
17 #define pa pair<int,int>
18 #define for0(i,n) for(int i=0;i<=(n);i++)
19 #define for1(i,n) for(int i=1;i<=(n);i++)
20 #define for2(i,x,y) for(int i=(x);i<=(y);i++)
21 #define for3(i,x,y) for(int i=(x);i>=(y);i--)
22 #define mod 1000000007
23 using namespace std;
24 inline int read()
25 {
26     int x=0,f=1;char ch=getchar();
27     while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();}
28     while(ch>=‘0‘&&ch<=‘9‘){x=10*x+ch-‘0‘;ch=getchar();}
29     return x*f;
30 }
31 string a[200],b[200];
32 inline bool find(int x,int y)
33 {
34     int l1=a[x].length(),l2=b[y].length();
35     for0(i,l2-l1)
36      {
37          int j=i,k=0;
38          while(a[x][k]==b[y][j])k++,j++;
39          if(k<l1-1)continue;
40          return 1;
41      }
42     return 0;
43 }
44 int main()
45 {
46     freopen("input.txt","r",stdin);
47     freopen("output.txt","w",stdout);
48     int n=read();
49     for1(i,n+1)
50     {
51         getline(cin,a[i]);
52         int l=a[i].length();
53         for0(j,l-1)if(a[i][j]>=‘A‘&&a[i][j]<=‘Z‘)a[i][j]+=‘a‘-‘A‘;
54     }
55     int m=1;
56     for0(i,a[n+1].length()-1)
57     {
58         if(a[n+1][i]==‘.‘)m++;
59         b[m]=b[m]+a[n+1][i];
60     }
61     m--;
62     int ans=0;
63     for1(i,n)
64      for1(j,m)
65       if(find(i,j))ans++;
66     printf("%d\n",ans);
67     return 0;
68 }

B

 1 #include<cstdio>
 2 #include<cstdlib>
 3 #include<cmath>
 4 #include<cstring>
 5 #include<algorithm>
 6 #include<iostream>
 7 #include<vector>
 8 #include<map>
 9 #include<set>
10 #include<queue>
11 #include<string>
12 #define inf 1000000000
13 #define maxn 500
14 #define maxm 500+100
15 #define eps 1e-10
16 #define ll long long
17 #define pa pair<int,int>
18 #define for0(i,n) for(int i=0;i<=(n);i++)
19 #define for1(i,n) for(int i=1;i<=(n);i++)
20 #define for2(i,x,y) for(int i=(x);i<=(y);i++)
21 #define for3(i,x,y) for(int i=(x);i>=(y);i--)
22 #define mod 10000
23 using namespace std;
24 inline int read()
25 {
26     int x=0,f=1;char ch=getchar();
27     while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();}
28     while(ch>=‘0‘&&ch<=‘9‘){x=10*x+ch-‘0‘;ch=getchar();}
29     return x*f;
30 }
31 class bigg
32 {
33 public:
34     int num[maxn],len;
35     bigg(){memset(num,0,sizeof(num));len=0;}
36     bigg operator =(const bigg &b)
37     {
38         memset(num,0,sizeof(num));
39         len=b.len;
40         for1(i,len)num[i]=b.num[i];
41         return (*this);
42     }
43     bigg operator =(int b)
44     {
45         memset(num,0,sizeof(num));len=0;
46         while(b)num[++len]=b%mod,b/=mod;
47         return (*this);
48     }
49     bigg operator *(int b)
50     {
51         bigg ans;
52         ans.len=len;
53         for1(i,len)ans.num[i]=num[i];
54         int x=0;
55         for1(i,len)
56         {
57             x+=ans.num[i]*b;
58             ans.num[i]=x%mod;
59             x/=mod;
60         }
61         if(x)ans.num[++ans.len]=x;
62         return ans;
63     }
64     bigg operator +(const bigg &b)
65     {
66         bigg ans;ans=0;
67         ans.len=max(len,b.len);
68         for1(i,ans.len)
69         {
70             ans.num[i]+=num[i]+b.num[i];
71             ans.num[i+1]=ans.num[i]/mod;
72             ans.num[i]%=mod;
73         }
74         if(ans.num[ans.len+1])ans.len++;
75         return ans;
76     }
77     void print()
78     {
79         printf("%d",num[len]);
80         for3(i,len-1,1)printf("%04d",num[i]);printf("\n");
81     }
82 };
83 bigg f[120][120];
84 int main()
85 {
86     freopen("input.txt","r",stdin);
87     freopen("output.txt","w",stdout);
88     for1(i,100)f[i][1]=1;
89     for2(i,2,100)
90      for2(j,2,i)
91       f[i][j]=f[i-1][j]*j+f[i-1][j-1];
92     int n,m;
93     while(cin>>n>>m)f[n][m].print();
94     return 0;
95 }

C

  1 #include<cstdio>
  2 #include<cstdlib>
  3 #include<cmath>
  4 #include<cstring>
  5 #include<algorithm>
  6 #include<iostream>
  7 #include<vector>
  8 #include<map>
  9 #include<set>
 10 #include<queue>
 11 #include<string>
 12 #define inf 1000000000000000ll
 13 #define maxn 1500000
 14 #define eps 1e-10
 15 #define ll long long
 16 #define pa pair<int,int>
 17 #define for0(i,n) for(int i=0;i<=n;i++)
 18 #define for1(i,n) for(int i=1;i<=n;i++)
 19 #define for2(i,x,y) for(int i=x;i<=y;i++)
 20 using namespace std;
 21 inline ll read()
 22 {
 23     ll x=0,f=1;char ch=getchar();
 24     while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();}
 25     while(ch>=‘0‘&&ch<=‘9‘){x=10*x+ch-‘0‘;ch=getchar();}
 26     return x*f;
 27 }
 28 int fa[maxn],c[maxn][2],n,k,tot=0,rt=0;
 29 ll sum[maxn],s[maxn],v[maxn],a[maxn];
 30 inline void pushup(int x)
 31 {
 32     int l=c[x][0],r=c[x][1];
 33     s[x]=s[l]+s[r]+1;
 34     sum[x]=sum[l]+sum[r]+v[x];
 35 }
 36 inline void rotate(int x,int &k)
 37 {
 38     int y=fa[x],z=fa[y],l=c[y][1]==x,r=l^1;
 39     if(y==k)k=x;else c[z][c[z][1]==y]=x;
 40     fa[x]=z;fa[y]=x;fa[c[x][r]]=y;
 41     c[y][l]=c[x][r];c[x][r]=y;
 42     pushup(y);pushup(x);
 43 }
 44 inline void splay(int x,int &k)
 45 {
 46     while(x!=k)
 47      {
 48         int y=fa[x],z=fa[y];
 49         if(y!=k)
 50          {
 51             if(c[z][0]==y^c[y][0]==x)rotate(x,k);else rotate(y,k);
 52          }
 53         rotate(x,k);
 54      }
 55 }
 56 inline void ins(int &k,int kk,ll x)
 57 {
 58     if(!k)
 59     {
 60         k=++tot;s[tot]=1;fa[tot]=kk;v[tot]=sum[tot]=x;return;
 61     }
 62     s[k]++;
 63     if(x<=v[k])ins(c[k][0],k,x);else ins(c[k][1],k,x);
 64     pushup(k);
 65 }
 66 inline int find(int k,int x)
 67 {
 68     int l=c[k][0],r=c[k][1];
 69     if(s[l]+1==x)return k;
 70     else if(s[l]>=x)return find(l,x);
 71     else return find(r,x-s[l]-1);
 72 }
 73 inline int pos(int k,ll val)
 74 {
 75     if(v[k]==val)return k;
 76     else if(val<v[k])return pos(c[k][0],val);
 77     else return pos(c[k][1],val);
 78 }
 79 inline void del(ll val)
 80 {
 81     splay(pos(rt,val),rt);
 82     int x=c[rt][0],y=c[rt][1];
 83     while(c[x][1])x=c[x][1];
 84     while(c[y][0])y=c[y][0];
 85     splay(x,rt);splay(y,c[x][1]);
 86     fa[c[y][0]]=c[y][0]=0;
 87     pushup(y);pushup(x);
 88 }
 89 int main()
 90 {
 91     freopen("input.txt","r",stdin);
 92     freopen("output.txt","w",stdout);
 93     n=read();k=read();
 94     for1(i,n)a[i]=read();
 95     ins(rt,0,-1);ins(rt,0,1000000000001ll);
 96     for1(i,k-1)ins(rt,0,a[i]),splay(i+2,rt);
 97     ll ans=inf,x,y;
 98     for1(i,n-k+1)
 99      {
100         ins(rt,0,a[i+k-1]);splay(i+k+1,rt);
101         x=find(rt,(s[rt]>>1)+1);y=v[x];
102         splay(x,rt);
103         ans=min(ans,s[c[x][0]]*y-sum[c[x][0]]+sum[c[x][1]]-s[c[x][1]]*y);
104         del(a[i]);
105         if(ans==1000000000002ll)break;
106      }
107     cout<<ans-1000000000002ll<<endl;
108     return 0;
109 }

时间: 2024-10-29 19:10:59

Luogu 考前模拟Round. 1的相关文章

2017.11.8 Noip2017 考前模拟赛

----------------------------------T1---------------------------------- ——>足球联赛 题目描述 巴蜀中学新一季的足球联赛开幕了. 足球联赛有 n 只球队参赛,每赛季,每只球队要与其他球队各赛两场,主客各一场,赢一场得 3 分,输一场不得分,平局两只队伍各得一分. 英勇无畏的小鸿是机房的主力前锋, 她总能在关键时刻踢出一些匪夷所思的妙球. 但是很可惜,她过早的燃烧完了她的职业生涯,不过作为一个能够 Burning 的 girl

【NOIP考前模拟赛】纯数学方法推导——旅行者问题

一.写在前面 这题似乎是一道原创题目(不是博主原创),所以并不能在任何OJ上评测,博主在网盘上上传了数据(网盘地址:http://pan.baidu.com/s/1mibdMXi),诸位看官需者自取.另外博主使用此题并没有获得出题人授权,如果出题人看到这篇blog并认为在下侵犯了您的权利,请用站内消息与在下联系,在下会立即删除这篇blog,给您带来的困扰之处敬请谅解. 博主上传这道题主要是因为这题牵扯许多数学运算,推导过程比较复杂,但是却没有用到任何算法或者数学定理,可以说这是一道想法题的典范.

【考前模拟】正确答案

1.正确答案 [题目描述] 小H与小Y刚刚参加完UOIP外卡组的初赛,就迫不及待的跑出考场对答案. "吔,我的答案和你都不一样!",小Y说道,"我们去找神犇们问答案吧". 外卡组试卷中共有m道判断题,小H与小Y一共从其他n个神犇那问了答案.之后又从小G那里得知,这n个神犇中有p个考了满分,q个考了零分,其他神犇不为满分或零分.这可让小Y与小H犯了难.你能帮助他们还原出标准答案吗?如有多解则输出字典序最小的那个.无解输出-1. [输入格式] 第一行四个整数n, m,

【XJOI】【NOI考前模拟赛7】

DP+卡常数+高精度/  计算几何+二分+判区间交/  凸包 首先感谢徐老师的慷慨,让蒟蒻有幸膜拜了学军的神题.祝NOI2015圆满成功 同时膜拜碾压了蒟蒻的众神QAQ 填填填 我的DP比较逗比……(当时看到其他大神有更加优秀的做法) f[i][j]表示前 i 个数,第一行填了 j 个的方案数,那么如果 i 并没有固定位置,f[i][j]=f[i-1][j]+f[i-1][j-1];即 i 这个数放在第一行或是第二行...(废话) 如果 i 固定的位置是第一行(1,y),那么f[i]中只有f[i

考前模拟冲刺2

1. 足球联赛(soccer.pas/c/cpp ) 题目描述: 巴蜀中学新一季的足球联赛开幕了.足球联赛有 n只球队参赛,每赛季,每只球队要与其他球队各赛两场,主客各一场,赢一场得 3 分,输一场不得分,平局两只队伍各得一分. 英勇无畏的小鸿是机房的主力前锋,她总能在关键时刻踢出一些匪夷所思的妙球.但是很可惜,她过早的燃烧完了她的职业生涯,不过作为一个能够 Burning 的 girl,她的能力不止如此,她还能预测这个赛季所有球队的比赛结果. 虽然她能准确预测所有比赛的结果,但是其实她不怎么厉

「Luogu P6101」[EER2]出言不逊

Portal Portal1: Luogu Solution 模拟,先找到在读入字符串内出现次数最多的字符,记录个数,然后以 \(2\) 为指数在现有长度上递增,就可以算出答案. 但是long long会溢出,所以要判断一下,如mx + mx < mx说明已经溢出了,然后就退出答案做个标记,输出的时候\(+1\),否则会死循环,至于__int128,我没试过. 代码纯属是为过而过,没什么可看的. Code #include<bits/stdc++.h> #pragma GCC optim

[随笔]NOIP2017提高组复赛 游记

前言 真正意义上的第一篇游记,经历了第一次正式大考,希望自己能在这条道路上走得足够远... 当然最主要的梦想还是THU喔! Day -2 今天就是NOIP考前在机房呆的最后一天,上午打完了最后一场模拟赛,是NOIP模拟赛50,难以置信集训期间考了这么多场QAQ 应该这场就是信心赛了,因为好像上午要和我们联考的学校放了OD鸽子了2333(喜闻乐见) 然后蒟蒻的我信心赛只打了210分rank12 T-T,只能说RP++ 下午没有考试,于是机房内的气氛从原来的高级算法乱飞,变成了都在码最基础的模板 临

frm考试

风险管理涵盖众多领域,包括风险管理概论.数量分析.金融市场与金融产.定价与风险模型.市场风险测度与管理.信用风险测度与管理.操作风险测度与管理.基金投资风险.会计.法律等众多内容.在今日错综复杂.瞬 息万变的金融市场上,风险往往难以掌握.有效管理风险并从中获取利润成为金融企业成功的重要关键.而这一攸关企业组织及其投资人命运的重要决策,需要众多 的金融风险管理专业人士(Financial Risk Professionals)的参与,故FRM日益受到重视,全球报考人数以每年超过38%成长,已俨然成

考了3年,工作四年,零基础在职终于拿到CFA证书

大家都知道CFA Charterholder是独有的全球公认的投资管理从业人员高职业水平和道德水准的有力证明,是金融界卓越专业成就的象征:CFA资格强调和遵循极其严格的职业操守和道德准则,世界各主要发达国家相关行业都将CFA作为金融行业操守高水平人员的衡量标准,包括中国在内的投资界专业人士,越来越认识到该资格在职业诚信认证的价值. 我是零基础的上班族一名,艰苦的生活条件让我选择了CFA这条更艰苦的路. 如今终于看到了CFA证书向我走来的身影! 闲话少说,进入主题. 2012年我女儿出生当年CFA