码迷,mamicode.com
首页 > 其他好文 > 详细

20160827考试总结

时间:2016-08-27 19:22:37      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:

这次试题预期是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 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 "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 }
View Code

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 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 "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 }
View Code

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 }
View Code

 

我的目标在我当前的实力之上,而我会时不时出现实力以内的失误,这是很可怕的。考试的节奏现在已经控制的差不多了,我还需要投入更多的时间在自身能力上。一切以失误为失败的借口都是实力不够的虚荣心作祟。

20160827考试总结

标签:

原文地址:http://www.cnblogs.com/Cydiater/p/5813594.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!