Day1 T1

签到题,模拟一下随便写就能过。

不过小心像我一样表打错傻逼的调了10min。

  1. #include <algorithm>
  2. #include <iostream>
  3. #include <cstdlib>
  4. #include <cstdio>
  5. using namespace std;
  6. int La=,Lb=,N=;
  7. int xl_a[]={},xl_b[]={};
  8. int check[][]={{,-,,,-},{,,-,,-},{-,,,-,},{-,-,,,},{,,-,-,}};
  9. int main(void)
  10. {
  11. freopen("rps.in","r",stdin);
  12. freopen("rps.out","w",stdout);
  13. scanf("%d%d%d",&N,&La,&Lb);
  14. for(int i=;i<=La;i++)scanf("%d",&xl_a[i]);
  15. for(int i=;i<=Lb;i++)scanf("%d",&xl_b[i]);
  16. int a=,b=,ans_a=,ans_b=;
  17. for(int i=;i<=N;i++)
  18. {
  19. a=xl_a[i%La];
  20. if(!(i%La))a=xl_a[La];
  21. b=xl_b[i%Lb];
  22. if(!(i%Lb))b=xl_b[Lb];
  23. if(check[a][b]==){ans_a++;continue;}
  24. if(check[a][b]!=){ans_b++;;continue;}
  25. }
  26. printf("%d %d",ans_a,ans_b);
  27. return ;
  28. }

T2

没什么难度……不知道为什么能卡当时的我只拿70分。

大概是不知道n个点n-1条边就是树?

最开始写代码的时候没考虑兄弟节点的情况……后面紧急补上去了,还好发现了不然岂不是又得炸。

一涉及到取模我的代码风格就变得乱七八糟。

简述一下,我们对这棵树从1开始dfs,每到一个节点,就先更新答案(和它父亲的父亲)。

然后枚举它的儿子节点,记录两个参数,max_son和tot,max_son是它儿子节点中权值最大的那个,tot是它所有儿子的权值和。

max_son是更新第一个最大值的答案的,tot是更新第二个答案的。

顺便提醒一下,因为题面上说的是有序点对,所以说我们每次更新第二个答案的时候都要记住乘个2……【血泪教训】

  1. #include <algorithm>
  2. #include <iostream>
  3. #include <cstdlib>
  4. #include <cstdio>
  5. using namespace std;
  6. struct lb
  7. {
  8. int nw;
  9. int nxt;
  10. };
  11. lb line[];
  12. int n=,cnt=,val[]={},head[]={};
  13. int fa[]={},ans1=,ans2=;
  14. void add(int f,int t);
  15. void dfs(int nw);
  16. int main(void)
  17. {
  18. freopen("link.in","r",stdin);
  19. freopen("link.out","w",stdout);
  20. scanf("%d",&n);
  21. int a=,b=;
  22. for(int i=;i<=n-;i++)
  23. {
  24. scanf("%d%d",&a,&b);
  25. add(a,b);
  26. add(b,a);
  27. }
  28. for(int i=;i<=n;i++)scanf("%d",&val[i]);
  29. fa[]=;
  30. dfs();
  31. printf("%d %d",ans1,ans2);
  32. return ;
  33. }
  34.  
  35. void add(int f,int t)
  36. {
  37. line[++cnt].nw=t;
  38. line[cnt].nxt=head[f];
  39. head[f]=cnt;
  40. return;
  41. }
  42.  
  43. void dfs(int nw)
  44. {
  45. if(nw>n)return;
  46. if(fa[fa[nw]])
  47. {
  48. ans1=max(ans1,val[nw]*val[fa[fa[nw]]]);
  49. ans2+=val[nw]*val[fa[fa[nw]]]*;
  50. ans2%=;
  51. }
  52. int next=,max_son=,tot=;
  53. for(int i=head[nw];i>;i=line[i].nxt)
  54. {
  55. next=line[i].nw;
  56. if(next==fa[nw])continue;
  57. ans1=max(ans1,val[next]*max_son);
  58. ans2+=(tot%)*val[next]*;
  59. ans2%=;
  60. max_son=max(max_son,val[next]);
  61. tot+=val[next];
  62. tot%=;
  63. fa[next]=nw;
  64. dfs(next);
  65. }
  66. return;
  67. }

