斐波那契

/*
相同颜色的节点与父亲节点的差相等,且是一个小于它的最大斐波那契数
所以降两个点同时减去小与它的最大斐波那契数,直到两点相等
*/
#include<cstdio>
const int maxm=3e5+;
int m;
long long f[]={,};
int main(){
freopen("fibonacci.in","r",stdin);freopen("fibonacci.out","w",stdout);
for(int i=;i<=;i++) f[i]=f[i-]+f[i-];
scanf("%d",&m);
long long a,b;
while(m--){
scanf("%lld%lld",&a,&b);
for(int i=;a!=b;i--){
if(a>f[i]) a-=f[i];
if(b>f[i]) b-=f[i];
}
printf("%lld\n",a);
}
return ;
}

100分

数颜色

#include<iostream>
#include<cstdio>
#define maxn 300010
using namespace std;
int n,m,a[maxn],sum[maxn],pos[maxn],s[][],mx;
bool flag1,flag2;
void work2(){
int op,l,r,x;
while(m--){
scanf("%d",&op);
if(op==){
scanf("%d%d%d",&l,&r,&x);
if(pos[x]>r||pos[x]<l)putchar('');
else putchar('');
putchar('\n');
}
else {
scanf("%d",&x);
swap(a[x],a[x+]);
swap(pos[a[x]],pos[a[x+]]);
}
}
}
void work(){
for(int i=;i<=n;i++){
for(int j=;j<=mx;j++){
if(j==a[i])s[i][j]=s[i-][j]+;
else s[i][j]=s[i-][j];
}
}
int op,l,r,x;
for(int i=;i<=m;i++){
scanf("%d",&op);
if(op==){
scanf("%d%d%d",&l,&r,&x);
int cnt=s[r][x]-s[l-][x];
printf("%d\n",cnt);
}
else {
scanf("%d",&x);
s[x][a[x]]--;
s[x][a[x+]]++;
}
}
}
int main(){
//freopen("Cola.txt","r",stdin);
freopen("color.in","r",stdin);freopen("color.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
mx=max(mx,a[i]);
sum[a[i]]++;
if(sum[a[i]]>)flag2=;
pos[a[i]]=i;
}
if(!flag2){//所有兔子亚瑟都不相同
work2();
return ;
}
if(n<=){work();return ;}
int op,l,r,x;
for(int i=;i<=m;i++){
scanf("%d",&op);
if(op==){
scanf("%d%d%d",&l,&r,&x);
int w=r-l+;
if(w<=n-w){
int cnt=;
for(int j=l;j<=r;j++)if(a[j]==x)cnt++;
printf("%d\n",cnt);
continue;
}
else {
int cnt=;
for(int j=;j<=l;j++)if(a[j]==x)cnt++;
for(int j=r+;j<=n;j++)if(a[j]==x)cnt++;
cnt=sum[x]-cnt;
printf("%d\n",cnt);
}
}
else {
scanf("%d",&x);
swap(a[x],a[x+]);
}
}
return ;
}

30分 暴力

#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
#define maxn 300010
using namespace std;
vector<int>a[maxn];
int n,m,l,r,x;
int pos[maxn];
int main(){
freopen("color.in","r",stdin);freopen("color.out","w",stdout);
//freopen("Cola.txt","r",stdin);
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)scanf("%d",&pos[i]),a[pos[i]].push_back(i);
for(int i=;i<=;i++)sort(a[i].begin(),a[i].end());
for(int i=;i<=m;i++){
int opt;scanf("%d",&opt);
if(opt==){
scanf("%d%d%d",&l,&r,&x);
int ll=,rr=a[x].size()-,ans=-,mid;
while(ll<=rr){
mid=(ll+rr)>>;
if(a[x][mid]>=l)ans=mid,rr=mid-;
else ll=mid+;
}
if(ans==-){printf("0\n");continue;}
ll=,rr=a[x].size()-;int ans2=-;
while(ll<=rr){
int mid=(ll+rr)>>;
if(a[x][mid]<=r)ans2=mid,ll=mid+;
else rr=mid-;
}
if(ans2==-){printf("0\n");continue;}
else printf("%d\n",ans2-ans+);
}
else {
scanf("%d",&x);
if(pos[x]==pos[x+])continue;
else {
a[pos[x]][lower_bound(a[pos[x]].begin(),a[pos[x]].end(),x)-a[pos[x]].begin()]++;
a[pos[x+]][lower_bound(a[pos[x+]].begin(),a[pos[x+]].end(),x+)-a[pos[x+]].begin()]--;
swap(pos[x],pos[x+]);
}
}
}
return ;
}

100分 动态数组+二分答案

分组

