2016.10.30 NOIP模拟赛 day2 PM 整理
满分:300分
直接全部爆零,真的是很坑啊!
10.30的题目+数据:链接:http://pan.baidu.com/s/1jHXLace 密码:i784
T1:
题目中的难点就是每次折叠的点可能应经被覆盖了,我的做法是递归去推出它现在在哪个位置,不仅超时,而且答案错误。
也曾想过用数组去存下它当前的位置,但是被10^18的数据吓到了。
正解:并不是所有的坐标都有用,仅仅是那m个将要用到的点有用,所以每次折叠,就只对之后的有用的k个点进行更新,这样就行了。
时间复杂度O(m^2) 不会超时的。
#include<iostream>
using namespace std;
#include<cstdio>
#define M 3004
typedef long long ll;
ll pos[M];
ll n,m;
int main()
{
freopen("he.in","r",stdin);
freopen("he.out","w",stdout);
cin>>n>>m;
for(int i=;i<=m;++i)
cin>>pos[i];
ll l=,r=n;
for(int i=;i<=m;++i)
{
ll x=pos[i];
if(*x>=(l+r))
{
r=x;
for(int j=i+;j<=m;++j)
if(pos[j]>x) pos[j]=x+x-pos[j];
}
else
{
l=x;
for(int j=i+;j<=m;++j)
if(pos[j]<x) pos[j]=x+x-pos[j];
}
}
cout<<r-l;
fclose(stdin);
fclose(stdout);
return ;
}
T2:相信大牛们一眼就看出了这道题目用BSGS算法。注明:该算法我不会。
只会50分。
/*
扩展欧几里得模板打错了。 */
#include<iostream>
#include<cstdio>
using namespace std;
typedef long long ll;
void exgcd(ll a,ll b,ll &x,ll &y,ll &gc)
{
if(!b)
{
x=;y=;
gc=a;
return;
}
exgcd(b,a%b,y,x,gc);
y-=(a/b)*x;
}
ll read()
{
ll ret=,ff=;
char s1=getchar();
while(s1<''||s1>'')
{
if(s1=='-') ff=-;
s1=getchar();
}
while(s1>=''&&s1<='')
{
ret=ret*+s1-'';
s1=getchar();
}
return ret*ff; }
int main()
{
freopen("she.in","r",stdin);
freopen("she.out","w",stdout);
ll l,r,s,m;
int T;
scanf("%d",&T);
while(T--)
{
//cin>>m>>s>>l>>r;
m=read();s=read();l=read();
r=read();
if(l>=m)
{
printf("-1\n");
continue;
}
if(l==r)
{
ll x,y,gc;
exgcd(s,m,x,y,gc);
if(l%gc)
{
cout<<-<<endl;
}
else
{
x=x*l/gc;
ll m1=m/gc;
x=(x%m1+m1)%m1;
if(x==) x+=m1;
cout<<x<<endl;
}
continue;
}
bool flag=false;
for(int x=;x<=;++x)
{
ll res=(s%m*x%m)%m;
if(res>=l&&res<=r)
{
printf("%d\n",x);
flag=true;
break;
}
}
if(flag) continue;
printf("-1\n");
}
fclose(stdin);
fclose(stdout);
return ;
}
标程:
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm> using namespace std; const int maxn=; int L,R,s,m; struct rec
{
int v,p;
bool operator<(const rec &a)const
{
return v<a.v;
}
}z[maxn]; void solve(int l,int r,int &res,int delta,int p)
{
if (l>r) return;
int left=l-,right=r;
while (left+!=right)
{
int mid=(left+right)>>;
if ((z[mid].v+delta)%m>=L) right=mid;
else left=mid;
}
int v=z[right].v+delta;
v%=m;
if (v>=L && v<=R)
{
for (int a=l;a<=r;a++)
if ((z[a].v+delta)%m>=L && (z[a].v+delta)%m<=R)
{
if (res) res=min(res,z[a].p+p-);
else res=z[a].p+p-;
}
}
} int main()
{
freopen("she.in","r",stdin);
freopen("she.out","w",stdout); int test;
scanf("%d",&test);
for (int p=;p<=test;p++)
{
scanf("%d%d%d%d",&m,&s,&L,&R);
if (R>=m) R=m-;
s%=m;
int size=(int)sqrt(m);
int res=;
for (int a=;a<=size && !res;a++)
{
z[a].v=(z[a-].v+s)%m;
if (z[a].v>=L && z[a].v<=R) res=a;
z[a].p=a;
}
sort(z+,z+size+);
for (int a=size+;a<=m && !res;a+=size)
{
int delta=(long long)size*s%m*((a-)/size)%m;
int l=,r=size;
while (l+!=r)
{
int mid=(l+r)>>;
if (z[mid].v+delta>=m) r=mid;
else l=mid;
}
if (z[r].v+delta<m) r++;
solve(,r-,res,delta,a);
solve(r,size,res,delta,a);
}
if (res) printf("%d\n",res);
else printf("-1\n");
} return ;
}
T3:听说很难,我不会,只有标程
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm> using namespace std; const int maxn=; int n,k,pre[maxn],next[maxn]; long double p[maxn],q[maxn]; void del(int b)
{
int a=pre[b],c=next[b];
long double pa=p[a],pb=p[b],pc=p[c];
p[a]=pa*pb/(-pa*(-pb));q[a]=-p[a];
q[c]=(-pc)*(-pb)/(-pb*(-pc));p[c]=-q[c];
next[a]=c;pre[c]=a;
} long double solve()
{
if (n<=) return ;
if (n<=) return k== ? p[] : q[];
for (int a=;a<=n;a++)
pre[a]=a-,next[a]=a+;
pre[]=n;next[n]=;
if (k==)
{
for (int a=;a<n-;a++)
del(a);
return p[];
}
if (k==n-)
{
for (int a=;a<n-;a++)
del(a);
return q[n-];
}
for (int a=;a<k;a++)
del(a);
for (int a=k+;a<n-;a++)
del(a);
del(k);
return q[k]*p[]+p[k]*q[n-];
} int main()
{
freopen("it.in","r",stdin);
freopen("it.out","w",stdout); int test;
scanf("%d",&test);
for (int px=;px<=test;px++)
{
scanf("%d%d",&n,&k);
for (int a=;a<=n;a++)
{
double v;
scanf("%lf",&v);
p[a]=v;
q[a]=-p[a];
}
printf("%.9lf\n",(double)solve());
} return ;
}
2016.10.30 NOIP模拟赛 day2 PM 整理的更多相关文章
- 2016.10.30 NOIP模拟赛 day2 AM 整理
题目+数据:链接:http://pan.baidu.com/s/1gfBg4h1 密码:ho7o 总共得了:130分, 1:100分 2:30分(只会这30分的暴力) 3:0(毫无思路) 虽然不高, ...
- 2016.10.29 NOIP模拟赛 PM 考试整理
300分的题,只得了第三题的100分. 题目+数据:链接:http://pan.baidu.com/s/1o7P4YXs 密码:4how T1:这道题目存在着诸多的问题: 1.开始的序列是无法消除的( ...
- 2018.10.30 NOIp模拟赛T2 数字对
[题目描述] 小 H 是个善于思考的学生,现在她又在思考一个有关序列的问题. 她的面前浮现出一个长度为 n 的序列{ai},她想找出一段区间[L, R](1 <= L <= ...
- 2018.10.30 NOIp模拟赛 T1 改造二叉树
[题目描述] 小Y在学树论时看到了有关二叉树的介绍:在计算机科学中,二叉树是每个结点最多有两个子结点的有序树.通常子结点被称作“左孩子”和“右孩子”.二叉树被用作二叉搜索树和二叉堆.随后他又和他人讨论 ...
- CH Round #49 - Streaming #4 (NOIP模拟赛Day2)
A.二叉树的的根 题目:http://www.contesthunter.org/contest/CH%20Round%20%2349%20-%20Streaming%20%234%20(NOIP 模 ...
- 10.16 NOIP模拟赛
目录 2018.10.16 NOIP模拟赛 A 购物shop B 期望exp(DP 期望 按位计算) C 魔法迷宫maze(状压 暴力) 考试代码 C 2018.10.16 NOIP模拟赛 时间:2h ...
- CH Round #58 - OrzCC杯noip模拟赛day2
A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...
- CH Round #55 - Streaming #6 (NOIP模拟赛day2)
A.九九归一 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2355%20-%20Streaming%20%236%20(NOIP模拟赛day2)/九九归一 题 ...
- 10.17 NOIP模拟赛
目录 2018.10.17 NOIP模拟赛 A 咒语curse B 神光light(二分 DP) C 迷宫maze(次短路) 考试代码 B 2018.10.17 NOIP模拟赛 时间:1h15min( ...
随机推荐
- 【Win10开发】处理PC上的后退键
我们知道在win10手机上和平板上都会有后退键,那么PC上该怎么办呢?没关系我们慢慢揭晓. 如果你已经是UWP的忠实用户,那么肯定会见到如下的后退键. 那么我们如何来做出来呢?, 我们首先打开App. ...
- python编码规范
python编码规范 文件及目录规范 文件保存为 utf-8 格式. 程序首行必须为编码声明:# -*- coding:utf-8 -*- 文件名全部小写. 代码风格 空格 设置用空格符替换TAB符. ...
- 糖果 bzoj 2330
糖果(1s 128MB)candy [题目描述] 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明 ...
- PHP流程控制之循环结构
计算机程序最擅长的功能之一就是按规定的条件,重复执行某些操作.循环结构可以减少源程序重复书写的工作量,即在给定条件成立时,反复执行某程序段,直到条件不成立为止.给定的条件称为循环条件,反复执行的程序段 ...
- 从零开始学 Java - Windows 下安装 JDK
关于未来 "我要死在火星.在我死去的时候能够想着人类能有一个美好的未来--有可持续的能源,同时能够殖民其他的星球来避免人类灭绝的最坏可能." 官网下载 直接打开官网:http:// ...
- 领域驱动设计常见问题FAQ
本文出处:http://www.cqrs.nu/Faq What is a domain? The field for which a system is built. Airport managem ...
- java web学习总结(十三) -------------------使用Session防止表单重复提交
在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...
- asp.net identity 介绍
Asp.Net Identity 设计目标 微软在 asp.net 2.0 引入了 membership,为 asp.net 应用程序提供身份验证和授权功能.membership 假定用户在网站注册, ...
- jquery和css3实现滑动导航菜单
效果预览:http://keleyi.com/keleyi/phtml/html5/15/ 有都中颜色可供选择,请使用支持HTML5/CSS3的浏览器访问. HTML源代码: <!DOCTYPE ...
- Javascript中构造函数与new命令
典型的面向对象编程语言(比如C++和Java),存在“类”(class)这个概念.所谓“类”就是对象的模板,对象就是“类”的实例.但是,在JavaScript语言的对象体系,不是基于“类”的,而是基于 ...