T3

我和昨年一样没有长进【不还是多得了五分的】

剩下的都是TLE。

代码风格无论怎么说还是变了一些的。

这题就是个背包,完全=A=,但是我写得丑写不过……

昨年代码↓

  1. #include <iostream>
  2. #include <fstream>
  3. #include <cstdlib>
  4. #include <cstring>
  5. #include <cmath>
  6. using namespace std;
  7. ifstream fin("bird.in");
  8. ofstream fout("bird.out");
  9. bool jz[][]={};//0表示可通行,1表示有管道
  10. int ss[][]={};//0表示点击后上升,1表示向下坠落
  11. int DP[][]={};//DP[i][j]表示在x坐标为i,y坐标为j下最小点击数
  12. bool gd[]={};//记录每一x坐标是否有管道
  13. int Lx=,Ly=,Gds=;
  14. int main(void)
  15. {
  16. fin>>Lx>>Ly>>Gds;
  17. for(int i=;i<Lx;i++)fin>>ss[][i]>>ss[][i];
  18. int Gx=,Up=,Down=;
  19. for(int i=;i<=Gds;i++)
  20. {
  21. fin>>Gx>>Down>>Up;
  22. for(int j=;j<=Down;j++)jz[Gx][j]=true;
  23. for(int j=Ly;j>=Up;j--)jz[Gx][j]=true;
  24. gd[Gx]=true;
  25. }
  26. memset(DP,/,sizeof(DP));
  27. for(int i=;i<=Ly;i++)DP[][i]=;
  28. int ans=0x7fffffff,tgs=,nxt=;
  29. bool pd=false;
  30. for(int i=;i<=Lx;i++)
  31. {
  32. ans=0x7fffffff;
  33. pd=false;
  34. for(int j=;j<=Ly;j++)
  35. {
  36. if(DP[i][j]==)continue;
  37. if(jz[i][j])continue;
  38. pd=true;
  39. if(!jz[i+][j-ss[][i]]&&j-ss[][i]>)//如果不点击下一回合也不会死亡
  40. {
  41. DP[i+][j-ss[][i]]=min(DP[i+][j-ss[][i]],DP[i][j]);
  42. if(DP[i+][j-ss[][i]]<ans)ans=DP[i+][j-ss[][i]];
  43. }
  44. for(int k=;k<=Ly;k++)
  45. {
  46. nxt=k*ss[][i];//点击k次后下一次上升的位置
  47. if(nxt+j>Ly)nxt=Ly-j;
  48. if(jz[i+][j+nxt])continue;
  49. DP[i+][j+nxt]=min(DP[i+][j+nxt],DP[i][j]+k);
  50. if(DP[i+][j+nxt]<ans)ans=DP[i+][j+nxt];
  51. if(nxt==Ly-j)break;
  52. }
  53. }
  54. if(!pd)break;
  55. if(gd[i])tgs++;
  56. }
  57. if(tgs==Gds)fout<<"1\n"<<ans;
  58. else fout<<"0\n"<<tgs;
  59. return ;
  60. }

