noip总结

经过七周的停课,我们终于迎来了期盼已久的noip考试。在这一次的noip考试中,我们经历了很多,也收获了很多。当然这一次考试中也有很多值得总结的地方,特写此总结。

这一次考试考得还不错,其实有一部分运气的存在,bird本来应该只有30分的,莫名其妙的拿了60分。但不要在意这些细节。

第一天,第一二题都还是比较水,也很快的做了出来。第三题先写了一个正确的70分暴力,然后第二题的对拍,没拍出错就交了。第一题真心不会写对拍。然后开始写第三题的错误的30分正解。比较naive。

第二天,第一题二维前缀和正解,没发现暴力也能过,拍了很久发现datamaker写错了,第二题水水的bfs,没什么好说的。第三题,考的是骗分选手的自我修养,第一次写20hash,→_→,70分在意料之中。

总体来说,530也算是发挥了自己应有的水平。如果bird不写错,当然就更好了。和第一名,省选差了20分啊→_→,还是可以接受的,吧。

后附代码。

 #include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int N,Na,Nb;
int xx[][];
int a[],b[];
int ans1,ans2;
int main()
{
freopen("rps.in","r",stdin);
freopen("rps.out","w",stdout);
xx[][]=;
xx[][]=;
xx[][]=;
xx[][]=;
xx[][]=;
xx[][]=;
xx[][]=;
xx[][]=;
xx[][]=;
xx[][]=;
xx[][]=;
xx[][]=;
xx[][]=;
xx[][]=;
xx[][]=;
xx[][]=;
xx[][]=;
xx[][]=;
xx[][]=;
xx[][]=;
xx[][]=;
xx[][]=;
xx[][]=;
xx[][]=;
xx[][]=;
scanf("%d%d%d",&N,&Na,&Nb);
for(int i=;i<Na;i++)
scanf("%d",&a[i]);
for(int i=;i<Nb;i++)
scanf("%d",&b[i]);
for(int i=;i<N;i++)
{
ans1+=xx[a[i%Na]][b[i%Nb]];
ans2+=xx[b[i%Nb]][a[i%Na]];
}
printf("%d %d\n",ans1,ans2);
}

D1T1

 
 #include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
struct JackSlowFuck
{
int from,to,next;
}Fu[];
int head[];
struct node
{
int w,mx,sum,pfs,ans;
}nd[];
int nn;
void addedge(int f,int t)
{
++nn;
Fu[nn].from=f;
Fu[nn].to=t;
Fu[nn].next=head[f];
head[f]=nn;
}
priority_queue <int> Q;
void dfs(int now,int from)
{ while(!Q.empty()) Q.pop();
for(int k=head[now];k;k=Fu[k].next)
if(Fu[k].to!=from)
dfs(Fu[k].to,now);
while(!Q.empty()) Q.pop();
Q.push();
Q.push();
Q.push(nd[from].w);
nd[now].sum=(nd[now].sum+nd[from].w)%;
nd[now].pfs=(nd[now].pfs+(nd[from].w*nd[from].w)%)%;
for(int k=head[now];k;k=Fu[k].next)
if(Fu[k].to!=from)
{
Q.push(nd[Fu[k].to].w);
nd[now].sum=(nd[now].sum+nd[Fu[k].to].w)%;
nd[now].pfs=(nd[now].pfs+(nd[Fu[k].to].w*nd[Fu[k].to].w)%)%;
nd[now].ans=(nd[now].ans+nd[Fu[k].to].ans)%;
}
nd[now].mx=Q.top();
Q.pop();
nd[now].mx*=Q.top();
nd[now].ans=(nd[now].ans+((nd[now].sum*nd[now].sum)%-nd[now].pfs%+)%)%;
while(!Q.empty()) Q.pop();
}
int N;
int f,t;
int maxx;
int main()
{
freopen("link.in","r",stdin);
freopen("link.out","w",stdout);
scanf("%d",&N);
for(int i=;i<N;i++)
{
scanf("%d%d",&f,&t);
addedge(f,t);
addedge(t,f);
}
nd[].w=;
for(int i=;i<=N;i++)
scanf("%d",&nd[i].w);
dfs(,);
maxx=nd[].mx;
for(int i=;i<=N;i++)
maxx=max(maxx,nd[i].mx);
printf("%d %d\n",maxx,nd[].ans);
}

