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( ...
随机推荐
- jquery easyui使用(二)······可折叠面板动态加载无效果
先上代码: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"& ...
- Java集合概述
容器,是用来装东西的,在Java里,东西就是对象,而装对象并不是把真正的对象放进去,而是指保存对象的引用.要注意对象的引用和对象的关系,下面的例子说明了对象和对象引用的关系. String str = ...
- 【夯实PHP基础系列】JQuery easyUI的使用
最近在做一个公司的后台项目中,接触到 JQuery easyUI前端框架,被她简洁的代码和简单有效的ajax交互所深深吸引. 体会有以下3个方面: 1)快速创建表格的能力: 后端程序,比如PHP只需要 ...
- 像素与rem转换
// rem尺寸转换函数开始(function (doc, win) { var docEl = doc.documentElement, resizeEvt = 'orienta ...
- easyui框架对tab的限制提示
使用easyui框架如果页面打开太多可能导致页面加载缓慢的问题,下面我们看看代码怎么写: var $tab = $('#tabs'); var tabCount = $tab.tabs('tabs') ...
- scrollview 图片放大 捏合 瓦片地图 相关注意事项
就职文博公司要为博物馆做APP 涉及到瓦片地图的编写 在这里总结一些开发中遇到的问题 (将会不断更新 也是学习阶段) 着急写项目的同学 可以直接看code4上现成的瓦片地图代码:http://www. ...
- fmdb 数据库的基本操作
/** * 创建表 */ - (void)createTable { //1.初始化数据库对象 并且 2.打开数据库 BOOL isOpenSuccess = [self.database open ...
- Android 轻松实现仿淘宝地区选择
介绍 最近用淘宝客户端的时候,编辑地址的时候有个地区选择的功能.看上面的效果觉得挺酷,滚动的时候,是最后一个从下面飞上来挨着前一个.就自己鼓捣一个出来玩玩. 说了效果可能不太直观,下面上两张图看看效果 ...
- 源代码管理工具之SVN
源代码管理工具SVN是一款非常强大的源代码管理工具,现在国内70%-90%的公司都在使用SVN来管理源代码,下面就让小编给大家着重介绍一下SVN的使用,SVN的使用主要分为下面几块. SVN的使用环境 ...
- Socket.IO聊天室~简单实用
小编心语:大家过完圣诞准备迎元旦吧~小编在这里预祝大家元旦快乐!!这一次要分享的东西小编也不是很懂啊,总之小编把它拿出来是觉地比较稀奇,而且程序也没有那么难,是一个比较简单的程序,大家可以多多试试~ ...