【NOIP2014】真题回顾
生活大爆炸版石头剪刀布 就是个模拟,不说了
联合权值 枚举每个点,统计它任意两个儿子的联合权值,统计的时候维护sum和max就行了
飞扬的小鸟 比较好的DP题,不难想到用dp[i][j]表示到达第i列,高度j的最小点击次数,直接枚举i,j转移到下一列的位置会TLE,需要优化
#include<iostream>
#include<cstring>
#include<cstdio>
#define min(x,y) ((x)<(y)?(x):(y))
#define max(x,y) ((x)>(y)?(x):(y))
using namespace std;
const int N=10010;
const int M=2010;
const int INF=100000;
const int ch_top=4e7+3;
char ch[ch_top],*now_r=ch-1;
inline int read(){
while(*++now_r<'0');
register int x=*now_r-'0';
while(*++now_r>='0')x=x*10+*now_r-'0';
return x;
}
int n,m,k,X[N],Y[N],cnt[N],s[N],num;
int dp[N][M],low[N],high[N],Max;
int main()
{
// freopen("a.in","r",stdin);
fread(ch,1,ch_top,stdin);
n=read(); m=read(); k=read();
for(int i=0;i<n;++i){
X[i]=read(); Y[i]=read();
low[i]=1; high[i]=m;
}
low[n]=1; high[n]=m;
int P,L,H;
while(k--){
P=read(); L=read(); H=read();
low[P]=L+1; high[P]=H-1;
++cnt[P];
}
for(int i=1;i<=n;++i)
cnt[i]+=cnt[i-1];
for(int i=0;i<=n;++i)
for(int j=0;j<=m;++j)
dp[i][j]=INF;
for(int i=1;i<=m;++i)
dp[0][i]=0;
for(int i=0;i<n;++i){
num=0;
for(int j=high[i];j>=low[i];--j)//从上往下依次转移,有利于后面优化时间
if(dp[i][j]<INF){//先转移向上跳的情况
s[++num]=j;
Max=max(Max,i);
int g=(low[i+1]-j)/X[i];//直接计算需要向上跳几次达到low[i+1]
if(g<1) g=1;
int h=j+g*X[i];
if(h<low[i+1]) ++g,h+=X[i];
while(h<=high[i+1]){
if(dp[i+1][h]>dp[i][j]+g)
dp[i+1][h]=dp[i][j]+g;
else break;//优化时间,如果dp[i+1][h]已经有了更好的方案,一定是向上跳了若干步后转移过来的,那么dp[i+1][h+k*X[i]]也可以被跳到
++g; h+=X[i];
}
if(high[i+1]==m)
dp[i+1][m]=min(dp[i+1][m],dp[i][j]+(m-j)/X[i]+1);//计算到天花板的步数并转移
}
for(int l=1,j=s[l];l<=num;j=s[++l]) //后转移向下落的情况
if(dp[i][j]<INF){
int t=j-Y[i];
if(low[i+1]<=t&&t<=high[i+1])
dp[i+1][t]=min(dp[i+1][t],dp[i][j]);
}
}
int ans=INF;
for(int i=low[n];i<=high[n];++i)
if(dp[n][i]<INF)
ans=min(ans,dp[n][i]);
if(ans<INF){
puts("1");
printf("%d\n",ans);
return 0;
}
puts("0");
printf("%d\n",cnt[Max]);
return 0;
}
无线网络发射器选址 想怎么暴力就怎么暴力
寻找道路 按照题意,先标记所有能到终点的点,然后标记 所有出边指向的点都与终点连通的点,最后找一条最短的就行了
解方程 这题直接用高精干会爆炸,我们发现,如果原先式子的结果为0,对一个大质数取模后仍为0,原先式子的结果为你用的大质数的倍数,取模得到的结果也是0,这样的话你就被卡了,但是出题人怎么知道你是用19260817还是998244353或者19491001再或者是2147483647
还有,计算的时候用不用秦九韶都是O(n)的,也不知道这玩意有什么用处..
#include<iostream>
#include<cstring>
#include<cstdio>
#define int long long
using namespace std;
const int MAXN=110;
const int MAXM=1000010;
const int MOD=2147483647;
int n,m,a[MAXN];
inline int read(){
int x=0,f=1; char c=getchar();
while(c<'0') { if(c=='-') f=-1; c=getchar();}
while(c>='0') x=(x*10+c-'0')%MOD,c=getchar();
return x*f;
}
int cnt,ans[MAXM];
inline bool check(int x){
int ans=0,y=1;
for(int i=0;i<=n;++i){
ans=(ans+a[i]*y)%MOD;
y=y*x%MOD;
}
return ans==0;
}
signed main()
{
scanf("%lld%lld",&n,&m);
for(int i=0;i<=n;++i)
a[i]=read();
for(int i=1;i<=m;++i)
if(check(i)) ans[++cnt]=i;
printf("%lld\n",cnt);
for(int i=1;i<=cnt;++i)
printf("%lld\n",ans[i]);
puts("");
return 0;
}
【NOIP2014】真题回顾的更多相关文章
- 2016.1.4~2016.1.7真题回顾!-- HTML5学堂
2016.1.4~2016.1.7真题回顾!-- HTML5学堂 2015悄然而逝,崭新的2016随即而行!生活需要新鲜感,学习JavaScript的过程需要有成就感!成就感又是来自于每一天的不断练习 ...
- 2015.12.29~2015.12.30真题回顾!-- HTML5学堂
2015.12.29~2015.12.30真题回顾!-- HTML5学堂 吃饭,能够解决饥饿,提供身体运作机能.练习就像吃饭,强壮自己,提升编程技能,寻求编程技巧的最佳捷径!吃饭不能停,练习同样不能停 ...
- 2015.12.21~2015.12.24真题回顾!-- HTML5学堂
2015.12.21~2015.12.24真题回顾!-- HTML5学堂 山不在高,有仙则名!水不在深,有龙则灵!千里冰封,非一日之寒!IT之路,须厚积薄发!一日一小练,功成不是梦!小小技巧,尽在HT ...
- 【NOIP2015】真题回顾
题目链接 神奇的幻方 按照题意模拟 信息传递 不难想到这是一个基环树的森林,找一个最小环就可以了 斗地主 毒瘤搜索题,时限不紧,但是要考虑全所有情况 需要注意的一些地方: 先枚举顺子.再枚举四带二.三 ...
- 2019年京东Java研发岗社招面经(面试经历+真题总结+经验分享)!
本篇先以日历形式回顾秋招之路,方便各位参考某厂的处理进度:然后是总结归纳春秋招Java面试题库:最后做个总结还有展望,开始新的征程~ 面试经历京东面试真题面试经验分享1.面试经历 2018年的冬季特别 ...
- Noip前的大抱佛脚----Noip真题复习
Noip前的大抱佛脚----Noip真题复习 Tags: Noip前的大抱佛脚 Noip2010 题目不难,但是三个半小时的话要写四道题还是需要码力,不过按照现在的实力应该不出意外可以AK的. 机器翻 ...
- 历年NOIP真题总结
前言:最近把历年的NOIP真题肝了一遍(还有3个紫题先咕掉了),主要是到1998年的提高组的题.把题目的做题简要思路搁在这儿,一个是为了考前翻一翻,想想自己的哪些思路要梳理的什么什么的,反正怎么说呢, ...
- NOIP真题索引
NOIP真题索引 NOIP2019 Day 1 格雷码 括号树 树上的数 Day 2 Emiya 家今天的饭 划分 树的重心 NOIP2018 Day 1 铺设道路 货币系统 赛道修建 Day 2 旅 ...
- 网易实习笔试真题C/C++
刚做的时候根本就没有想到解题思路,刚好看到了别人的思路,自己写了一下.里面对unordered_map及vector二维数组的建立很灵活,另外区别了一下map,unordered_map,hash_m ...
随机推荐
- swagger list Could not resolve reference because of: Could not resolve point
swagger list Could not resolve reference because of: Could not resolve point controller的参数要加 @Requ ...
- kali之nmap
nmap简介 Nmap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包.可以扫描主机.端口.并且识别端口所对应的协议,以及猜测操作系统 Ping扫描(-sP参数) TCP ...
- Java 之 HTTP 协议
HTTP 协议 一.基础 1.概念 HTTP:Hyper Text Transfer Protocol 超文本传输协议. 传输协议:定义了客户端和服务器端通信时,发送数据的格式. 2.特点 (1)基 ...
- vue 属性props定义方法
当子组件接收父组件传过来的值的时候,我们一般有两种方式来接收 不过大家好像都用第二种方式,我只有在不确定数据类型的时候才用第一种方式 第一种: export default { // 不检测类型,全盘 ...
- python文字转语音
使用百度接口 接口地址 https://ai.baidu.com/docs#/TTS-Online-Python-SDK/top 安装接口 pip install baidu-aip from aip ...
- ffmpeg 把视频转换为图片
ffmpeg -i "Tail of Hope.mp4" -r 1 -q:v 2 -f image2 pic-%03d.jpeg
- php和mysql交互 面向对象
不返回结果集 <?php //使用对象属性和方法来插入数据 header('Content-type:text/html;carset=utf8'); $con=new mysqli('loca ...
- Spring IOC 总结
IOC 简介 IOC是(Inversion of Control,控制反转)的简写.Spring提供IOC容器,将对象间的依赖关系交由Spring进行控制,避免硬编码所造成的的过度程序耦合.它由DI( ...
- Java集合框架 面试问题整理
简介 java集合类是java.util 包中的重要内容.java集合框架包含了大量集合接口以及这些接口的实现类和操作他们的算法. java集合框架图 主要提供的数据结构 List 又称有序的Coll ...
- Java枚举类和注解梳理
1. 枚举类 1. 枚举类的使用 枚举类的理解:类的对象只有有限个,确定的.我们称此类为枚举类. 当需要定义一组常量时,强烈建议使用枚举类. 如果枚举类中只有一个对象,则可以作为单例模式的实现方式. ...