今年的↓

  1. #include <algorithm>
  2. #include <iostream>
  3. #include <cstdlib>
  4. #include <cstring>
  5. #include <cstdio>
  6. #include <cmath>
  7. using namespace std;
  8. int n=,m=,k=,bef[]={};
  9. int up[]={},down[]={},dp[][]={};
  10. bool check[][]={};
  11. const int INF=;
  12. int main(void)
  13. {
  14. freopen("bird.in","r",stdin);
  15. freopen("bird.out","w",stdout);
  16. scanf("%d%d%d",&n,&m,&k);
  17. for(int i=;i<=n;i++)scanf("%d%d",&up[i],&down[i]);
  18. int a=,b=,c=;
  19. for(int i=;i<=k;i++)
  20. {
  21. scanf("%d%d%d",&a,&b,&c);
  22. for(int j=;j<=b;j++)check[a+][j]=;
  23. for(int j=c;j<=m;j++)check[a+][j]=;
  24. bef[a+]++;
  25. }
  26. for(int i=;i<=n;i++)bef[i]+=bef[i-];
  27. memset(dp,0x7f,sizeof(dp));
  28. for(int i=;i<=m;i++)dp[][i]=;
  29. int u=,d=,mark=,ans=INF,loop=;
  30. for(int i=;i<=n;i++)
  31. {
  32. for(int j=;j<=m;j++)
  33. {
  34. if(dp[i&][j]!=INF&&!check[i][j])
  35. {
  36. mark=i;
  37. loop=max((m-j)/up[i]+,);
  38. for(int k=;k<=loop;k++)
  39. {
  40. u=min(m,j+up[i]*k);
  41. if(!check[i+][u])dp[(i+)&][u]=min(dp[(i+)&][u],dp[i&][j]+k);
  42. if(i==n)ans=min(ans,dp[(i+)&][u]);
  43. }
  44. d=max(,j-down[i]);
  45. if(d==)continue;
  46. if(!check[i+][d])dp[(i+)&][d]=min(dp[(i+)&][d],dp[i&][j]);
  47. if(i==n)ans=min(ans,dp[(i+)&][d]);
  48. }
  49. }
  50. for(int j=;j<=m;j++)dp[i&][j]=INF;
  51. }
  52. if(mark<n)
  53. {
  54. printf("0\n%d",bef[mark]);
  55. return ;
  56. }
  57. printf("1\n%d",ans);
  58. return ;
  59. }

【NOIP2014】Day1题解+代码的更多相关文章

  1. 【NOIP2013】DAY1题解+代码

    T1 傻逼快速幂,敲敲就过了. 我跟你们讲个笑话当时我以为这个数据范围过不了于是想出了求GCD再推规律什么的magic方法中途还咨询了某个学长. 然后怎么想都是不可做. ……直到我发现我昨年的代码一个 ...

  2. 洛谷P1345 [USACO5.4]奶牛的电信Telecowmunication【最小割】分析+题解代码

    洛谷P1345 [USACO5.4]奶牛的电信Telecowmunication[最小割]分析+题解代码 题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流. ...

  3. 洛谷 P2762 太空飞行计划问题 P3410 拍照【最大权闭合子图】题解+代码

    洛谷 P2762 太空飞行计划问题 P3410 拍照[最大权闭合子图]题解+代码 最大权闭合子图 定义: 如果对于一个点集合,其中任何一个点都不能到达此集合以外的点,这就叫做闭合子图.每个点都有一个权 ...

  4. 洛谷P2891 Dining P1402 酒店之王【类二分图匹配】题解+代码

    洛谷P2891 Dining P1402 酒店之王[类二分图匹配]题解+代码 酒店之王 题目描述 XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化.由于很多来住店的旅客有自己喜好的 ...

  5. 洛谷 P2194 HXY烧情侣【Tarjan缩点】 分析+题解代码

    洛谷 P2194 HXY烧情侣[Tarjan缩点] 分析+题解代码 题目描述: 众所周知,HXY已经加入了FFF团.现在她要开始喜(sang)闻(xin)乐(bing)见(kuang)地烧情侣了.这里 ...

  6. 洛谷P2832 行路难 分析+题解代码【玄学最短路】

    洛谷P2832 行路难 分析+题解代码[玄学最短路] 题目背景: 小X来到了山区,领略山林之乐.在他乐以忘忧之时,他突然发现,开学迫在眉睫 题目描述: 山区有n座山.山之间有m条羊肠小道,每条连接两座 ...

  7. 洛谷P1783 海滩防御 分析+题解代码

    洛谷P1783 海滩防御 分析+题解代码 题目描述: WLP同学最近迷上了一款网络联机对战游戏(终于知道为毛JOHNKRAM每天刷洛谷效率那么低了),但是他却为了这个游戏很苦恼,因为他在海边的造船厂和 ...

  8. 洛谷P1854 花店橱窗布置 分析+题解代码

    洛谷P1854 花店橱窗布置 分析+题解代码 蒟蒻的第一道提高+/省选-,纪念一下. 题目描述: 某花店现有F束花,每一束花的品种都不一样,同时至少有同样数量的花瓶,被按顺序摆成一行,花瓶的位置是固定 ...

  9. THUSC2017 Day1题解

    THUSC2017 Day1题解 巧克力 题目描述 "人生就像一盒巧克力,你永远不知道吃到的下一块是什么味道." 明明收到了一大块巧克力,里面有若干小块,排成n行m列.每一小块都有 ...