D1T2

 
 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
long long dp[][];
int mx=;
int N,M,K;
struct JackSlowFuck
{
int X,Y;
}nd[];
struct line
{
int P,L,H;
}ln[];
bool cmp(line a,line b)
{
return a.P<b.P;
}
long long ans;
int L,H;
int l,r;
int nn,k;
#ifdef WIN32
#define LL "%I64d"
#else
#define LL "%lld"
#endif
int main()
{
freopen("bird.in","r",stdin);
freopen("bird.out","w",stdout);
memset(dp,-,sizeof(dp));
scanf("%d%d%d",&N,&M,&K);
for(int i=;i<=M;i++)
dp[][i]=;
for(int i=;i<N;i++)
scanf("%d%d",&nd[i].X,&nd[i].Y);
for(int i=;i<K;i++)
scanf("%d%d%d",&ln[i].P,&ln[i].L,&ln[i].H);
sort(ln,ln+K,cmp);
for(int i=;i<N;i++)
{
L=,H=M;
l=,r=M;
while(nn<K&&ln[nn].P<i+) nn++;
if(ln[nn].P==i+) L=ln[nn].L,H=ln[nn].H;
if(nn>&&ln[nn-].P==i) l=ln[nn-].L+,r=ln[nn-].H-;
for(int j=l;j<=r;j++)
if(~dp[i&][j])
{
mx=max(mx,nn);
k=;
if(j-nd[i].Y>L)
if(dp[(i+)&][j-nd[i].Y]==-||dp[(i+)&][j-nd[i].Y]>dp[i&][j])
dp[(i+)&][j-nd[i].Y]=dp[i&][j];
while(k*nd[i].X+j<L) k++;
while(k*nd[i].X+j<H)
{
if(dp[(i+)&][k*nd[i].X+j]==-||dp[(i+)&][k*nd[i].X+j]>dp[i&][j]+k)
dp[(i+)&][k*nd[i].X+j]=dp[i&][j]+k;
else
break;
k++;
} if(k*nd[i].X+j>=M&&ln[nn].P!=i+&&(dp[(i+)&][M]==-||dp[(i+)&][M]>dp[i&][j]+k))
dp[(i+)&][M]=dp[i&][j]+k;
dp[i&][j]=-;
}
}
int flags=;
ans=1000000000000000000LL;
for(int i=;i<=M;i++)
if(~dp[N&][i])
{
flags=;
ans=min(ans,dp[N&][i]);
}
if(flags)
printf("%d\n" LL "\n",flags,ans);
else
printf("%d\n%d\n",flags,mx);
}

D1T3

 
 #include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int dp[][];
int a[][];
int d,N;
int x,y,k;
int ans,mx;
int main()
{
freopen("wireless.in","r",stdin);
freopen("wireless.out","w",stdout);
memset(a,,sizeof(a));
memset(dp,,sizeof(dp));
scanf("%d%d",&d,&N);
for(int i=;i<=N;i++)
{
scanf("%d%d%d",&x,&y,&k);
a[x+][y+]+=k;
}
for(int i=;i<=;i++)
for(int j=;j<=;j++)
dp[i][j]=a[i][j]+dp[i-][j]+dp[i][j-]-dp[i-][j-];
ans=;
mx=;
for(int i=;i<=;i++)
for(int j=;j<=;j++)
{
if(dp[min(i+d,)][min(j+d,)]-dp[max(i-d-,)][min(j+d,)]-dp[min(i+d,)][max(j-d-,)]+dp[max(i-d-,)][max(j-d-,)]>mx)
mx=dp[min(i+d,)][min(j+d,)]-dp[max(i-d-,)][min(j+d,)]-dp[min(i+d,)][max(j-d-,)]+dp[max(i-d-,)][max(j-d-,)]; } for(int i=;i<=;i++)
for(int j=;j<=;j++)
{
if(dp[min(i+d,)][min(j+d,)]-dp[max(i-d-,)][min(j+d,)]-dp[min(i+d,)][max(j-d-,)]+dp[max(i-d-,)][max(j-d-,)]==mx)
ans++;
}
printf("%d %d\n",ans,mx);
}

