【NOIP模拟赛】总结
题目描述
输入
输出
样例输入
样例输出
提示
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=,M=,INF=,MOD=;
int head[N],num=;
struct Lin{
int next,to,dis[];
}a[M<<];
void init(int x,int y,int z1,int z2){
a[++num].next=head[x];a[num].to=y;a[num].dis[]=z1;a[num].dis[]=z2;head[x]=num;
if(!x)return ;a[++num].next=head[y];a[num].to=x;a[num].dis[]=z1;a[num].dis[]=z2;head[y]=num;
}
int gi(){
int str=;char ch=getchar();
while(ch>'' || ch<'')ch=getchar();
while(ch>='' && ch<='')str=str*+ch-,ch=getchar();
return str;
}
int n,m,k,S,T;int f[][N],q[N*],s[N];bool vis[N];
void spfa(int sta,bool tt)
{
for(int i=;i<=n;i++)vis[i]=false,f[sta][i]=INF;
int t=,sum=,x,u;
int from=;
if(sta==)from=S;if(sta==)from=T;if(sta==)from=;
q[]=from;vis[from]=true;f[sta][from]=;
while(t!=sum)
{
t++;t%=MOD;
x=q[t];
for(int i=head[x];i;i=a[i].next)
{
u=a[i].to;
if(a[i].dis[tt]+f[sta][x]<f[sta][u])
{
f[sta][u]=f[sta][x]+a[i].dis[tt];
if(!vis[u])vis[u]=true,sum++,sum%=MOD,q[sum]=u;
}
}
vis[x]=false;
}
}
int main()
{
n=gi();m=gi();k=gi();S=gi();T=gi();
for(int i=;i<=k;i++)s[i]=gi();
int x,y,z1,z2;
for(int i=;i<=m;i++)
{
x=gi();y=gi();z1=gi();z2=gi();
if(x==y)continue;
init(x,y,z1,z2);
}
spfa(,);spfa(,);
long long sum=;
for(int i=;i<=k;i++)init(,s[i],-f[][s[i]],),sum+=f[][s[i]];
spfa(,);
long long ans=INF,tmp;
long long pp=;
for(int i=;i<=n;i++)
{
tmp=f[][i]+f[][i]+f[][i];
if(tmp<ans)ans=tmp,pp=i;
}
printf("%lld",ans+sum);
return ;
}
题目描述

输入
输出
样例输入
样例输出
提示
样例解释
N=2*2*3*3=36
phi(N)=36*(1-1/2)*(1-1/3)=12 12=2*2*3
样例输入二
4
37 1
3 4
37 1
333667 2
样例输出二
2 4
3 8
37 2
167 1 333667 1
题解:
水的数论,分解每一个pi-1即可
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;
const int N=,M=,T=;
int gi(){
int str=;char ch=getchar();
while(ch>'' || ch<'')ch=getchar();
while(ch>='' && ch<='')str=str*+ch-'',ch=getchar();
return str;
}
bool d[M];int mark[T];bool cf[T];
ll qm(ll x,int k)
{
if(x==)return ;
if(k==)return ;
ll sum=;
while(k)
{
if(k&)sum*=x;
k>>=;x*=x;
}
return sum;
}
int a[T],num=;int z[N],t=;
void qd(int p)
{
int lim;int c;
num=;
for(int i=;i<=t;i++){if(p%z[i]==)a[++num]=z[i];}
for(int i=;i<=num;i++)
{
int k=,tmp=p;
while(tmp)
{
if(tmp%a[i])break;
k++;tmp/=a[i];
}
mark[a[i]]+=k;
}
}
int main()
{
//freopen("pp.in","r",stdin);
int n,x,y;
scanf("%d",&n);
memset(mark,,sizeof(mark));
for(int i=;i<=n;i++)
{
x=gi();y=gi();
mark[x]+=y;
cf[x]=true;
}
int m=1e6;
d[]=false;
for(int i=;i<=m;i++)
{
if(d[i])continue;
z[++t]=i;
for(int j=*i;j<=m;j+=i)d[j]=true;
}
int to=1e6;
for(int i=;i<=to;i++)
{
if(cf[i])
qd(i-),mark[i]--;
}
for(int i=;i<=to;i++)
{
if(mark[i])printf("%d %d\n",i,mark[i]);
}
return ;
}
题目描述
输入
第一行一个正整数n,代表积木的个数。 接下来有n行,每行两个数li,ri,分别代表第i块积木左端点和右端点。
输出
输出一行两个整数,用一个空格隔开,分别代表最底层最多有多少积木和积木最少有多 少层。
样例输入
样例输出
提示
第 1、2、3、4 块放在最底层,第 5 块第二层,第 6块第三层。此时底层共 4块积木。
第 1、2、6块放在最底层,第 3、4、5块第二层。此时高度为 2。