随机推荐

  1. 关于TD邮件功能不能发到认证邮箱的解决之法

    [原创] 关于TD邮件功能不能发到认证邮箱的解决之法 认证邮箱, 邮件服务器, 用户, 邮件系统 鉴于不少同行询问TD发邮件的问题,今天重新更新一下说明 解决问题的原则如下一.在TD服务器上安装一个邮 ...

  2. asp.net请求响应模型原理随记回顾

    asp.net请求响应模型原理随记回顾: 根据一崇敬的讲师总结:(会存在些错误,大家可以做参考) 1.-当在浏览器输入url后,客户端会将请求根据http协议封装成为http请求报文.并通过主sock ...

  3. beanutils中WrapDynaBean

    public class Emp   { private String  firstName="李";    private String lastName;    public ...

  4. JQuery UI Layout Plug-in布局

    端]使用JQuery UI Layout Plug-in布局   引言 使用JQuery UI Layout Plug-in布局框架实现快速布局,用起来还是挺方便的,稍微研究了一下,就能上手,关于该布 ...

  5. 用Python实现gmail邮箱服务,实现两个邮箱之间的绑定(中)

    这篇博客,主要讲解用Python实现邮箱服务的几个需要学习的模块:E-mail Compotion and Decoding(邮件生成和解析).SMTP.POP.IMAP 如上篇博客所讲,我学习过程参 ...

  6. python学习之路二(字符串,字典,序列和元组)

    # -*- coding: utf-8 -* ''' Created on 2013-7-26 @author: lixingle ''' #!/usr/bin/python import math# ...

  7. Scrum与高效能人士的执行4原则

    Scrum与高效能人士的执行4原则 分享了高效能人士的执行4原则,发现它和Scrum非常相近,可以形成互补. Scrum框架: 高效能人士的执行4原则框架: Scrum与4原则 Sprint Back ...

  8. Make Things Move -- Javascript html5版(二)实现最基本的Sprite类和stage管理对象

    现在这几篇写的都是比较基础的东西,有过相应开发经验的朋友可直接忽略啦. 计算机模拟的动画都是由很多静态的一连串影像(sprite)在一定帧率(fps)内逐帧播放出来的. 对于js来说,我们可以用提供的 ...

  9. Web软件开发工具WebBuilder试用手记

    最近公司在使用WebBuilder做项目开发,感觉很不错. 官方主页在这里:http://www.putdb.com/ 可以看到,这货不仅能使用可视化的方式拖拽出界面,还能直接在页面上完成数据库相关的 ...

  10. LLVM小结

    随笔- 5  文章- 0  评论- 10  LLVM小结   如果说gcc是FSF的传奇,llvm就是Chris Lattner的小清新.当然啦,想具体看看这位四处游山玩水还GPA 4.0的大神和他的 ...