D2T1

 
 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
int N,M;
const int INF=0x3f3f3f3f;
struct JackSlowFuck
{
int from,to,len,next;
}Fu[];
int head[],nn;
int dis[];
bool in[];
queue <int> Q;
void spfa(int s)
{
while(!Q.empty()) Q.pop();
memset(dis,0x3f,sizeof(dis));
dis[s]=;
Q.push(s);
in[s]=true;
while(!Q.empty())
{
int now=Q.front();
in[now]=false;
Q.pop();
for(int k=head[now];k;k=Fu[k].next)
if(dis[Fu[k].to]>dis[now]+Fu[k].len)
{
dis[Fu[k].to]=dis[now]+Fu[k].len;
if(!in[Fu[k].to])
Q.push(Fu[k].to),in[Fu[k].to]=true;
}
}
}
void addedge(int f,int t)
{
++nn;
Fu[nn].next=head[f];
head[f]=nn;
Fu[nn].len=;
Fu[nn].from=f;
Fu[nn].to=t;
}
int t,f;
int s,e;
int main()
{
freopen("road.in","r",stdin);
freopen("road.out","w",stdout);
scanf("%d%d",&N,&M);
for(int i=;i<=M;i++)
{
scanf("%d%d",&t,&f);
addedge(f,t);
}
scanf("%d%d",&s,&e);
memset(in,,sizeof(in));
spfa(e);
if(dis[s]==INF)
{
printf("-1\n");
return ;
}
else
{
memset(in,,sizeof(in));
for(int i=;i<=N;i++)
if(dis[i]==INF)
{
for(int k=head[i];k;k=Fu[k].next)
in[Fu[k].to]=true;
}
if(in[s])
{
printf("-1\n");
return ;
}
spfa(e);
if(dis[s]==INF)
{
printf("-1\n");
return ;
}
else
{
printf("%d\n",dis[s]);
} }
}

D2T2

 
 #include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int MOD[]={,,,,,,,,,,,,,,,,,,,,};
long long N,M;
long long a[][];
char x[];
int len;
bool flags;
long long now=;
long long ans=;
int b[],nn;
int main()
{
freopen("equation.in","r",stdin);
freopen("equation.out","w",stdout);
cin>>N>>M;
for(int i=;i<=N;i++)
{
scanf("%s",x+);
len=strlen(x+);
flags=false;
if(x[]=='-')
flags=true;
for(int j=+flags;j<=len;j++)
{
for(int t=;t<=;t++)
a[t][i]=(a[t][i]*)%MOD[t]+x[j]-'';
}
if(flags)
{
for(int t=;t<=;t++)
a[t][i]=-a[t][i];
}
}
for(int i=;i<=M;i++)
{
for(int t=;t<=;t++)
{
flags=false;
now=;
ans=a[t][];
for(int j=;j<=N;j++)
{
now=(now*i)%MOD[t];
ans=(ans+(a[t][j]*now)%MOD[t])%MOD[t];
}
if(ans)
{
flags=true;
break;
}
}
if(!flags)
b[++nn]=i;
}
printf("%d\n",nn);
for(int i=;i<=nn;i++)
printf("%d\n",b[i]);
}

D2T3