另 20%: n<=100,0<=l<=50,r=l+2,即每块积木长均为 2
100%:n<=100000,-2*10^8<=l,r<=2*10^8
题解:
贪心,第一问线段覆盖,按右端点排序,然后以此判断 l>=last 满足就加入
第二问将每一条线段拆成两个点 再将每个点排序,线性扫描一边,遇l h++遇r h-- 意为能塞入底层就塞入
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=;
int gi(){
int str=,f=;char ch=getchar();
while(ch>'' || ch<''){if(ch=='-')f=-;ch=getchar();}
while(ch>='' && ch<='')str=str*+ch-,ch=getchar();
return str*f;
}
struct Point{
int l,r;
}a[N];
bool comp(const Point &p,const Point &q){return p.r<q.r;}
struct Pointed{
int x;bool t;
}p[N<<];
bool cmp(const Pointed &p,const Pointed &q){if(p.x!=q.x)return p.x<q.x;return p.t>q.t;}
int main()
{
int n=gi();
for(int i=;i<=n;i++)
{
a[i].l=gi();a[i].r=gi();
p[(i<<)-].x=a[i].l;p[(i<<)-].t=;
p[i<<].x=a[i].r;p[i<<].t=;
}
sort(a+,a+n+,comp);
int from=-2e9,ans1=;
for(int i=;i<=n;i++)
{
if(a[i].l>=from)
{
ans1++;
from=a[i].r;
}
}
printf("%d ",ans1);
sort(p+,p+(n<<)+,cmp);
int top=,ans2=,ppap=(n<<);
for(int i=;i<=ppap;i++)
{
if(!p[i].t)top++;
else top--;
if(top>ans2)ans2=top;
}
printf("%d",ans2);
return ;
}
题目描述
擦弹(graze)
输入
输出
样例输入
样例输出
提示
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int N=,M=;
int F[][N][N][N],p[][N][N][N];int a[N];
int gi(){
int str=;char ch=getchar();
while(ch>'' || ch<'')ch=getchar();
while(ch>='' && ch<='')str=str*+ch-,ch=getchar();
return str;
}
int main()
{
int n;
scanf("%d",&n);
int m=*n-;
int tmp=,l=,pc=;
memset(F,/,sizeof(F));
F[][][][]=;
int c=,cc=;
for(int i=;i<=m;i++)
{
for(int j=;j<=n;j++)
{
a[j]=gi();
}
for(int j=;j<n;j++)
{
if(j>i)break;
for(int k=j;k<n;k++)
{
if(k+j>i)break;
pc=k>i-j-k-n?k:i-j-k-n;
for(int g=pc;g<n;g++)
{
if(g+j+k>i)break;
l=i-j-k-g;
if(l<g-)break;
int *pp=&F[cc][j][k][g];
int *qq=&p[cc][j][k][g];
*pp=2e8;
*qq=;
tmp=a[j+]+a[k+]+a[g+]+a[l+];
if(tmp+F[c][j-][k][g]<=*pp&& j)
{
int t=F[c][j-][k][g];
if(tmp+t<*pp)
*qq=p[c][j-][k][g]+a[j];
else if(p[c][j-][k][g]+a[j]>*qq)*qq=p[c][j-][k][g]+a[j];
*pp=tmp+t;
}
if(tmp+F[c][j][k-][g]<=*pp&& k)
{
int t=F[c][j][k-][g];
if(tmp+t<*pp)
*qq=p[c][j][k-][g]+a[k];
else if(p[c][j][k-][g]+a[k]>*qq)*qq=p[c][j][k-][g]+a[k];
*pp=tmp+t;
}
if(tmp+F[c][j][k][g-]<=*pp&& g)
{
int t=F[c][j][k][g-];
if(tmp+t<*pp)
*qq=p[c][j][k][g-]+a[g];
else if(p[c][j][k][g-]+a[j]>*qq)*qq=p[c][j][k][g-]+a[g];
*pp=tmp+t;
}
if(tmp+F[c][j][k][g]<=*pp)
{
int t=F[c][j][k][g];
if(tmp+t<*pp)
*qq=p[c][j][k][g]+a[l];
else if(p[c][j][k][g]+a[l]>*qq)*qq=p[c][j][k][g]+a[l];
*pp=tmp+t;
}
}
}
}
c^=;cc^=;
}
cout<<F[c][n-][n-][n-]<<" "<<p[c][n-][n-][n-];
return ;
}
【NOIP模拟赛】总结的更多相关文章
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
- 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程
数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...
- 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...
- 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...
- 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...
- CH Round #58 - OrzCC杯noip模拟赛day2
A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...
- CH Round #52 - Thinking Bear #1 (NOIP模拟赛)
A.拆地毯 题目:http://www.contesthunter.org/contest/CH%20Round%20%2352%20-%20Thinking%20Bear%20%231%20(NOI ...
- CH Round #49 - Streaming #4 (NOIP模拟赛Day2)
A.二叉树的的根 题目:http://www.contesthunter.org/contest/CH%20Round%20%2349%20-%20Streaming%20%234%20(NOIP 模 ...
随机推荐
- C语言第五次博客作业
一.PTA实验作业 题目1:6-6 使用函数输出水仙花数 1. 本题PTA提交列表 2. 设计思路 (1) 首先先定义narcissistic函数. (2)定义四个整形变量n,a,d,cnt,sum, ...
- git基本用法
基本用法(下) 一.实验说明 本节实验为 Git 入门第二个实验,继续练习最常用的git命令. 1.1 实验准备 在进行该实验之前,可以先clone一个练习项目gitproject ...
- Oracle数据库游标精解
游标 定义:标识结果集中数据行的一种容器(CURSOR),游标允许应用程序对查询语句返回的行结果集中的每一行进行相同或不同的操作,而不是一次对整个结果集进行同一种操作.实际上是一种能从包括多条数据记录 ...
- angular4学习笔记整理(二)angular4的路由使用
这章说一下angular的路由 先说angular路由怎么引入,一开始new出来的angular项目它路由帮你配好了,但看要看app.module.ts里面 1.首先最上面要引入路由模块 import ...
- Python-字典、集合、字符编码、文件操作整理-Day3
1.字典 1.1.为什么有字典: 有个需求,存所有人的信息 这时候列表就不能轻易的表示完全names = ['stone','liang'] 1.2.元组: 定义符号()t = (1,2,3)tupl ...
- emqtt 试用(二)验证 emq 和 mosquito 的共享订阅
本地订阅(Local Subscription) 本地订阅(Local Subscription)只在本节点创建订阅与路由表,不会在集群节点间广播全局路由,非常适合物联网数据采集应用. 使用方式: 订 ...
- 九、Python+Selenium模拟用QQ登陆腾讯课堂,并提取报名课程(练习)
研究QQ登录规则的话,得分析大量Javascript的加密解密,比较耗时间.自己也是练习很少,短时间成功不了.所以走了个捷径. Selenium是一个WEB自动化测试工具,它运行时会直接实例化出一个浏 ...
- loadrunner录制时web时,安全证书问题
测试环境:win7+LoadRunner11+ie9 遇到的问题:用LoadRunner录制时,打开百度,总是报安全证书问题,如图所示 解决方法:Tools——Recording Options——p ...
- 百度echarts使用--y轴label数字太长难以全部显示
问题: 今天遇到个小问题,我们系统前端呈现使用了百度echarts.在绘制折线图的时候,因为数字过大,导致显示出现了问题. 解决方案: 左边y轴的值默认是根据我们填充进去的值来默认分割的,因为原始值就 ...
- DOM常用外部插入方法与区别
1.DOM外部插入after()与before() 节点与节点之前有各种关系,除了父子,祖辈关系,还可以是兄弟关系.之前我们在处理节点插入的时候,接触到了内部插入的几个方法,这节我们开始讲外部插入的处 ...