【noip 2016】普及组
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.魔法阵
据题意得,xb−xa=2(xd−xc),xc−xb>6(xd−xc),即总距离s>9(xd−xc);
另,魔法值相同的物品所需要输出的答案是一样的;
所以可以先枚举(xd−xc),再倒序枚举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】普及组的更多相关文章
- NOIP 2018 普及组 解题报告
目录 标题统计 题目链接 思路 代码 龙虎斗 题目链接: 思路 代码 摆渡车 题目链接: 思路 对称二叉树 题目链接 思路: 先来解释一下为毛现在才来发解题报告: 其实博主是参加过NOIP 2018普 ...
- 洛谷P1067 多项式输出 NOIP 2009 普及组 第一题
洛谷P1067 多项式输出 NOIP 2009 普及组 第一题 题目描述 一元n次多项式可用如下的表达式表示: 输入输出格式 输入格式 输入共有 2 行 第一行 1 个整数,n,表示一元多项式的次数. ...
- NOIP【2016普及组】 考后有感(买铅笔,回文日期,海港,魔法阵)
普及组考试已落下大幕,但我们那扑通扑通等待成绩的心仍然无法平静,先来给四道题做一个总结: 一. 买铅笔 自评难度:1星 其实这道题没有什么难度,生命之题,满分必拿,100分,保底啦~\(≧▽≦)/~ ...
- NOIP2015&2016普及组解题报告
NOIP2015普及组题目下载 NOIP2016普及组题目下载 NOIP2015普及组题目: NOIP2018RP++ NOIP2016普及组题目 NOIP2018RP++ T1 金币\((coin. ...
- 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等 ...
- noip 2016 提高组题解
前几天写的那个纯属搞笑.(额,好吧,其实这个也不怎么正经) 就先说说day2吧: T1:这个东西应该叫做数论吧. 然而我一看到就照着样例在纸上推了大半天(然而还是没有看出来这东西是个杨辉三角) 然后就 ...
- noip 2016 提高组总结(不是题解)
小弱鸡杨树辰是第一次参加像noip这样的高大上的比赛,于是他非常,非常,非常激动. 当他第二天考完试后,他正在yy自己的分数:day1T1应该是a掉了,T2写了个30分的暴力,T3也是个40分的暴力, ...
- NOIP 2016 提高组 复赛 Day2T1==洛谷2822 组合数问题
题目描述 组合数表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们可以给出计算 ...
- 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) 条件:矩阵的分值定义为每 ...
- NOIP 2014 普及组 T3 螺旋矩阵
[题意] 已知:n,r,c(n<=30000) 条件:给定n行n列的螺旋矩阵(从矩阵的左上角(1,1)出发,初始时向右移动:如果前方是未曾经过的格子, 则继续前进,否则右转:重复上述操作直至经过 ...
随机推荐
- JIRA和Confluence更改JVM内存大小解决访问打开缓慢问题
原因: 根据主机物理内存不同,默认的java虚拟机内存也会不同(一个较低值),有时候不够用,可以修改默认设置,改善内存不足导致的问题. 操作步骤: JIRA 1. 打开至相应目录: ~]# cd / ...
- 【SFA官方译文】:Spring Cloud Data Flow中的ETL
原创: 影宸风洛 SpringForAll社区 昨天 原文链接:https://www.baeldung.com/spring-cloud-data-flow-etl 作者:Norberto Ritz ...
- Arch Linux中安装Anaconda
安装步骤 通过AUR安装yaourt -S anaconda 激活Anaconda环境source /opt/anaconda/bin/activate root 关闭Anaconda环境source ...
- linux 日常中会用到的命令(持续更新)
1. grep 比如,我要查看www目录下所有包含 “聊天室” 的文件 grep -rn "聊天室" * 比如我要把 www 目录下所有文件中的 聊天室 替换为 ...
- pytest 3.fixture介绍一 conftest.py
前言: 前面一篇pytest2 讲到用例加setup和teardown可以实现在测试用例之前或之后加入一些操作,但这种是整个脚本全局生效的,如果我想实现以下场景: 用例1需要先登录,用例2不需要登录, ...
- Ubuntu17安装Chrome有效
http://blog.csdn.net/NFMSR/article/details/78348000 1.进入 Ubuntu 16.04 桌面,按下 Ctrl + Alt + t 键盘组合键,启动终 ...
- JMeter-Java压力测试工具-02
这节介绍几个Listener下面的组件 Aggregate Report-汇总报告 从左到右依次:具有相同标签的样本数.一组结果的平均时间.一组结果的中间时间(50%的样本不超过这个时间).90%的样 ...
- logistics回归简单应用——梯度下降,梯度上升,牛顿算法(一)
警告:本文为小白入门学习笔记 由于之前写过详细的过程,所以接下来就简单描述,主要写实现中遇到的问题. 数据集是关于80人两门成绩来区分能否入学: 数据集: http://openclassroom.s ...
- (set)产生冠军 hdu2094
产生冠军 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- Pyhton之subprocess模块和configparser模块
一.subprocess模式 # import os # while True: # cmd=input('>>').strip() # if not cmd:continue # if ...