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, 根据之间的关系,用前缀和求出每一 ...
随机推荐
- 一个极为简单的requirejs实现
require和 sea的源码分析,我之前的博客有写过, 今天我想分享的是一个很简单的核心代码(不带注释和空行大概60行), 没有容错判断. require.js require函数实现用一句话概括: ...
- Android Open Source Projects(汇总与整理)
Android Open Source Projects 目前包括: Android开源项目第一篇——个性化控件(View)篇 包括ListView.ActionBar.Menu.ViewPager ...
- spring-boot分页插件
1.分页插件,spring-boot.,第一次调用时,存值到 model.addAttribute("status", id);页面获取2.页面获取 后台存入的值,放在input ...
- python第三天(dictionary应用)转
1.题目: python实现英文文章中出现单词频率的统计 前言: 这道题在实际应用场景中使用比较广泛,比如统计历年来四六级考试中出现的高频词汇,记得李笑来就利用他的编程技能出版过一本背单词的畅销书 ...
- visionpro halcon 哪个好
visionpro halcon 哪个好 很多朋友会问到visionpro和halcon这两款机器视觉软件,到底学哪个好呢,今天众寻网就给大家讲一讲: 首先比较下两者的优缺点: halcon: 提供的 ...
- ISAP 最大流 最小割 模板
虽然这道题用最小割没有做出来,但是这个板子还是很棒: #include<stdio.h> #include<math.h> #include<string.h> # ...
- [leetcode-655-Print Binary Tree]
Print a binary tree in an m*n 2D string array following these rules: The row number m should be equa ...
- 爬虫:Scrapy17 - Common Practices
在脚本中运行 Scrapy 除了常用的 scrapy crawl 来启动 Scrapy,也可以使用 API 在脚本中启动 Scrapy. 需要注意的是,Scrapy 是在 Twisted 异步网络库上 ...
- matlab mex 小o -o 出错
https://github.com/kyamagu/mexopencv/issues/117 就是说2014a以后的版本mex -o 选项变成了 -output 蛋疼,这有什么好改的.找了好久才 ...
- rcnn caffe matlab 配置完成 14.04 cuda 7.0
http://blog.csdn.net/real_myth/article/details/42672381 各种痛苦.实验室网速还是龟速. 莫名其妙的错误. gcc还降级到4.7,opencv 3 ...