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)这三种选择方法.根据组合数的定 义,我们 ...
随机推荐
- 准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure
yu Code 15 Comments 机器学习(ML),自然语言处理(NLP),信息检索(IR)等领域,评估(Evaluation)是一个必要的 工作,而其评价指标往往有如下几点:准确率(Accu ...
- JPEG格式
Jpg文件格式[参考] 微处理机中的存放顺序有正序(big endian)和逆序(little endian)之分.正序存放就是高字节存放在前低字节在后,而逆序存放就是低字节在前高字节在后.例如,十六 ...
- javascript代码片段
DOMReady函数,只要DOM结构加载完成即可,不必等待所有资源加载完成,节约时间,"DOMContentLoaded"在H5中被标准化 var DOMReady=functio ...
- clean之后R文件消失
首先确定你的SDK是新的. 其次接下来检查你的.xml文件,文件名不能大写. 如果xml文件太多 ,那么clean一下你的项目,这时候注意看Console的提示. Console会提示你xml文件错误 ...
- Android判断Touch为滑动事件还是操作控件
Android判断Touch为滑动事件还是操作控件 因为在项目中要判断WebView是否处于滚动状态,但它不像ListView有onScrollStateChanged方法来监听,要实现就得手动监听它 ...
- ASP.NET MVC 5 入门教程 (4) View和ViewBag
文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-get-started-view.html 上一节:ASP.NET MVC 5 入门教 ...
- zabbix 用 LLD 完全自动化监控 Oracle
文章转载自:http://mp.weixin.qq.com/s?__biz=MzA3MzYwNjQ3NA==&mid=2651296856&idx=1&sn=2bdf78071 ...
- Linux_cheat命令安装和使用
1.安装python yum -y install python 2.安装epel源.安装pip yum install epel-release -y yum install python ...
- dede使用方法---用js让当前导航高亮显示
当前导航高亮显示能够提升用户体验,我也知道,大家在网上搜dede让当前导航高亮显示的方法一抓一大把,但是,并不一定适合自己的需求.就像我的需求一样,导航有个二级导航,然后需要做到让当前导航高亮显示.我 ...
- Oracle数据库中调用Java类开发存储过程、函数的方法
Oracle数据库中调用Java类开发存储过程.函数的方法 时间:2014年12月24日 浏览:5538次 oracle数据库的开发非常灵活,不仅支持最基本的SQL,而且还提供了独有的PL/SQL, ...