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. poj 2342 Anniversary party_经典树状dp

    题意:Ural大学有n个职员,1~N编号,他们有从属关系,就是说他们关系就像一棵树,父节点就是子节点的直接上司,每个职员有一个快乐指数,现在要开会,职员和职员的直接上司不能同时开会,问怎才能使开会的快 ...

  2. linux内核--进程空间(二)

        内核处理管理本身的内存外,还必须管理用户空间进程的内存.我们称这个内存为进程地址空间,也就是系统中每个用户空间进程所看到的内存.linux操作系统采用虚拟内存技术,因此,系统中的所有进程之间虚 ...

  3. A星算法

    没有采用二叉堆算法优化, 学习了几天终于搞除了一个demo, 这个列子如果点击按钮生成的方块大小不正确,可以先设置下预设调成相应的大小 只能上下左右走   using UnityEngine; usi ...

  4. python urllib基础学习

    # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #使用python创建一个简单的WEB客户端 import urll ...

  5. 如何在已经存在python2的linux环境上安装python3

    最近看到好多人都在问在已经存在python2.7的环境下如何安装python3,于是我决定写下这篇文档,供大家学习参考,希望能够给大家带来帮助 有的人在安装的时候可能会先将python2卸载掉,这个地 ...

  6. Rotate It !!(思维)

    Rotate It !! Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit ...

  7. ECMAScript 6新特性介绍

    箭头函数 箭头函数使用=>语法来简化函数.在语句结构上和C#.Java 8 和 CoffeeScript相似,支持表达式和函数体. . =>`操作符左边为输入的參数.而右边则是进行的操作以 ...

  8. [置顶] 【cocos2d-x入门实战】微信飞机大战之十二:分数的本地存储

    转载请表明地址:http://blog.csdn.net/jackystudio/article/details/12036237 作为一个单机游戏,连分数存储的的功能都没有,让它怎么在单机游戏圈里混 ...

  9. 为项目编写Readme.MD文件

    了解一个项目,恐怕首先都是通过其Readme文件了解信息.如果你以为Readme文件都是随便写写的那你就错了.github,oschina git gitcafe的代码托管平台上的项目的Readme. ...

  10. [HeadFrist-HTMLCSS学习笔记][第一章Web语言:开始了解HTML]

    head title body 元素= 开始标记 + 内容 +结束标记 还能给段落一个变量名 <p id="houseblend"> body </p> s ...