#include<iostream>
#include<cstdio>
#include<cmath>
#define maxn 131073
using namespace std;
int n,k,a[maxn],q[maxn],ans=-,cnt,pp[maxn],numm,mid;
bool flag;
bool no(int w){
int ww=sqrt(w);
if(w==ww*ww)return ;
return ;
}
void dfs(int zu,int pos){
if(flag)return;
if(pos==n+&&zu<=mid){
flag=;
return;
}
int num=numm;
int p[];
for(int i=;i<=numm;i++)p[i]=pp[i];
if(zu<mid&&pos!=){
numm=;
pp[++numm]=pos;
q[zu]=pos-;
dfs(zu+,pos+);
if(flag)return;
}
bool ok=;
for(int i=;i<=num;i++)
if(no(a[pos]+a[p[i]])){
ok=;
break;
} if(ok==){
numm=num;for(int i=;i<=numm;i++)pp[i]=p[i];
numm=numm+;
pp[numm]=pos;
dfs(zu,pos+);
if(flag)return;
}
if(flag)return; }
bool check(){
flag=;numm=;
dfs(,);
if(flag)return ;
return ;
}
int main(){
//freopen("Cola.txt","r",stdin);
freopen("division.in","r",stdin);freopen("division.out","w",stdout);
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++)scanf("%d",&a[i]);
if(k==){
int l=,r=n;
while(l<=r){
mid=(l+r)>>;
if(check())ans=mid,r=mid-;
else l=mid+;
}
if(ans!=-){
printf("%d\n",ans);
for(int i=;i<ans;i++)printf("%d\n",q[i]);
return ;
}
return ;
}
printf("1\n\n");
return ;
}

12分 暴力

#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 131073
using namespace std;
int n,m,k;
int a[maxn],b[maxn],f[maxn<<];
bool vis[maxn],dvis[maxn],issqr[maxn<<];
int find(int x){
return f[x]>?(f[x]=find(f[x])):x;
}
void merge(int u,int v){
u=find(u),v=find(v);
if(u!=v){
if(f[u]>f[v])swap(u,v);
f[u]+=f[v];f[v]=u;
}
}
bool check(int u,int v){
int r1=find(u),r2=find(u+maxn);
int s1=find(v),s2=find(v+maxn);
if(r1==s1||r2==s2)return ;
merge(r1,s2);merge(r2,s1);
return ;
}
void work1(){
for(int i=n,j=n;i;){
for(bool flag=;j;j--){
for(int k=;k*k-a[j]<maxn;k++){
if(k*k-a[j]<=)continue;
if(vis[k*k-a[j]]){flag=;break;}
}
if(!flag)break;
vis[a[j]]=;
}
if(!j)break;b[++m]=j;
for(;i>j;i--)vis[a[i]]=;
}
}
void work2(){
memset(f,-,sizeof(f));
for(int i=;i*i<*maxn;i++)issqr[i*i]=;
for(int i=n,j=n;i;){
for(bool flag=;j;j--){
if(vis[a[j]]){
if(issqr[a[j]+a[j]]){
if(dvis[a[j]])break;
for(int k=;k*k-a[j]<maxn;k++){
if(k*k-a[j]<=)continue;
if(vis[k*k-a[j]]&&k*k!=a[j]*){flag=;break;}
}
if(!flag)break;dvis[a[j]]=;
}
}
else {
for(int k=;k*k-a[j]<maxn;k++){
if(k*k-a[j]<=)continue;
if(vis[k*k-a[j]]){
if(check(k*k-a[j],a[j])){flag=;break;}
}
}
if(!flag)break;vis[a[j]]=;
}
}
if(!j)break;b[++m]=j;
for(;i>j;i--)f[a[i]]=f[a[i]+maxn]=-,vis[a[i]]=,dvis[a[i]]=;
}
}
int main(){
//freopen("Cola.txt","r",stdin);
freopen("division.in","r",stdin);freopen("division.out","w",stdout);
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++)scanf("%d",&a[i]);
if(k==)work1();
else work2();
printf("%d\n",m+);
for(int i=m;i;i--)printf("%d ",b[i]);
putchar('\n');
return ;
}

100分 并查集

/*
T1考场上没想出正解来,就打了个暴力,暴力挂了,得到正解发现这题是这么的简单
T2,T3直接练暴力了,T3调了将近一个半小时
这次考试成绩不理想,主要是败在T1了,noip的T1应该是一眼题,这个T1不是
再加上心态不好
考场上总还是不免有一些题想不出正解,但是暴力出错就太可惜了,以后暴力还是要努力写的,尽量不要出错误(不要不屑于手造数据),希望以后能避免类似今天T1的错误
Noip前每次模拟考试出现的失误都有可能反映在正式考试中
切记切记,下不为例 */

小结

