这场貌似是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 水题记的更多相关文章

  1. 51nod水题记

    妈呀51nod已经刷不动了又开始跟bzoj一样总是得看题解了...那么发一下总结吧... 1051:最大子矩阵 #include<cstdio> #include<cstring&g ...

  2. 日常[splay]:水题记——普通平衡树(死亡调试)

    普通平衡树,模板的不能再模板的模板题.我调了两个小时... 早先看yyb大神的blog学习splay,看的风生水起然而没有发现,大神的坑没有填……没有rank操作和k_th操作. 只能自己摸索,问问大 ...

  3. 日常[splay]:水题记——营业额统计

    没错这就是让我深陷splay之中的罪魁祸首,昨天打了一下午结果发现是玄学错误的那个 人生第一棵splay平衡树 题目大意:求一段序列,小于当前元素的最大值和大于当前元素的最小值.从该元素前面的元素找. ...

  4. NOIp模拟赛 旅游

    很神奇的一道题,金策大爷给的题解: 什么叫神犇什么叫蒟蒻? IOI冠军的一句基本相同让我思考了一下午. 看完了题解我就想都没想开始用遍历二分图搞,但是搞到了65分后就总是会WA掉7组. 然后仔细的看了 ...

  5. 2014-11-3 NOIP模拟赛2

    NOIP 2014 水题模拟赛 (请选手务必仔细阅读本页内容) 一.题目概况 中文题目名称 数列 刷漆 排队 英文题目与子目录名 seq paint layout 可执行文件名 seq paint l ...

  6. NOIP原题 斗地主(20190804)

    题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关 系根据牌的数码表示如下:3<4&l ...

  7. $NOIp$做题记录

    虽然去年做了挺多了也写了篇一句话题解了但一年过去也忘得差不多了$kk$ 所以重新来整理下$kk$ $2018(4/6$ [X]积木大赛 大概讲下$O(n)$的数学方法. 我是从分治类比来的$QwQ$. ...

  8. NOIp2014 解题报告

    有史以来第一届面向社会征题的NOIp结束了.最开始以为面向社会征题会很难,但是这是我参加的最水的一次NOIp了. 由于停了两月的课,所以现在正在补文化科目就没时间打代码了.所以所有的题目就均不给出代码 ...

  9. NOIP2016 D2T1 組合數問題(problem)

    题目描述 组合数C(n,m)表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们 ...

随机推荐

  1. java并发:线程同步机制之Volatile关键字&原子操作Atomic

    volatile关键字 volatile是一个特殊的修饰符,只有成员变量才能使用它,与Synchronized及ReentrantLock等提供的互斥相比,Synchronized保证了Synchro ...

  2. BroadcoastReceiver之短信到来监听和获取内容

    废话就不说了,新建类继承,然后配置Manifest.xml:如下 <!--需要给一个接收短信的权限 --> <uses-permission android:name="a ...

  3. 为什么要加入<!doctype html>这个文档声明——IE怪异模式

    调试了很久,发现了一个非常细微但又十分重要的问题,又一次我在对于文档声明类型的时候,声明了如下类型 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1 ...

  4. canvas缓动

    通过不断地将与目标的距离和系数相乘来让物体实现远快近缓的运动. 如图所示可以做出缓动效果,具体代码如下 var canvas = document.getElementById("canva ...

  5. ORACLE数据泵使用详解

    来源于:http://blog.sina.com.cn/s/blog_490a0c990100wh4y.html http://blog.csdn.net/jojo52013145/article/d ...

  6. java之自定义回调接口

    本质上为:传递不同的实现的接口实例,执行不同的程序,即有扩展性. 在一个方法中,可以实现一个对象中的接口,实例化该接口,即可完成对不同对象的不同回掉. 在原有类中,调用接口中的方法,根据不同的接口实例 ...

  7. zabbix监控网络的出入口流量

    首先我们登录到zabbix 点击配置---->模板-->Template OS Linux 下的监控项 点击右上角的添加监控项目 我们的服务器是在Ucloud上的,我们的网卡名称为eth0 ...

  8. 作业4.5-2用for循环打印菱形

    package lx; public class lx { public static void main(String[] args) { for(int i = 1;i <= 10 ;i++ ...

  9. iOS不得姐项目--封装状态栏指示器(UIWindow实现)

    一.头文件 #import <UIKit/UIKit.h> @interface ChaosStatusBarHUD : NSObject /** 显示成功信息 */ + (void)sh ...

  10. git 查看生成对象

    1. find .   查看目录中所有对象 2. find .git/objects 查看所有对象 3. git cat-file -p 散列值  输出文件内容