考前准备
考前的时候一直在复习以前打过的题目,每周五晚集训,训练一套难度差不多为提高的练习。
考前一周
文化课的期中考试,考的不是很好,才排到了班第四(一个级一共 个班),然而出乎意料的是,级排居然是第 名。
考前一天
又是做大巴去考试……一路上都在闲聊,有时聊一下成绩,有时开一下玩笑。更加出乎意料的是,居然有一个机房里的同学更我一样的成绩,一样的排名(指文化课)。一到酒店,就冲凉,然后拍了一个 的模板,然后睡觉……
考前半天
一直在宿舍里玩和复习,不得不说的是广州的饭菜真好吃,难忘的早餐和午餐。
考前一小时
在中山纪念馆里照相,然后在考试机房门口等待考试。被文化课的考试折磨惯了,一点也不紧张……
考场策略
一拿到题目,发现第
题好水啊!立马看其他三题,发现第
题还好,但是后两题好难啊!!!所以五分钟
打完了第一题,然后三十分钟
打完了第二题,又大约二十五分钟
调试对了第二题。然后就一直循环:第三题
想不出正解,换第四题
,第四题
想不出正解,换第三题
。这个循环大概持续了一小时
,突然发现没什么时间了,立马开始骗分!当然今年的骗分不同去年的骗分,今年的骗分运用了一种叫分段骗分的方法。
考后三小时
自估分为
分。然后与同学分享了自己的解法,分享同学们各显神通,除了第一题
都一样之外,每个人对自己剩下三题的把握各有不同。我们把自己的情况与老师分享,老师表示:“第一题好难啊,我都没听过
”嗨……可想而知今年的题目对于我们有多难……根据同学们的反应,我们去KFC
吃了晚餐。
考后一天至出成绩前一天
回归正常的生活,一直没想
的事,直到出成绩前一天,大家忽然沸腾,讨论出成绩没,出成绩没……
出成绩
成绩出来的那一天,我查询了自己的成绩, 分,与自估分无过大出入。问了问同学们,发现自己的成绩好像是全班最高的……
各题原代码
【第一题】:
#include <bits/stdc++.h>
using namespace std;
string s;int ans;
int main(){
cin>>s;
for(int i=0;i<8;i++)
if (s[i]=='1')
ans++;
printf("%d",ans);
return 0;
}
时间复杂度: ,得分 分。
【第二题】:
#include <bits/stdc++.h>
using namespace std;
#define gc getchar()
#define g(c) isdigit(c)
inline int read(){
char c=0;int x=0;bool f=0;
while (!g(c)) f=c=='-',c=gc;
while (g(c)) x=x*10+c-48,c=gc;
return f?-x:x;
}
const int N=100100;
struct node{
int price,times;
bool used;
}q[N];int head,tail,n;
int way[N],price[N],times[N];
inline void read_the_date(){
n=read();
for(int i=1;i<=n;i++){
way[i]=read();
price[i]=read();
times[i]=read();
}
}
long long answer;
inline void calc_answer(){
head=1;tail=0;
for(int i=1;i<=n;i++){
if (way[i]==0){
answer+=price[i];
q[++tail].price=price[i];
q[tail].times=times[i];
q[tail].used=true;
}
else{
while (head<=tail&&q[head].times<times[i]-45) head++;
register bool flag=true;
for(int j=head;j<=tail;j++)
if (q[j].used&&q[j].price>=price[i]){
q[j].used=false;
flag=false;break;
}
if (flag) answer+=price[i];
}
}
}
inline int HPXXZYY(){
read_the_date();
calc_answer();
cout<<answer;
return 0;
}
int main(){
return HPXXZYY();
}
时间复杂度:最好 ,最坏 ,得分 分。
【第三题】:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
int n,m,t,dp[1100];
int a[110][110];
int main(){
// freopen("souvenir.in","r",stdin);
// freopen("souvenir.out","w",stdout);
scanf("%d%d%d",&t,&n,&m);
for(int i=1;i<=t;i++)
for(int j=1;j<=n;j++)
scanf("%d",&a[i][j]);
if (t==1) printf("%d",m);
else if (n==1){
dp[0]=m;
for(int i=1;i<=t;i++){
dp[i]=dp[i-1];
for(int j=1;j<i;j++){
dp[i]=max(dp[i],dp[j-1]/a[j][1]*a[i][1]+dp[j-1]%a[j][1]);
}
}
printf("%d",dp[t]);
}
else if (t==2){
for(int i=1;i<=n;i++)
for(int j=a[1][i];j<=m;j++)
dp[j]=max(dp[j-a[1][i]]+a[2][i],dp[j]);
printf("%d",dp[m]);
}
else printf("9983");
return 0;
}
时间复杂度: ,得分 分。
【第四题】:
#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
bool b[2010][2010];
struct node{
int next,to;
}e[200100];int h[100100],tot;
inline void add(int a,int b){
e[++tot]=(node){h[a],b};h[a]=tot;
e[++tot]=(node){h[b],a};h[b]=tot;
}
bool f[1010][1010];
inline bool check(int s,int L){
if (s==1&&L==0) return true;
if (f[s][L]==false) return false;
if (L==0) return f[s][L]=false;
if (s==1&&L==1) return false;
for(int i=h[s];i;i=e[i].next){
register int to=e[i].to;
if (check(to,L-1))
return true;
}
return f[s][L]=false;
}
int n,m,q,u,v,L;
int main(){
// freopen("work.in","r",stdin);
// freopen("work.out","w",stdout);
scanf("%d%d%d",&n,&m,&q);
for(int i=1;i<=m;i++){
scanf("%d%d",&u,&v);
add(u,v);add(v,u);
b[u][v]=b[v][u]=true;
}
for(int i=1;i<=q;i++){
scanf("%d%d",&u,&L);
if (L==1){
if (b[u][1]) printf("Yes\n");
else printf("No\n");
}
else{
memset(f,true,sizeof(f));
if (check(u,L)) printf("Yes\n");
else printf("No\n");
}
}
return 0;
}
时间复杂度: 我不知道 ,得分 分。
期望
年可能就考提高
了,祝普及
可以
前两题,第三题
拿个
分,第四题
拿个
分这样吧。提高
的话,两天共
吧。加油,不甘落后的你一定可以的!!!