当前位置: 首页 > news >正文

noip2014 普及组

珠心算测验 题目传送门

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int read(){
    int ans=0,f=1,c=getchar();
    while(c<'0'||c>'9'){if(c=='-') f=-1; c=getchar();}
    while(c>='0'&&c<='9'){ans=ans*10+(c-'0'); c=getchar();}
    return ans*f;
}
int n,w[107],sum[100007],ans;
int main()
{
    n=read();
    for(int i=1;i<=n;i++) w[i]=read(),sum[w[i]]++;
    for(int i=1;i<=n;i++){
        for(int j=i+1;j<=n;j++) if(sum[w[i]+w[j]]) ans++,sum[w[i]+w[j]]--;
    }
    printf("%d\n",ans);
    return 0;
}
View Code

螺旋矩阵 题目传送门

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int M=30007;
int read(){
    int ans=0,f=1,c=getchar();
    while(c<'0'||c>'9'){if(c=='-') f=-1; c=getchar();}
    while(c>='0'&&c<='9'){ans=ans*10+(c-'0'); c=getchar();}
    return ans*f;
}
int n,x,y;
int dfs(int n,int x,int y){
    if(x!=1&&x!=n&&y!=1&&y!=n) return 4*(n-1)+dfs(n-2,x-1,y-1);
    if(x==1) return y;
    if(y==n) return n-1+x;
    if(x==n) return 2*(n-1)+(n-y+1);
    return 3*(n-1)+(n-x+1);
}
int main()
{
    n=read(); x=read(); y=read();
    printf("%d\n",dfs(n,x,y));
    return 0;
}
View Code

比例简化 题目传送门

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int inf=0x3f3f3f3f;
int read(){
    int ans=0,f=1,c=getchar();
    while(c<'0'||c>'9'){if(c=='-') f=-1; c=getchar();}
    while(c>='0'&&c<='9'){ans=ans*10+(c-'0'); c=getchar();}
    return ans*f;
}
int a,b,w;
int ans1,ans2;
double mn=inf;
int gcd(int x,int y){
    int p;
    while(y){
        p=x%y;
        x=y;
        y=p;
    }
    return x;
}
int main()
{
    a=read(); b=read(); w=read();
    double h=1.0*a/b;
    for(int i=1;i<=w;i++)
        for(int j=1;j<=w;j++) if(gcd(i,j)==1){
            double now=1.0*i/j;
            if(now>=h&&now-h<mn) mn=now-h,ans1=i,ans2=j;
        }
    printf("%d %d\n",ans1,ans2);
    return 0;
}
View Code

子矩阵  题目传送门

这是道dp题 因为状态数太多 所以我们可以枚举行数来降幂 预处理一波行列差就可以实现了 

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int inf=1e9;
int read(){
    int ans=0,f=1,c=getchar();
    while(c<'0'||c>'9'){if(c=='-') f=-1; c=getchar();}
    while(c>='0'&&c<='9'){ans=ans*10+(c-'0'); c=getchar();}
    return ans*f;
}
int n,m,r,c,cnt,ans=inf;
int s[25][25],f[25][25],h[25],w[25][25],l[25];
void dp(){
    for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) f[i][j]=inf,h[i]=0,w[i][j]=0;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=c;j++){
            if(j>=2) h[i]+=abs(s[i][l[j]]-s[i][l[j-1]]);
            f[i][0]=0; f[i][1]=h[i];
            for(int k=i+1;k<=n;k++) w[i][k]+=abs(s[k][l[j]]-s[i][l[j]]);
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=2;j<=min(r,i);j++){
             for(int k=1;k<i;k++) f[i][j]=min(f[i][j],f[k][j-1]+w[k][i]);
             f[i][j]+=h[i];
        }
        ans=min(ans,f[i][r]);
    }
}
int main()
{
    n=read(); m=read(); r=read(); c=read();
    for(int i=1;i<=n;i++)
     for(int j=1;j<=m;j++)
      s[i][j]=read();
    for(int k=1;k<(1<<m);k++){
        cnt=0;
        for(int i=0;i<m;i++) if((1<<i)&k){
            l[++cnt]=i+1;
            if(cnt>c) break;
            if(cnt+(m-i-1)<c) break;
        }
        if(cnt==c) dp();
    }
    printf("%d\n",ans);
    return 0;
}
View Code

 

转载于:https://www.cnblogs.com/lyzuikeai/p/7153964.html

相关文章:

  • 利用SEH防范BP(int 3)断点
  • 用vue开发单页应用的一些心得
  • leetcode笔记:Search in Rotated Sorted Array
  • 图片文件重命名
  • Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals)
  • 产品和团队
  • MySQL慎用 ENUM 字段
  • mysql取差集、交集、并集
  • Tex: The top-level auxiliary file: *.aux I couldn't open style file IEEEtran.bst 解决方法
  • 【java项目实战】一步步教你使用MyEclipse搭建java Web项目开发环境(一)
  • 嵌入式开发之hisilicon---hi3536 处理器简介
  • 分布式开放消息系统(RocketMQ)的原理与实践
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • nodeJS中的包
  • oracle学习3
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 【mysql】环境安装、服务启动、密码设置
  • AngularJS指令开发(1)——参数详解
  • C++入门教程(10):for 语句
  • Computed property XXX was assigned to but it has no setter
  • iOS 颜色设置看我就够了
  • javascript面向对象之创建对象
  • JavaWeb(学习笔记二)
  • Js基础——数据类型之Null和Undefined
  • k8s如何管理Pod
  • MD5加密原理解析及OC版原理实现
  • python大佬养成计划----difflib模块
  • Vue UI框架库开发介绍
  • 创建一个Struts2项目maven 方式
  • 后端_ThinkPHP5
  • 扑朔迷离的属性和特性【彻底弄清】
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 数组的操作
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 用element的upload组件实现多图片上传和压缩
  • 用Python写一份独特的元宵节祝福
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 阿里云重庆大学大数据训练营落地分享
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • $forceUpdate()函数
  • (1)Nginx简介和安装教程
  • (1)虚拟机的安装与使用,linux系统安装
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (一) storm的集群安装与配置
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转)【Hibernate总结系列】使用举例