T1.买铅笔

题目链接

 #include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n,p,w,ans=0x3f3f3f3f;
int read()
{
int x=,f=;char c=getchar();
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
int main()
{
n=read();
for(int i=;i<=;i++)
{
w=read(),p=read();
if(n%w)w=n/w+;
else w=n/w;
ans=min(ans,w*p);
}
printf("%d",ans);
return ;
}

T2.回文日期

题目链接

直接枚举年份,再判断日期是否合法就好了……然而我居然还WA了一发(好菜啊

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int d1,d2,ans;
int read()
{
int x=,f=;char c=getchar();
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
int rev(int x)
{
int s[],ans=;
for(int i=;i<=;i++)s[i]=x%,x/=;
for(int i=;i<=;i++)ans=ans*+s[i];
return ans;
}
bool pan(int y,int m,int d)
{
int day=;
if(m==||m==||m==||m==)day=;
if(m==)
{
if((y%==&&y%!=)||y%==)day=;
else day=;
}
if(m<||m>||d<||d>day)return false;
return true;
}
int main()
{
d1=read();d2=read();
for(int i=d1/;i<=d2/;i++)
{
int t=i*+rev(i);
if(pan(i,(t/)%,t%)&&t>=d1&&t<=d2)ans++;
}
printf("%d",ans);
return ;
}

T3.海港

题目链接

因为保证输入的ti是递增的,所以开一个队列瞎搞就好了✔

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,k,t,ans,nat[];
struct node{int t,nat;}q[];
int read()
{
int x=,f=;char c=getchar();
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
int main()
{
n=read();
int head=,tail=;
while(n--)
{
t=read();k=read();
while(k--)
{
q[++tail].nat=read();
if(!nat[q[tail].nat])ans++;
nat[q[tail].nat]++;
q[tail].t=t;
}
while(q[head].t<=t-)
{
nat[q[head].nat]--;
if(!nat[q[head].nat])ans--;
head++;
}
printf("%d\n",ans);
}
return ;
}

T4.魔法阵

题目链接

据题意得,x​b​​−xa​​=2(x​d​​−x​c​​),x​c​​−xb​​>6(x​d​​−x​c​​),即总距离s>9(x​d​​−x​c​​);

另,魔法值相同的物品所需要输出的答案是一样的;

所以可以先枚举(x​d​​−x​c​​),再倒序枚举a的位置并推算出b及最小的合法c、d的位置并进行计算(倒序是为了使前面枚举过的c、d位置合法,方便累加);同理,正序枚举d的位置并推算出c及最大的合法a、b的位置并进行计算。

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=;
int n,m,num,xa,xb,xc,xd;
int w[N],a[N],b[N],c[N],d[N],id[];
int read()
{
int x=,f=;char c=getchar();
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
int main()
{
n=read();m=read();
for(int i=;i<=m;i++)
{
id[i]=read();
w[id[i]]++;
}
for(int i=;i<=n/;i++)
{
num=;
for(xa=n-*i-;xa>=;xa--)
{
xb=xa+*i;xc=xb+*i+;xd=xc+i;
num+=w[xc]*w[xd];
a[xa]+=w[xb]*num;
b[xb]+=w[xa]*num;
}
num=;
for(xd=*i+;xd<=n;xd++)
{
xc=xd-i;xb=xc-*i-;xa=xb-*i;
num+=w[xa]*w[xb];
c[xc]+=w[xd]*num;
d[xd]+=w[xc]*num;
}
}
for(int i=;i<=m;i++)
printf("%d %d %d %d\n",a[id[i]],b[id[i]],c[id[i]],d[id[i]]);
return ;
}

【noip 2016】普及组的更多相关文章

  1. NOIP 2018 普及组 解题报告

    目录 标题统计 题目链接 思路 代码 龙虎斗 题目链接: 思路 代码 摆渡车 题目链接: 思路 对称二叉树 题目链接 思路: 先来解释一下为毛现在才来发解题报告: 其实博主是参加过NOIP 2018普 ...

  2. 洛谷P1067 多项式输出 NOIP 2009 普及组 第一题

    洛谷P1067 多项式输出 NOIP 2009 普及组 第一题 题目描述 一元n次多项式可用如下的表达式表示: 输入输出格式 输入格式 输入共有 2 行 第一行 1 个整数,n,表示一元多项式的次数. ...

  3. NOIP【2016普及组】 考后有感(买铅笔,回文日期,海港,魔法阵)

    普及组考试已落下大幕,但我们那扑通扑通等待成绩的心仍然无法平静,先来给四道题做一个总结: 一. 买铅笔 自评难度:1星 其实这道题没有什么难度,生命之题,满分必拿,100分,保底啦~\(≧▽≦)/~ ...

  4. NOIP2015&2016普及组解题报告

    NOIP2015普及组题目下载 NOIP2016普及组题目下载 NOIP2015普及组题目: NOIP2018RP++ NOIP2016普及组题目 NOIP2018RP++ T1 金币\((coin. ...

  5. noip 2016提高组D2T1 problem

    我们可以先预处理一下组合数模K的值,然后我们可以发现对于答案ji[n][m],可以发现递推式ji[i][j]=ji[i-1][j]+ji[i][j-1]-ji[i-1][j-1]并对于Cij是否%k等 ...

  6. noip 2016 提高组题解

    前几天写的那个纯属搞笑.(额,好吧,其实这个也不怎么正经) 就先说说day2吧: T1:这个东西应该叫做数论吧. 然而我一看到就照着样例在纸上推了大半天(然而还是没有看出来这东西是个杨辉三角) 然后就 ...

  7. noip 2016 提高组总结(不是题解)

    小弱鸡杨树辰是第一次参加像noip这样的高大上的比赛,于是他非常,非常,非常激动. 当他第二天考完试后,他正在yy自己的分数:day1T1应该是a掉了,T2写了个30分的暴力,T3也是个40分的暴力, ...

  8. NOIP 2016 提高组 复赛 Day2T1==洛谷2822 组合数问题

    题目描述 组合数表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们可以给出计算 ...

  9. NOIP 2014 普及组 T4 子矩阵

    [题意] 已知:n,m,r,c,a[i][j] (1 ≤ n ≤ 16, 1 ≤ m ≤ 16,1 ≤ a[i][j] ≤1000,1 ≤ r ≤ n, 1 ≤ c ≤ m) 条件:矩阵的分值定义为每 ...

  10. NOIP 2014 普及组 T3 螺旋矩阵

    [题意] 已知:n,r,c(n<=30000) 条件:给定n行n列的螺旋矩阵(从矩阵的左上角(1,1)出发,初始时向右移动:如果前方是未曾经过的格子, 则继续前进,否则右转:重复上述操作直至经过 ...

随机推荐

  1. 普及一个Linux的小技能~Ctrl+Z切换到后台运行

    逆天Linux一直是自己摸索的,几年下来也小有心得,前不久PC也换成Ubuntu了,但毕竟不是专门搞运维的,有些知识还是有死角 这不,今天发现了个小技巧,来和大家分享一下: 比如运行一个交互式的程序: ...

  2. servlet 上下文

    一.应用需求: 如何统计网站在线人数? 使用ServletContext. 二.ServletContext详解: 1.是不同于session和cookie,是可以让所有客户端共同访问的内容,是在服务 ...

  3. js常见的排序算法

    最近面试可能会问这些 1,插入排序 function sort(elements){ var res =[elements[0]]; for (var i = 0; i < elements.l ...

  4. iview tree 获取选中子节点的整条数据链

    这样子获取到数据是,checked等于true的,获取不到他的父级,父级的父级 解决办法代码如下: //需要有一个唯一ID //==================================== ...

  5. pytest 5. fixture之yield实现teardown

    前言: 1.前面讲的是在用例前加前置条件,相当于setup,既然有setup那就有teardown,fixture里面的teardown用yield来唤醒teardown的执行 看以下的代码: #!/ ...

  6. 查看android源码,windows环境下载源码

    查看源码 参考: http://blog.csdn.net/janronehoo/article/details/8560304 步骤: 添加chrome插件 Android SDK Search 进 ...

  7. java equals和hashcode方法

    equals()方法比较两个对象的引用是否相同 hashcode()方法比较两个对象的哈希码是否相同

  8. Mac idea中git igenore设置

  9. Luogu P4197 Peaks

    题目链接 \(Click\) \(Here\) 做法:\(Kruskal\)重构树上跑主席树 构造方法:把每条边拆出来成一个点,点权是原先的边权.每次连边的时候,连的不再是点,而是其原先点所在的联通块 ...

  10. LoRa网关/RAK831

    Semtech SX1301 同时在不同的信道上接收数据 RAK831 能够在不同信道上同时接收多达 8 个同时发送不同扩频因子的 LoRa 数据 包