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)这三种选择方法.根据组合数的定 义,我们 ...
随机推荐
- hdu5481 Desiderium
链接 Desiderium 题意 给定n条线段,从中选取若干条,共有2n种选法(因为每一条线段有两种方法:选或者不选). 每一种选法都对应一个长度,也就是所选线段的并集长度. 求这2n种选法长度之和. ...
- 25 uname-用于显示系统信息
uname可显示电脑以及操作系统的相关信息. 语法 uname [-amnrsv][--help][--version] 参数说明: -a或--all 显示全部的信息. -m或--machine 显示 ...
- struts2 spring3.2 hibernate4.1 框架搭建 整合
ssh是企业开发中常遇到的框架组合,现将框架的搭建过程记录下来,以便以后查看.我的搭建过程是,首先struts,然后spring,最后hibernate.struts2的最新版本为2.3.8,我下载的 ...
- C/C++中NULL的涵义
参考:百度知道NULL表示空指针,用于表示一个无效的指针,它的值为0(早期C语言的实现中可能有非0空指针,现在已经不用).对指针置NULL即标记指针无效,避免“野指针”的恶果.NULL在C/C++标准 ...
- Oracle的自增长主键
自增长主键 --首先建一个表TEST create table TEST( NID int PRIMARY KEY, test1 varchar2(20), test2 varchar2(20) ...
- SSM三大框架(转发)
转自:SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis) 使用SSM(Spring.SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基 ...
- 数据库开发基础-SQl Server 控制数据库的服务+数据库的创建与管理(增删改查)
控制数据库的服务: 方法一: 1.Windows+R 打开运行 打开cmd 2.输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据 ...
- 根据位置信息提取 fasta 文件中的序列 -- extract fasta sequence by their position
#!/usr/bin/env python # usages: python extract_seq_by_pos.py input.fasta id_start_end > result.fa ...
- C++ 序列式容器之vector
什么是容器 容器,顾名思义,是用来容放东西的场所.C++容器容放某种数据结构,以利于对数据的搜寻或排序或其他特殊目的.众所周知,常用的数据结构不外乎:数组array, 链表list, 树tree ...
- SQLAlchemy 操作数据库
首先安装 SQLAlchemy install PyMySQL install sqlalchemy 代码: #!/usr/bin/env python # encoding: utf-8 " ...