NOIp 0924 水题记
这场貌似是gcd专场?
第一题很有意思,模拟gcd的过程即可。
//0924 candy //by Cydiater //2016.9.24 #include <iostream> #include <cstdio> #include <cstring> #include <string> #include <algorithm> #include <queue> #include <map> #include <ctime> #include <cmath> #include <cstdlib> #include <iomanip> using namespace std; #define ll long long #define up(i,j,n) for(int i=j;i<=n;i++) #define down(i,j,n) for(int i=j;i>=n;i--) #define FILE "candy" ; const ll oo=10000000LL; inline ll read(){ ,f=; ;ch=getchar();} +ch-';ch=getchar();} return x*f; } ll N,M,flag,ans=,cnt=; priority_queue<ll>A,B; namespace solution{ ll gcd(ll a,ll b){ )return a; ans+=a/b*b; return gcd(b,a%b); } void init(){ N=read();M=read();flag=read(); } void slove(){ gcd(max(N,M),min(N,M)); cout<<ans<<endl; ){ up(i,,M)A.push(N); up(i,,N)B.push(M); ){ ||B.size()==)break; if(A.size()>B.size())swap(A,B); ll len=A.size(); up(i,,len){ int num=B.top();B.pop(); int tmp=A.top();A.pop(); )A.push(tmp-num); printf("%d ",num); } } puts(""); } } } int main(){ freopen(FILE".in","r",stdin); freopen(FILE".out","w",stdout); using namespace solution; init(); slove(); ; }
第三题刚开始想到了$O(MN^2)$的算法,不甘心拿40分,也许70分可以用莫队xjb搞搞?
然后没想出来莫队,想出正解辣
其实就是玩玩前缀和什么的。
//0924 gcd //by Cydiater //2016.9.24 #include <iostream> #include <cstring> #include <iomanip> #include <cstdio> #include <cstdlib> #include <string> #include <algorithm> #include <queue> #include <map> #include <ctime> #include <cmath> using namespace std; #define ll long long #define up(i,j,n) for(int i=j;i<=n;i++) #define down(i,j,n) for(int i=j;i>=n;i--) #define FILE "gcd" ; const ll oo=0x3f3f3f3f; ; inline ll read(){ ,f=; ;ch=getchar();} +ch-';ch=getchar();} return x*f; } ll N,g[MAXN],c[MAXN],d[MAXN],gcd[MAXN],cd[MAXN],gc[MAXN],M,ans; char s[MAXN]; namespace solution{ void init(){ scanf(); N=strlen(s+); } void pret(){ memset(g,,,,sizeof(d)); memset(gc,,,,sizeof(gcd)); down(i,N,){ g[i]=g[i+]+(s[i]==:); c[i]=c[i+]+(s[i]==:); d[i]=d[i+]+(s[i]==:); } down(i,N,){ cd[i]=(cd[i+]+(s[i]==))%mod; gc[i]=(gc[i+]+(s[i]==))%mod; } down(i,N,)gcd[i]=(gcd[i+]+(s[i]==))%mod; } void slove(){ M=read(); while(M--){ ll leftt=read(),rightt=read(); if(leftt>rightt)swap(leftt,rightt); ans=(gcd[leftt]-gcd[rightt+]+mod)%mod; ll tmp_gc=(gc[leftt]-gc[rightt+]+mod)%mod; tmp_gc=(tmp_gc-((g[leftt]-g[rightt+])*c[rightt+])%mod+mod)%mod; ans=(ans-(tmp_gc*d[rightt+])%mod+mod)%mod; ans=(ans-((g[leftt]-g[rightt+])*cd[rightt+])%mod+mod)%mod; printf("%d\n",(int)ans); } } } int main(){ freopen(FILE".in","r",stdin); freopen(FILE".out","w",stdout); using namespace solution; init(); pret(); slove(); ; }
T2做到现在很不爽,到现在也就照着标程抄了抄,没理解为什么。
这道题出的很好。
//NOIp 0924 pod //by Cydiater //2016.9.24 #include <iostream> #include <cstring> #include <cstdlib> #include <cstdio> #include <queue> #include <map> #include <ctime> #include <cmath> #include <iomanip> #include <algorithm> #include <string> using namespace std; #define ll long long #define up(i,j,n) for(int i=j;i<=n;i++) #define down(i,j,n) for(int i=j;i>=n;i--) #define FILE "pod" ; const int oo=0x3f3f3f3f; inline int read(){ ,f=; ;ch=getchar();} +ch-';ch=getchar();} return x*f; } ,f[MAXN],f2[MAXN],tol[MAXN]; struct edge{ int x,y,next,v; }e[MAXN<<]; bool OK[MAXN]; namespace solution{ inline void insert(int x,int y,int v){e[++len].next=LINK[x];LINK[x]=len;e[len].y=y;e[len].v=v;e[len].x=x;} ?a:gcd(b,a%b);} int getf(int k){ if(f[k]==k) return k; f[k]=getf(f[k]); return f[k]; } int getf2(int k){ if(f2[k]==k) return k; f2[k]=getf2(f2[k]); return f2[k]; } void merge(int x,int y,int v){ x=getf(x);y=getf(y); )v=gcd(v,tol[x]); )v=gcd(v,tol[y]); tol[x]=v;f[y]=x; } int merge2(int x,int y,int v){ ){ ; f2[getf2(x)]=getf2(y+N); f2[getf2(y)]=getf2(x+N); }else{ ; f2[getf2(x)]=getf2(y); f2[getf2(x+N)]=getf2(y+N); } ; } void init(){ N=read();M=read();Q=read(); memset(tol,,sizeof(tol)); up(i,,N){ f[i]=i;f2[i]=i; f2[i+N]=i+N; } up(i,,M){ int x=read(),y=read(),v=read(); insert(x,y,v);insert(y,x,v); merge(x,y,v); } up(i,,M<<){ int x=e[i].x,y=e[i].y,v=e[i].v; int d=tol[getf(e[i].x)]; ); ; i+=; } } void slove(){ while(Q--){ int x=read(),y=read(),K=read(); if(getf(x)!=getf(y)) puts("NIE");//unconnect else{ int d=gcd(K,tol[getf(x)]); ) puts("); else{ "); else{ ");//same color else printf("%d\n",d); } } } } } } int main(){ freopen(FILE".in","r",stdin); freopen(FILE".out","w",stdout); using namespace solution; init(); slove(); ; }
这场题出的质量相当不错,没有小结辣,滚去上课。
小结
金策大爷出的题就是有一股爆零的节奏。第二题的难度相对第三题偏高。没有考那些太高级的算法,但是就是可以考出区分度,这应该也是NOIp的套路。
NOIp越来越近了,也许真的要开始复习了。
NOIp 0924 水题记的更多相关文章
- 51nod水题记
妈呀51nod已经刷不动了又开始跟bzoj一样总是得看题解了...那么发一下总结吧... 1051:最大子矩阵 #include<cstdio> #include<cstring&g ...
- 日常[splay]:水题记——普通平衡树(死亡调试)
普通平衡树,模板的不能再模板的模板题.我调了两个小时... 早先看yyb大神的blog学习splay,看的风生水起然而没有发现,大神的坑没有填……没有rank操作和k_th操作. 只能自己摸索,问问大 ...
- 日常[splay]:水题记——营业额统计
没错这就是让我深陷splay之中的罪魁祸首,昨天打了一下午结果发现是玄学错误的那个 人生第一棵splay平衡树 题目大意:求一段序列,小于当前元素的最大值和大于当前元素的最小值.从该元素前面的元素找. ...
- NOIp模拟赛 旅游
很神奇的一道题,金策大爷给的题解: 什么叫神犇什么叫蒟蒻? IOI冠军的一句基本相同让我思考了一下午. 看完了题解我就想都没想开始用遍历二分图搞,但是搞到了65分后就总是会WA掉7组. 然后仔细的看了 ...
- 2014-11-3 NOIP模拟赛2
NOIP 2014 水题模拟赛 (请选手务必仔细阅读本页内容) 一.题目概况 中文题目名称 数列 刷漆 排队 英文题目与子目录名 seq paint layout 可执行文件名 seq paint l ...
- NOIP原题 斗地主(20190804)
题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关 系根据牌的数码表示如下:3<4&l ...
- $NOIp$做题记录
虽然去年做了挺多了也写了篇一句话题解了但一年过去也忘得差不多了$kk$ 所以重新来整理下$kk$ $2018(4/6$ [X]积木大赛 大概讲下$O(n)$的数学方法. 我是从分治类比来的$QwQ$. ...
- NOIp2014 解题报告
有史以来第一届面向社会征题的NOIp结束了.最开始以为面向社会征题会很难,但是这是我参加的最水的一次NOIp了. 由于停了两月的课,所以现在正在补文化科目就没时间打代码了.所以所有的题目就均不给出代码 ...
- NOIP2016 D2T1 組合數問題(problem)
题目描述 组合数C(n,m)表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们 ...
随机推荐
- unity3d 音频无缝循环
在我做赛车漂移的时候,漂移的声音断断续续的,搞得我很郁闷 大家可以随便找个音效然后循环播放去仔细听 你会发现当音效播放完成一次之后循环播放第二次时会停顿一下 我做赛车漂移如果中途停顿了体验是非常不好的 ...
- svn1.8 server client eclipse 插件 配置 完全教程
svn毋庸置疑,广受欢迎的版本管理软件,我们这里以1.8.10版本为例 本文分三部分 第一部分,服务器端svn安装与配置 第二部分,eclipse下svn插件安装与配置 第三部分,客户端svn简单介绍 ...
- 53-whereis 查找文件
查找文件 whereis [options] file 参数 file 是whereis需要查找的文件,这些文件属于原始代码,二进制文件或是帮助文件 选项 -b 只查找二进 ...
- ASP.NET配置Ueditor编辑器上传图片路径
1.配置ueditor/editor_config.js文件,将 //图片上传配置区 ,imageUrl:URL+"net/imageUp.ashx" //图片上传提交地址 ,im ...
- SpringMVC学习--springmvc和mybatis整合
简介 springMVC是表现层,service充当业务层,mybatis作为持久层,通过spring将这三层整合起来.如下图: 第一步:整合dao层 mybatis和spring整合,通过sprin ...
- Android延时执行的几种方法
开启新线程 new Thread(new Runnable(){ public void run(){ Thread.sleep(XXXX); handler.sendMessage(); //告诉主 ...
- MVC 基架不支持 Entity Framework 6 或更高版本
MVC 基架不支持 Entity Framework 6 或更高版本.有关详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=276833. PS:新做一个 ...
- 使用redis作为session的存储方式
(1)准备 A. 安装好redis https://github.com/MSOpenTech/redis 注意:下载release版 启动脚本如下: redis-server redis.win ...
- BZOJ 3721: PA2014 Final Bazarek
3721: PA2014 Final Bazarek Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 645 Solved: 261[Submit][ ...
- 【poj1985】 Cow Marathon
http://poj.org/problem?id=1985 (题目链接) 题意 求树上两点间最长距离.题目背景以及输入描述请见poj1984. Solution 树的直径. 代码 // poj198 ...