[NOIP2014] 普及组
模拟。
将所有“两个不同数之和”装进桶里,扫描原数组记录满足条件的数的个数。
/*by SilverN*/
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
const int mxn=;
int read(){
int x=,f=;char ch=getchar();
while(ch<'' || ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>='' && ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
int n;
int a[mxn];
int cnt[mxn];
int main(){
int i,j;
n=read();
for(i=;i<=n;i++){
a[i]=read();
}
for(i=;i<n;i++)
for(j=i+;j<=n;j++){
cnt[a[i]+a[j]]++;
}
int res=;
for(i=;i<=n;i++){
if(cnt[a[i]])res++;
}
cout<<res<<endl;
return ;
}
珠心算测验
暴力。
因为L<=100,所以分子和分母都从1循环到100,暴力判断即可。
/*by SilverN*/
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
int read(){
int x=,f=;char ch=getchar();
while(ch<'' || ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>='' && ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
int gcd(int a,int b){
if(!b)return a;
return gcd(b,a%b);
}
int a,b,L;
int ra=,rb=;
int main(){
int i,j;
a=read();b=read();L=read();
for(i=;i<=L;i++)
for(j=;j<=L;j++){
if(gcd(i,j)!=)continue;
if(i*b>=j*a && i*rb<j*ra){
ra=i;
rb=j;
}
}
printf("%d %d\n",ra,rb);
return ;
}
比例简化
O(n^2)循环会超时。
可以计算出最外围一圈数的个数,每次拆掉一圈数,到了目标数所在的圈再暴力查找。
/*by SilverN*/
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<vector>
using namespace std;
int n;
int main(){
int i,j;
cin>>n>>i>>j;
long long ans=;
int eg=min(min(n-i,i-),min(n-j,j-));
for(int k=;k<eg;++k)ans+=(n-*k)*-;
i-=eg;j-=eg;n-=*eg;
if(i==)ans+=j;
else if(i==n)ans+=*(n-)+n-j+;
else if(j==)ans+=*(n-)+n-i+;
else if(j==n)ans+=n-+i;
printf("%d\n",ans);
return ;
}
螺旋矩阵
暴力DFS选择的行,然后在所选行上DP。
DP时需要前缀和优化。
/*by SilverN*/
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<vector>
using namespace std;
int read(){
int x=,f=;char ch=getchar();
while(ch<'' || ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>='' && ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
int f[][];
int n,m,r,c;
int mp[][];
int ans=1e9;
//bool vis[17];
int use[];
int ds[];//行之间的差值
int cs[][];//列之间的差值
void DP(){
memset(cs,,sizeof cs);
memset(ds,,sizeof ds);
memset(f,0x3f,sizeof f);
int i,j;
for(i=;i<m;i++)
for(j=i+;j<=m;j++){
for(int k=;k<=r;k++){
cs[i][j]+=abs(mp[use[k]][j]-mp[use[k]][i]);
}
}
for(i=;i<=m;i++)
for(j=;j<=r;j++){
ds[i]+=abs(mp[use[j]][i]-mp[use[j-]][i]);
}
//init
// for(i=1;i<=m;i++) //
memset(f[],,sizeof f[]);
for(i=;i<=c;i++){
for(j=i;j<=m;j++){
for(int k=;k<j;k++){
f[i][j]=min(f[i][j],f[i-][k]+cs[k][j]);
}
f[i][j]+=ds[j];
}
}
int res=1e9;
for(i=c;i<=m;i++)res=min(res,f[c][i]);
// printf("res:%d\n",res);
ans=min(ans,res);
// printf("%d\n",ans);
return;
} void DFS(int dep,int pos){
if(dep>r){
/* printf("use:");
for(int i=1;i<=r;i++)printf("%d ",use[i]);
printf("\n");*/
DP();return;
}
int lim=n-(r-dep);
for(int i=pos;i<=lim;i++){
use[dep]=i;
DFS(dep+,i+);
}
return;
}
int main(){
int i,j;
n=read();m=read();r=read();c=read();
for(i=;i<=n;i++)
for(j=;j<=m;j++)
mp[i][j]=read();
DFS(,);
// use[1]=4;use[2]=5;DP(); printf("%d\n",ans);
return ;
}
子矩阵
[NOIP2014] 普及组的更多相关文章
- 【NOIP2014 普及组】螺旋矩阵
[NOIP2014 普及组]螺旋矩阵 一.题目 [NOIP2014 普及组]螺旋矩阵 时间限制: 1 Sec 内存限制: 128 MB 提交: 18 解决: 0 [提交][状态][讨论版] 题目描 ...
- noip2014普及组——珠心算测验
题目描述 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术.珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及. 某学校的珠心算老师采用一种快速考察珠 ...
- 螺旋矩阵 noip2014普及组
本题可以直接模拟填数字,也可以直接计算结果. 代码一:(这个代码,缺陷在于数组太大,浪费内存啊.另外,循环次数也不少.总之,时间空间的消耗都不小.) /*======================= ...
- noip2014普及组 比例简化
题目描述 在社交媒体上,经常会看到针对某一个观点同意与否的民意调查以及结果.例如,对某一观点表示支持的有1498 人,反对的有 902人,那么赞同与反对的比例可以简单的记为1498:902. 不过,如 ...
- [NOIP2014普及组]子矩阵
题目:洛谷P2258.Vijos P1914.codevs 3904. 题目大意:给你一个矩阵,要你找一个r行c列的子矩阵,求最小分值(子矩阵和分值的定义见原题). 解题思路:n和m比较小,考虑暴力. ...
- [NOIP2014普及组T1]珠心算测验 - NTT
求数组有多少个数,恰好等于集合中另外两个(不同的)数之和? 注意到数集比较小,而且涉及到下标的加法,可以很自然地想到卷积 注意减去自己加自己的贡献 真是一道NTT练手好题 #include <i ...
- [NOIP2014] 提高组 洛谷P2038 无线网络发射器选址
题目描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的129 条东西向街道和129 条南北向街道所形成的网格状,并且相邻 ...
- NOIP2002-2017普及组题解
虽然普及组一般都是暴力省一,但是有一些题目还是挺难的qwq个人觉得能进TG的题目会在前面打上'*' NOIP2002(clear) #include<bits/stdc++.h> usin ...
- NOIP2012 普及组 T3 摆花——S.B.S.
题目描述 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆.通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号.为了在门口展出更多种花,规定第i种花不能超过ai盆,摆花时 ...
随机推荐
- Html5 Egret游戏开发 成语大挑战(九)设置界面和声音管理
在上一篇中,简单的使用界面元素快速实现了一个游戏中的二级页面,这种直接在游戏页面上做UI的做法并不太好,原因是,UI会让游戏的压力变大,即使它是隐蔽的,如果同样的功能在其它的地方也是一样的,那么就要写 ...
- EMV内核使用中的常见问题
EMV内核在使用上会由于调用不当引起的许多问题,本文旨在基于内核LOG(也就是与IC卡交互的指令LOG)的基础上,对一些常见问题作初步的分析与解答,方便不熟悉EMV规范的同学参考. 本文的前提是你已经 ...
- Python2.7-异常和工具
来自<python学习手册第四版>第七部分,而且本书发布的时候3.1还未发布,所以针对本书的一些知识会有些滞后于python的版本,具体更多细节可以参考python的标准手册. 一.异常基 ...
- Theano2.1.4-基础知识之图结构
来自:http://deeplearning.net/software/theano/tutorial/symbolic_graphs.html Graph Structures Theano是将符号 ...
- Theano3.3-练习之逻辑回归
是官网上theano的逻辑回归的练习(http://deeplearning.net/tutorial/logreg.html#logreg)的讲解. Classifying MNIST digits ...
- 【分布式协调器】Paxos的工程实现-Cocklebur状态转移
集群中的主机经过选举过程由Looking状态变为了Leadering或Following状态.而这些状态之间转移的条件是什么呢?先来个直观的,上状态图. 图 4.1 Cocklebur选举过程中的状态 ...
- 用H5+Boostrap做简单的音乐播放器
前言:这个是综合一下我最近在学的东西做的小Demo,到实际使用还有距离,但是用来练手巩固知识点还是不错的,最近在二刷JS书和Boostrap.css的源码,做完这个Demo也算是暂告一段落,接下来是j ...
- (二十一)状态模式详解(DOTA版)
作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 本次LZ给各位介绍状态模式, ...
- Docker部署SDN环境
2014-12-03 by muzi Docker image = Java class Docker container = Java object 前言 5月份的时候,当我还是一个大学生的时候,有 ...
- C# WinForm应用程序降低系统内存占用方法
这里整理了一些网上关于Winform如何降低系统内存占用的资料,供参考: 1.使用性能测试工具dotTrace 3.0,它能够计算出你程序中那些代码占用内存较多2.强制垃圾回收3.创建完对象实例后,记 ...