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( ...
随机推荐
- C# DataTable的詳細用法
转载别人的转载,原作者都不知道了 在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一 ...
- [调整] Firemonkey iOS 原生 Edit 透明框, 改变框色
说明:iOS 原生 Edit 透明框 适用:Berlin Firemonkey 方法:在 StyleLookup 输入 transparentedit 效果: 如果有图片 Image 在这二个 Edi ...
- SpringMVC中servletFileUpload.parseRequest(request)解析为空获取不到数据问题
原因分析 首先我们来看下Spring mvc 中文件上传的配置 <bean id="multipartResolver" class="org.springfram ...
- 【工匠大道】svn使用总结
原文地址 SVN(Subversion)是一个自由.开源的项目源代码版本控制工具.目前,绝大多数开源软件和企业代码管理,都使用SVN作为代码版本管理软件. Subversion将文件存放在中心版本库里 ...
- <td></td>标签的border 样式在浏览器中显示不出来
问题: 在一些浏览器中比如360浏览器的兼容模式下, <td style="border:1px solid red;"></td> 标签 中 的内容为空时 ...
- 使用 Jquery-UI 实现一次拖拽多个选中的元素操作
项目需要,实现一个拖放操作,要求每次可以拖拽选中的多个元素,释放到目标容器后可排序.考虑了一下,觉得jquery-ui比较合适,毕竟它提供了项目需要的交互性事件机制.拖拽.释放.排序.选择等效果.而在 ...
- User Get 'Access Denied' with Excel Service WebPart
用户可以访问网站,并且具有相应的访问权限. 用户尝试了其他浏览器和IE的其他版本. 解决: 将用户添加到 ‘Excel Services Views’ 这个SharePoint组就OK了.
- WaterfallFlowLayout瀑布流用重写UICollectionViewFlowLayout类实现
最近调研瀑布流,在gitHub上下了个Demo发现它的所有视图都是用Main.storyboard拖的, 自己研究半天没研究明白; 然后就又找了一个Demo, 它的视图全是手打的, 但是实现的方法不太 ...
- IOS 图片上传处理 图片压缩 图片处理
- (void)initActionSheet { UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil dele ...
- Android性能优化之内存优化练习
练习题目地址:https://github.com/lzyzsd/MemoryBugs 分析及优化过程如下: 问题1 静态变量引用activity 使用神器LeakCanary检查内存泄露问题 从图中 ...