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( ...
随机推荐
- Visual Studio中安装viemu后,vim vax 快捷键大全
高效率移动 在插入模式之外 基本上来说,你应该尽可能少的呆在插入模式里面,因为在插入模式里面VIM就像一个“哑巴”编辑器一样.很多新手都会一直呆在插入模式里面,因为这样易于使用.但VIM的强大之处在于 ...
- 面积(area)
题目描述 编程计算由"*"号围成的下列图形的面积.面积计算方法是统计*号所围成的闭合曲线中点的数目.如图所示,在10*10的二维数组中,“*”围住了15个点,因此面积为15. 0 ...
- js实现web网页版台球游戏
js桌球小游戏在线试玩地址:http://keleyi.com/game/13/ 游戏截图: 完整代码,保存到html文件可以试玩: <!DOCTYPE html PUBLIC "-/ ...
- iOS开发中<null>的处理
在iOS开发过程中经常需要与服务器进行数据通讯,JSON就是一种常用的高效简洁的数据格式. 问题: 在项目中,一直遇到一个坑的问题,程序在获取某些数据之后莫名崩溃.原因是:由于服务器的数据库中有些字段 ...
- iOS 如何获取屏幕大小
UIScreen *currentScreen = [UIScreen mainScreen]; NSLog(@"applicationFrame.size.height = %f" ...
- 用SourceTree合并工程冲突,工程打不开时的操作
1.右键工程 --> 显示包内容 2.打开project.pbxproj文件 3.command + F :搜索“<<<<<” 或“>>>> ...
- 如何提升代码编译的速度 iOS
前阵子有遇到代码编译速度慢的问题,特别是在swift和object-c混编的过程中问题很突显. 网上找到一篇蛮好的文章里面又一些解决方法 推荐一下 http://www.open-open.com/l ...
- 关于UIScollView 中的contentOffset 的理解
大家对UIScollView 中的contentOffset 一直有疑问, 虽然看是一个简单的问题, 实际上并不简单. 当时我也有好多疑问, 后来在网上找了一下资料, 发现没有找到合理的解释, 因此自 ...
- 关于final关键字和抽象类,接口
final主要用于修饰类,方法以及属性 当用于修饰类时,则这个类不能被子类继承,换而言之该类没有子类 当用于修饰方法时,该方法也是不能被复写的 当用于修饰属性时,同理属性值不能被更改 抽象类,当存在抽 ...
- CSS3-05 样式 4
前言 关于 CSS 的介绍,基本上告一段落了.在该博客中将介绍如何通过 CSS 去设置一个 HTML 元素,显示在 Web 页面的位置. 定位 概述 定义元素位置的基准,即:该元素与 HTML 文档流 ...