首页 > 代码库 > 20160827考试总结
20160827考试总结
这次试题预期是NOIp提高难度的,除去T0没写外其他感觉还可以,不写T0一个原因是想按照NOIp的考试模式来,不打乱节奏,另一个是第一题不是一眼题,感觉需要时间思考。所以就只写了其他三道题。
T1:
之前考过的一道题,去年这个时候写了个复杂度爆炸的,这次换了个讨巧的写法,比较满意。没什么好说的。
1 //NOIp car 2 //by Cydiater 3 //2016.8.27 4 #include <iostream> 5 #include <cstring> 6 #include <string> 7 #include <cstdio> 8 #include <cstdlib> 9 #include <iomanip>10 #include <ctime>11 #include <algorithm>12 #include <queue>13 #include <cmath>14 #include <string>15 using namespace std;16 #define ll long long17 #define up(i,j,n) for(int i=j;i<=n;i++)18 #define down(i,j,n) for(int i=j;i>=n;i--)19 #define FILE "car"20 const int MAXN=1e5;21 const int oo=0x3f3f3f3f;22 inline int read(){23 char ch=getchar();int x=0,f=1;24 while(ch>‘9‘||ch<‘0‘){if(ch==‘-‘)f=-1;ch=getchar();}25 while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();}26 return x*f;27 }28 int N,M,D,L,sp[MAXN],cnt=0,count[MAXN],num,ans=0;29 priority_queue<int>q;30 namespace solution{31 void init(){32 N=read();M=read();D=read();L=read();33 up(i,1,N)sp[i]=read();34 sort(sp+1,sp+N+1);35 }36 void slove(){37 up(i,1,M)q.push(0);38 up(i,1,N){39 int num=q.top();q.pop();40 num=-num;41 if(sp[i]-num>=L){42 num+=D;43 ans++;44 }45 num=-num;46 q.push(num);47 }48 }49 void output(){50 cout<<ans<<endl;51 }52 }53 int main(){54 //freopen("input.in","r",stdin);55 freopen(FILE".in","r",stdin);56 freopen(FILE".out","w",stdout);57 using namespace solution;58 init();59 slove();60 output();61 return 0;62 }
T2:
整场考试最失败的一道题,不是因为没写出来,是因为我已经很明显的知道这道题的策略是什么了,但是最后还是因为忽略了一些情况导致WA掉了,放在T2这道贪心其实还是简单了点。这类题在NOIp的考场上似乎已经很少见了。
1 //NOIp 0827 T3 2 //by Cydiater 3 //2016.8.27 4 #include <iostream> 5 #include <cstring> 6 #include <ctime> 7 #include <cmath> 8 #include <cstdlib> 9 #include <cstring>10 #include <string>11 #include <algorithm>12 #include <queue>13 #include <map>14 #include <iomanip>15 using namespace std;16 #define ll long long17 #define up(i,j,n) for(int i=j;i<=n;i++)18 #define down(i,j,n) for(int i=j;i>=n;i--)19 #define FILE "sort"20 const int MAXN=1e5+5;21 const int oo=0x3f3f3f3f;22 inline int read(){23 char ch=getchar();int x=0,f=1;24 while(ch>‘9‘||ch<‘0‘){if(ch==‘-‘)f=-1;ch=getchar();}25 while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();}26 return x*f;27 }28 map<int,int>m;29 int N,a[MAXN],tmp[MAXN],cnt=0,ans=0,Count[MAXN];30 namespace solution{31 void init(){32 N=read();33 up(i,1,N){34 a[i]=read();35 tmp[i]=a[i];36 }37 memset(Count,0,sizeof(Count));38 sort(tmp+1,tmp+N+1);39 up(i,1,N)m[tmp[i]]=++cnt;40 up(i,1,N)a[i]=m[a[i]];41 }42 void slove(){43 up(i,1,N){44 Count[a[i]]=Count[a[i]-1]+1;45 ans=max(ans,Count[a[i]]);46 }47 }48 void output(){49 cout<<N-ans<<endl;50 }51 }52 int main(){53 //freopen("input.in","r",stdin);54 freopen(FILE".in","r",stdin);55 freopen(FILE".out","w",stdout);56 using namespace solution;57 init();58 slove();59 output();60 return 0;61 }
T3:
相同类型的题做过无数遍了,虽然考场上A掉了,但是后来查了一下代码发现其实有些问题考虑的太多了,本质上还是没有多加思考。myy的格言
Think twice,code once
在比赛的时候一些题还是要多想想再去实现,可以避免掉很多的错误。
1 //NOIp 0827 T4 2 //by Cydiater 3 //2016.8.27 4 #include <iostream> 5 #include <cstring> 6 #include <string> 7 #include <algorithm> 8 #include <queue> 9 #include <map> 10 #include <ctime> 11 #include <cmath> 12 #include <iomanip> 13 #include <cstdlib> 14 #include <cstdio> 15 using namespace std; 16 #define ll long long 17 #define up(i,j,n) for(int i=j;i<=n;i++) 18 #define down(i,j,n) for(int i=j;i>=n;i--) 19 #define FILE "salenet" 20 const int MAXN=1e5+5;; 21 const int oo=0x3f3f3f3f; 22 inline int read(){ 23 char ch=getchar();int x=0,f=1; 24 while(ch>‘9‘||ch<‘0‘){if(ch==‘-‘)f=-1;ch=getchar();} 25 while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();} 26 return x*f; 27 } 28 int N,P,M,LINK[MAXN],len=0,V[MAXN],Value[MAXN],dfn[MAXN],low[MAXN],stack[MAXN],top=0,dfs_clock=0,group[MAXN],group_num=0,Link[MAXN],LEN=0,du[MAXN],q[MAXN],head,tail,final_du[MAXN],ans=0; 29 bool vis[MAXN]; 30 struct edge{ 31 int x,y,next; 32 }e[MAXN],E[MAXN]; 33 namespace solution{ 34 inline void insert(int x,int y){e[++len].next=LINK[x];LINK[x]=len;e[len].y=y;e[len].x=x;} 35 inline void Insert(int x,int y){E[++LEN].next=Link[x];Link[x]=LEN;E[LEN].y=y;E[LEN].x=x;} 36 void init(){ 37 N=read();P=read(); 38 up(i,1,N)Value[i]=V[i]=oo; 39 up(i,1,P){ 40 int node=read(); 41 V[node]=read(); 42 } 43 M=read(); 44 up(i,1,M){ 45 int x=read(),y=read(); 46 insert(x,y); 47 } 48 } 49 void tarjan(int node){ 50 vis[node]=1;stack[++top]=node; 51 low[node]=dfn[node]=++dfs_clock; 52 for(int i=LINK[node];i;i=e[i].next) 53 if(!dfn[e[i].y]){ 54 tarjan(e[i].y); 55 low[node]=min(low[node],low[e[i].y]); 56 }else if(vis[e[i].y]) low[node]=min(low[node],dfn[e[i].y]); 57 if(dfn[node]==low[node]){ 58 group_num++;int tmp; 59 do{ 60 tmp=stack[top--]; 61 vis[tmp]=0; 62 group[tmp]=group_num; 63 Value[group_num]=min(Value[group_num],V[tmp]); 64 }while(tmp!=node); 65 } 66 } 67 void Tree_DP(){ 68 head=1;tail=0; 69 up(i,1,group_num)if(du[i]==0)q[++tail]=i; 70 for(;head<=tail;head++){ 71 int node=q[head],tmp=0; 72 bool flag=0; 73 for(int i=Link[node];i;i=E[i].next) 74 if(du[E[i].y]==0){tmp+=Value[E[i].y];flag=1;} 75 else if(--du[E[i].y]==0){ 76 q[++tail]=E[i].y; 77 } 78 if(Value[node]==oo||!flag)continue; 79 Value[node]=min(Value[node],tmp); 80 } 81 } 82 void slove(){ 83 //pre build 84 memset(dfn,0,sizeof(dfn)); 85 memset(vis,0,sizeof(vis)); 86 memset(du,0,sizeof(du)); 87 memset(final_du,0,sizeof(final_du)); 88 up(i,1,N)if(!dfn[i])tarjan(i); 89 up(i,1,len){ 90 int x=e[i].x,y=e[i].y; 91 if(group[x]!=group[y]){ 92 Insert(group[x],group[y]); 93 final_du[group[y]]++;du[group[x]]++; 94 } 95 } 96 Tree_DP();/*work for lowest cost*/ 97 } 98 void output(){ 99 up(i,1,N)if(final_du[group[i]]==0&&Value[group[i]]>=oo){100 puts("NO");101 cout<<i<<endl;102 return;103 }104 up(i,1,group_num)if(final_du[i]==0)ans+=Value[i];105 puts("YES");106 cout<<ans<<endl;107 }108 }109 int main(){110 freopen(FILE".in","r",stdin);111 freopen(FILE".out","w",stdout);112 //freopen("input.in","r",stdin);113 using namespace solution;114 init();115 slove();116 output();117 return 0;118 }
我的目标在我当前的实力之上,而我会时不时出现实力以内的失误,这是很可怕的。考试的节奏现在已经控制的差不多了,我还需要投入更多的时间在自身能力上。一切以失误为失败的借口都是实力不够的虚荣心作祟。
20160827考试总结
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。