noip2016 普及组
T1 买铅笔 题目传送门
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int inf=0x3f3f3f3f;
int read(){
int ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
int n,x,y,ans=inf;
int main()
{
int now,nowf;
n=read();
for(int i=;i<=;i++){
x=read(); y=read();
if(n%x) now=n/x+;
else now=n/x;
nowf=now*y;
ans=min(ans,nowf);
}
printf("%d\n",ans);
return ;
}
T2 回文日期 题目传送门
这道题其实枚举一波年份再判就好了 当时傻逼了就直接枚举了 mdzz
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int M=;
int read(){
int ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
int n;
int f[][]={{,,,,,,,,,,,,},{,,,,,,,,,,,,}};
int nx,ny,nz,tail=,ans;
struct node{int x,y,z;}q[M];
int pd(int x){
if(x%) return ;
if(x%==){
if(x%==) return ;
return ;
}
return ;
}
int check(int x){
int sx=q[x].x,sy=q[x].y,sz=q[x].z; //printf("%04d%02d%02d\n",sx,sy,sz);
return (sx!=nx||sy!=ny||sz!=nz);
}
void add(int k){
int x=q[k].x,y=q[k].y,z=q[k].z+;
int now=pd(x);
if(f[now][y]<z) z=,y++;
if(y>) y=,x++;
tail++;
q[tail].x=x; q[tail].y=y; q[tail].z=z;
}
int okay(int x){
int ans=q[x].x*+q[x].y*+q[x].z; //printf("%d\n",ans);
int s[];
for(int i=;i<=;i++) s[i]=ans%,ans=ans/;
return s[]==s[]&&s[]==s[]&&s[]==s[]&&s[]==s[];
}
int main()
{
n=read(); q[tail].x=n/; q[tail].y=n/%; q[tail].z=n%;
//printf("[%d %d %d]\n",q[1].x,q[1].y,q[1].z);
n=read(); nx=n/; ny=n/%; nz=n%;
if(okay(tail)) ans++;
while(check(tail)){
add(tail);
if(okay(tail)) ans++;
}
printf("%d\n",ans);
return ;
}
T3 海港 题目传送门
这道题搞了个队列记一波就okay了 代码简洁
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int M=,mx=;
int read(){
int ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
int sum[M];
struct node{int t,w;}q[*M];
int head,tail,n,last,k,x,tot;
int main()
{
n=read();
for(int i=;i<=n;i++){
last=read(); k=read();
for(int i=;i<=k;i++){
x=read();
if(!sum[x]) tot++;
sum[x]++;
q[tail].t=last; q[tail++].w=x;
}
while(q[head].t+mx<=last&&head<tail){
int now=q[head++].w;
sum[now]--;
if(!sum[now]) tot--;
}
printf("%d\n",tot);
}
return ;
}
T4 魔法正 题目传送门
这道题 还是有点复杂了 自己没写出来 看了波题解开着
首先由题目可得 设c-d差距为i 则a-b距离是2i b-c距离要大于6i 这样我们外层枚举i内层枚举d就可以解决问题了
当然由于a,b可以由c,d推过来但是满足情况的c,d太多了所以要从边界模拟过来使得所有被枚举的c,d都合法 把这些合法的状态都累加起来算就比较方便 降一波复杂度
同理c,d
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int M=,maxN=;
int read(){
int ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
int sum,xa,xb,xc,xd;
int n,m,id[M],w[maxN];
int a[maxN],b[maxN],c[maxN],d[maxN];
int main()
{
n=read(); m=read();
for(int i=;i<=m;i++) id[i]=read(),w[id[i]]++;
for(int i=;i<=n/;i++){
int now=i*;
sum=;
for(xa=n-now-;xa;xa--){
xb=xa+*i; xc=xb+*i+; xd=xc+i;
sum+=w[xc]*w[xd];
a[xa]+=w[xb]*sum;
b[xb]+=w[xa]*sum;
}
sum=;
for(xd=now+;xd<=n;xd++){
xc=xd-i; xb=xc-*i-; xa=xb-*i;
sum+=w[xa]*w[xb];
c[xc]+=sum*w[xd];
d[xd]+=sum*w[xc];
}
}
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 ;
}
noip2016 普及组的更多相关文章
- NOIP2016普及组解题报告
概述 \(NOIP2016\)普及组的前三题都比较简单,第四题也有很多的暴力分,相信参加了的各位\(OIer\)在\(2016\)年都取得了很好的成绩. 那么,我将会分析\(NOIP2016\)普及组 ...
- NOIP2016普及组复赛解题报告
提高组萌新,DAY1DAY2加起来骗分不到300,写写普及组的题目聊以自慰. (附:洛谷题目链接 T1:https://www.luogu.org/problem/show?pid=1909 T2:h ...
- [题解]noip2016普及组题解和心得
[前言] 感觉稍微有些滑稽吧,毕竟每次练的题都是提高组难度的,结果最后的主要任务是普及组抱一个一等奖回来.至于我的分数嘛..还是在你看完题解后写在[后记]里面.废话不多说,开始题解. 第一题可以说的内 ...
- NOIP2016普及组
普及组.代码有空发. 第一题就是买铅笔.暴力模拟绝对可取. 第二题就是回文日期.从t1的年份到t2的年份枚举每一年.头尾要特判. 第三题就是海港.骗了40分. 第四题就是魔法阵.不太好优化. 完.
- noip2016普及组题解和心得
前言 感觉稍微有些滑稽吧,毕竟每次练的题都是提高组难度的,结果最后的主要任务是普及组抱一个一等奖回来.至于我的分数嘛..还是在你看完题解后写在[后记]里面.废话不多说,开始题解. (其实这篇博客只有题 ...
- 【做题记录】[NOIP2016 普及组] 魔法阵
P2119 魔法阵 2016年普及组T4 题意: 给定一系列元素 \(\{X_i\}\) ,求满足以下不等式的每一个元素作为 \(a,b,c,d\) 的出现次数 . \[\begin{cases}X_ ...
- noip2016普及组 题解
T1 大水题,不解释 上考场代码 #include <algorithm> #include <cstdio> using namespace std; int main() ...
- [NOIP2016普及组]魔法阵
题目:洛谷P2119.Vijos P2012.codevs5624. 题目大意:有n件物品,每件物品有个魔法值.要求组成魔法阵(Xa,Xb,Xc,Xd),该魔法阵要满足Xa<Xb<Xc&l ...
- 【NOIP2016普及组复赛】魔法阵
题目 分析 设xd-xc为i,那么xb-xa=2i, 又因为xb-xa<(xc-xb)/3, 那么c>6i+b. 于是,先枚举i, 再分别枚举xa和xd, 根据之间的关系,用前缀和求出每一 ...
随机推荐
- Android中StackOverflow的问题
最近出现了一个让人抓狂的问题. 现在的项目中,制作了一个界面非常复杂.Fragment中嵌套下拉刷新的Listview 这样一个布局,在3.0以上的手机上都表现良好问题!但是在2.x的比较弱爆的手机上 ...
- React获取数据,假如为数组,使用map出现的问题
在平时做项目的时候,使用到了redux, 如果获取服务器端的数据,例如返回一个 data = [1,2,3,4]data.map(item => item*2) , 这样使用的话如果数据正常获 ...
- Qt Demo Http 解析网址 Openssl
今天练习了一下Qt 解析http协议,在Demo中使用到了Openssl 一上午的时间都是编译openssl,不过还是没有成功,很遗憾,这里整理了有关这个Demo的本件 网盘连接:见下方评论吧,长传太 ...
- jmeter接口测试--响应结果Unicode转码成中文
jmeter接口测试-响应结果Unicode转码成中文 一般情况下,接口返回数据都会经过加密,所以有时相应结果会显示为Unicode,因此,需添加BeanShell PostProcessor,加入代 ...
- CentOS Linux release 7.5.1804下安装MySQL5.7.24
1.环境查看: 2.卸载自带MariaDB数据库: 3.下载MySQL5.7.14安装包: 4.使用wget工具下载需要安装数据库的依赖包: 5.解压缩bundel包: 6.按照顺序进行安装: 7.数 ...
- python基础训练营02
任务二 时长:2天 1. 列表 a. 标志 b. 基本操作(创建,append( ),pop( ) ,del( ), 拷贝) c. 列表相关方法 2. 元组 a. 标志 b. 基本操作(创建及不可变性 ...
- LeetCode 29——两数相除
1. 题目 2. 解答 2.1. 方法一 题目要求不能使用乘法.除法和除余运算,但我们可以将除法转移到对数域. \[ \frac{a}{b} = e^{\frac{lna}{lnb}} = e^{ln ...
- HDU 3698 Let the light guide us(DP+线段树)(2010 Asia Fuzhou Regional Contest)
Description Plain of despair was once an ancient battlefield where those brave spirits had rested in ...
- 并查集——poj1611(入门)
传送门:The Suspects 并查集水题 #include <iostream> #include <cstdio> #include <algorithm> ...
- iOS版微信开发小结(微信支付,APP跳转微信公众号)
最近公司心血来潮,一心要搞微信.废话不多说,直接上干货. 开发前准备: 1.在微信开发者平台获取开发者认证:(一年300元人民币) PS:具体流程按照微信流程指示操作即可,在这就不废话了. 2.下载微 ...