2017-10-12 NOIP模拟赛的更多相关文章

  1. 2017 10.25 NOIP模拟赛

    期望得分:100+40+100=240 实际得分:50+40+20=110 T1 start取了min没有用,w(゚Д゚)w    O(≧口≦)O T3 代码3个bug :数组开小了,一个细节没注意, ...

  2. 10.17 NOIP模拟赛

    目录 2018.10.17 NOIP模拟赛 A 咒语curse B 神光light(二分 DP) C 迷宫maze(次短路) 考试代码 B 2018.10.17 NOIP模拟赛 时间:1h15min( ...

  3. 10.16 NOIP模拟赛

    目录 2018.10.16 NOIP模拟赛 A 购物shop B 期望exp(DP 期望 按位计算) C 魔法迷宫maze(状压 暴力) 考试代码 C 2018.10.16 NOIP模拟赛 时间:2h ...

  4. 2018.10.16 NOIP模拟赛解题报告

    心路历程 预计得分:\(100 + 100 + 20 = 220\) 实际得分:\(100 + 100 + 30 = 230\) 辣鸡模拟赛.. T1T2都是一眼题,T3考验卡常数还只有一档暴力分. ...

  5. 2016.10.30 NOIP模拟赛 day2 PM 整理

    满分:300分 直接全部爆零,真的是很坑啊! 10.30的题目+数据:链接:http://pan.baidu.com/s/1jHXLace 密码:i784 T1: 题目中的难点就是每次折叠的点可能应经 ...

  6. 2016.10.30 NOIP模拟赛 day2 AM 整理

    题目+数据:链接:http://pan.baidu.com/s/1gfBg4h1 密码:ho7o 总共得了:130分, 1:100分  2:30分(只会这30分的暴力) 3:0(毫无思路) 虽然不高, ...

  7. 2018.02.12 noip模拟赛T2

    二兵的赌注 Description游戏中,二兵要进入了一家奇怪的赌场.赌场中有n个庄家,每个庄家都可以猜大猜小,猜一次一元钱.每一次开彩前,你都可以到任意个庄家那里下赌注.如果开彩结果是大,你就可以得 ...

  8. 2018.10.12 NOIP模拟 字符处理(模拟)

    传送门 sb模拟,考试跟着sb了90分. 代码

  9. 2017.5.27 NOIP模拟赛(hzwer2014-5-16 NOIP模拟赛)

    期望得分:100+100+60+30=290 实际得分:100+20+60+0=180 当务之急:提高一次正确率 Problem 1 双色球(ball.cpp/c/pas) [题目描述] 机房来了新一 ...

  10. 2017.6.11 NOIP模拟赛

    题目链接: http://files.cnblogs.com/files/TheRoadToTheGold/2017-6.11NOIP%E6%A8%A1%E6%8B%9F%E8%B5%9B.zip 期 ...

随机推荐

  1. 1W字看懂互联网知识经济

    互联网知识经济,发生关键变化的不是知识,而是经济. 今天和大家分享方军老师的新书<付费:互联网知识经济的兴起>.这本书是一个老互联网人看新知识经济,很有意思的视角在于,以互联网的发展为节点 ...

  2. 2013面试C++小结

    2013年我在厦门c++求职小结 1.一般公司出的面试题目中的找错误,都是出自平常公司内部使用过程中出现的真实错误. 比如stl 中erase的使用:详细请见 :http://blog.csdn.ne ...

  3. bzoj-1588 1588: [HNOI2002]营业额统计(BST)

    题目链接: 1588: [HNOI2002]营业额统计 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 13596  Solved: 5049[Submi ...

  4. bison 编译sql的基本知识

    一.bison是干什么的? bison 是一个语法分析器,把用户输入的内容,根绝在.y文件中事先定义好的规则,构建一课语法分析树.(所谓的规则就是,匹配上对应字符之后,执行相应的动作.) 1.一个简单 ...

  5. GridView有用的小方法--2017年2月13日

    原文:http://blog.csdn.net/21aspnet/article/category/285354更多:http://blog.csdn.net/21aspnet/article/cat ...

  6. ACM学习历程—HDU 5023 A Corrupt Mayor's Performance Art(广州赛区网赛)(线段树)

    Problem Description Corrupt governors always find ways to get dirty money. Paint something, then sel ...

  7. Poj 2411 Mondriaan's Dream(压缩矩阵DP)

    一.Description Squares and rectangles fascinated the famous Dutch painter Piet Mondriaan. One night, ...

  8. Java 的 Tuple 元组数据类型

    元组类型,即 Tuple 常在脚本语言中出现,例如 Scala 的 ("Unmi", "china@qq.com", "blahbla"). ...

  9. 用C语言实现中文到unicode码的转换

    转自:  http://blog.csdn.net/qq_21792169/article/details/50379275 源文件用不同的编码方式编写,会导致执行结果不一样 由于本人喜欢用Notep ...

  10. python操作sql server2008 pyodbc

    使用Python通过PyODBC连接数据的注意事项 今天使者用PyODBC连接数据库,试了很久才出来,现把一些心得体会和大家分享! 一.PyODBC的下载地址: http://code.google. ...