noip2014总结的更多相关文章

  1. NOIP2014初赛分数线及金华上线名单

    NOIP2014初赛分数线及金华上线名单 分数线:提高组81.5,普及组93 这分数线还能再高些吗?悲催的浙江. 金华上线普及组名单: 地市 姓名 学校 年级 参赛语种 成绩 金华 成浩鹏 稠州丹溪校 ...

  2. [NOIP2014]寻找道路(图论)

    题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点连通. 2 .在满足条 ...

  3. vijos1907[noip2014]飞扬的小鸟(完全背包)

    描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告 ...

  4. [NOIP2014] 提高组 洛谷P2038 无线网络发射器选址

    题目描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的129 条东西向街道和129 条南北向街道所形成的网格状,并且相邻 ...

  5. CCF关于NOIP2014复赛报名的通知

    CCF关于NOIP2014复赛报名的通知   CCF NOIP2014复赛全部实行网上注册.报名.未通过网上报名的选手将不具备参赛和申诉资格. 系统注册须知: NOIP2014复赛注册时间:2014年 ...

  6. NOIP2014感想

    NOIP2014转眼就结束了,让人不由感慨时间之快,仿佛几天前还是暑假,几天后就已经坐在考场里了. 从暑假8月开始写博客,发了一些解题报告什么的,但这篇文章不再会是“题目大意 & 解题过程 & ...

  7. 全国信息学奥林匹克联赛 ( NOIP2014) 复赛 模拟题 Day1 长乐一中

    题目名称 正确答案  序列问题 长途旅行 英文名称 answer sequence travel 输入文件名 answer.in sequence.in travel.in 输出文件名 answer. ...

  8. NOIP2014 行记

    不知道OI是啥或者信息学竞赛是啥的可以按`Ctrl+W`. <del>很早开始写的..准备出分之后再发布.</del> 谨以此文纪念我信息学竞赛的第一次正式考试. 背景音乐底部 ...

  9. bzoj 3751: [NOIP2014]解方程 同余系枚举

    3.解方程(equation.cpp/c/pas)[问题描述]已知多项式方程:a ! + a ! x + a ! x ! + ⋯ + a ! x ! = 0求这个方程在[1, m]内的整数解(n 和 ...

  10. [NOIP2014][DP]飞扬的小鸟

    [NOIP2014]飞扬的小鸟 ——!x^n+y^n=z^n 题目描述: Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画 ...

随机推荐

  1. Merge Sorted Array 解答

    Question Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array ...

  2. 利用智能手机(Android)追踪一块磁铁(三)

    更新磁铁追踪算法的源代码,Android Studio项目工程 github地址:https://github.com/amazingyyc/MagnetLocate 说明:将磁铁的位置信息封装成消息 ...

  3. JavaScript - 基于原型的面向对象

    JavaScript - 基于原型的面向对象 1. 引言 JavaScript 是一种基于原型的面向对象语言,而不是基于类的!!! 基于类的面向对象语言,比如 Java,是构建在两个不同实体的概念之上 ...

  4. JUnit三分钟教程 ---- 实际应用

    JUnit三分钟教程 ---- 实际应用 摘自http://lavasoft.blog.51cto.com/62575/65775   接上文"JUnit三分钟教程 ---- 快速起步&qu ...

  5. 移动支付之智能IC卡与Android手机进行NFC通信

    本文来自http://blog.csdn.net/hellogv/ .引用必须注明出处.        眼下常见的智能IC卡执行着JavaCard虚拟机.智能IC卡上能够执行由精简后的Java语言编写 ...

  6. 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6621566 上一篇文章Android进程间通信 ...

  7. ASP.NET 后台下载文件方法

    void DownLoadFile(string fileName) { string filePath = Server.MapPath(fileName);//路径 //以字符流的形式下载文件 F ...

  8. HttpURLConnection 下载代码

    private int downloadFile(final String apkurl, final String apkname) { Log.e(LOGTAG, "downloadAp ...

  9. MVC自我学起之MVCMusic开发中遇到问题:musicstore edit方法出错的原因和解决方法

    错误提示: 存储区更新.插入或删除语句影响到了意外的行数(0).实体在加载后可能被修改或删除.刷新 ObjectStateManager 项. 解决案: 1.在view中或model中增加隐藏id 1 ...

  10. UIStepper UISlider UISwitch UITextField 基本控件

    1.UIStepper 步进控件 必掌握 1.重要属性: .value 初始值 .maximumValue 最大值 .minimumValue 最小值 .stepValue 间隔 2.常用事件: Va ...