POJ2002 第一次与map亲密接触

POJ2002-Squares 北大POJ2002-Squares 解题报告+AC代码 立即下载

题目大意:呜呜~~我承认~~字符串的题目陷阱很多~~~Exactly seven of the characters in the string will be digits or letters~~说明给的每个串的里面有意义的字符是确切的7个,但是不排除有其余的字符。另外,scanf是无法输入string的 ,因为c++不能兼容C~~另外按个来的话,string是可以赋值给char的,但是整串是不允许的,但是char是可以整串赋值给string的。

思路:用map,很慢~~在G++竟然TIE,在C++更无语了,我竟然没加string竟会编译错误~~囧。。各种水啊 ~~。

话说map,第一次啊~~呵呵~~map自动按照关键值排序立了,关键值是first

AC program:

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<string>
#include<algorithm>
#include<math.h>
#include<iomanip>
#include<queue>
#include<map>
using namespace std;
char cc[1000],tmp[30];
int kg; 
map<string ,int> mm;
string str; 
int fn(char p)
{
if(p=='A'|| p=='B'|| p=='C' )return  2 ;
if(p=='D'|| p=='E'|| p=='F' )return  3 ;
if(p=='G'|| p=='H'|| p=='I' )return  4 ;
if(p=='J'|| p=='K'|| p=='L' )return  5 ;
if(p=='M'|| p=='N'|| p=='O' )return  6 ;
if(p=='P'|| p=='R'|| p=='S' )return  7 ;
if(p=='T'|| p=='U'|| p=='V' )return  8 ;
if(p=='W'|| p=='X'|| p=='Y' )return  9 ;   
}
int main()
{
int n,len;
scanf("%d",&n); 
for(int i=0;i<n;i++)
{
   scanf("%s",cc); 
   len=strlen(cc);
   kg=0;
   //memset(tmp,0,sizeof(tmp)); 
   for(int g=0;g<len;g++)
   {
      if(cc[g]=='-')continue;
      if(isupper(cc[g])){ //cc[g]>='A'&&cc[g]<='Z' 
                         tmp[kg]='\0'; 
                         tmp[kg++]=fn(cc[g])+'0';
                         } 
      else  tmp[kg++]=cc[g];     
   }
   tmp[kg]='\0';// 其实包括在上面的这个操作,原来 我是用memset的 
   //但是想试一下水就这样了-_- 
   str=tmp;
   mm[str]++;        
}
map<string ,int >::iterator p;
int flag=0; 
for(p=mm.begin();p!=mm.end();p++)
{
  if(p->second>1)
  {
    flag=1;
    string strrr=p->first;
    int i=0; 
    for(;i<3;i++)
    {           
      printf("%c",strrr[i]); 
    }
    
    printf("-"); 
    for(;i<7;i++)//strrr.length() 
    {
                          
      printf("%c",strrr[i]); 
    }              
    printf(" %d\n",p->second); 
  }                                 
}
if(!flag)
   printf("No duplicates.\n"); 
system("pause"); 
return 0;} 


 

基于单片机控制的开关电源设计 采用开关电源技术和MCU模块,凭借可靠性高、易于调适的特点,可以更高效地发挥出二者的优势,从而实现更好的组合。stm32的起动模式是通过Boot0和Boot1两个管脚的高低电平来决定的,当stm32被供电之后,这两个管脚的电平。在 VCC上,键盘的一头(列线)被连接到 VCC上,而在“0”的编程输出中,则用来进。,在开关管打开的情况下,由输入电力供给电流,感应装置存储   Buck变换器是一种非隔离式的电压转换器[10]整流电路对输入电压进行整流,再经过滤波电路,即Dc电压是直流/直流变换器的直流输入。 阅读详情

相关推荐

数学建模国赛C题实战:从数据预处理到模型优化的完整流程(附Python代码)

本文系统讲解了数学建模国赛C题的完整实战流程,涵盖从数据预处理、模型选择与构建到优化与结果可视化的关键步骤。文章重点分享了如何利用Python进行高效的数据清洗、特征工程,并提供了多种机器学习模型的实现代码与对比验证方法,旨在帮助参赛者构建逻辑清晰、结果可靠的解决方案。

weixin_29079643的博客 293

poj 2002

二分查找一个点是否存在,用set无法避免素数陷阱,无法解决负数取模问题,用map也无法解决。 只能hash或者二分 #include <iostream> #include <cstdio> #include <iomanip> #include <string> #include <cstdlib> #include <cstri...

Fawkess的博客 270

基于ROS下的安卓手机图像和IMU跑ORB-SLAM3

接之前文章继续,手上没有现成的单目+IMU硬件,但是安卓手机几乎人人都有。因此,本文讲下如何用手机跑ORB-SLAM3的Mono和Mono_Inertial。 1. 手机与PC通信 基于ROS下的信息发布和订阅,手机和PC在一个局域网下进行信息(image和IMU)传输。 手机APK参考了github上的2个开源Android_Camera-IMU和android_ros_sensors,基于ros_java生成安卓APP,下载安装任一个APP到安卓手机,界面分别是这样: 手机和PC连一个无

h_372101的博客 1万+

POJ 2002 Squares 数学 + 必须hash

http://poj.org/problem?id=2002 只能说hash比二分快很多。随便一个hash函数都可以完爆二分。 判断是否存在正方形思路如下: 1、枚举任意两个点,作为正方形的一条边,那么,整个正方形就确定了,有两个方向。 因为, 设枚举的坐标为(x1, y1) & (x2, y2),所求的坐标是和x1,y1这个点相连,那么有方程如下。 1、垂直,向量积是0 2...

weixin_30466421的博客 136

「 网络安全常用术语解读 」软件成分分析SCA详解:从发展背景到技术原理再到业界常用检测工具推荐

软件成分分析(Software Composition Analysis,SCA)是一种用于识别和分析软件内部组件及其关系的技术,旨在帮助开发人员更好地了解和管理其软件的构建过程,同时可帮助安全人员揭秘软件内部结构的神秘面纱。SCA技术的发展与软件行业的快速发展密不可分,下面将介绍SCA的发展背景、技术原理以及当前主流SCA工具。

所有成功的背后,都是痛苦的坚持,所有的痛苦,都是傻瓜般的不放弃! 5628

张量积曲面:数学原理与Python实现

Suv∑i0m∑j0nPij⋅Bipu⋅BjqvSuvi0∑m​j0∑n​Pij​⋅Bip​u⋅Bjq​v其中PijP_{i,j}Pij​是控制点网格,BipuB_i^p(u)Bip​u和BjqvB_j^q(v)Bjq​v是基函数,分别沿uuu和vvv方向定义。

T20151470的博客 1154

POJ 2002 快速查找

这是一道几何+快速查找的题目。 根据扩展方向的不同,主要有两种坐标的形式。我们只需要选择想一个方向的扩展,因为我们需要枚举所有的节点。但是这要做还是会有重复的,根据AB求CD坐标和根据AD求BC坐标,其实这两种确定的是一个正方形,所以最后的结果需要除以2。     另,枚举两个点,求得另外两个点,判断求出的这两个点是否在给定的点集中。我使用的是二分查找策略,首先需要对坐标先按照x排序,

陈氏春秋 470

28.Anaconda安装jupyter notebook、jupyterlab及体验

手贱,不小心将Anaconda自带得jupyter给卸载了,没法子了查了好多资料都比较麻烦,所以自己摸索着重新安装,记录一下心得。说明:Anaconda没有加入环境变量,Anaconda官方建议不要将Anaconda加入环境变量,这就意味着他和python是可以共存的。

迷逝 5025

poj_2002 哈希

题意:给定一堆点,判断能构成多少个正方形 枚举前两个点,根据前两个点推算出后两个点,看后两个点在不在表中,若在,ans++,记得最后ans除以4,多算了4倍。 code: #include #include using namespace std; const int HASH_BASE = 1007; int n; int map[1000][2]; int ha

在路上的学习者 564

Claude Code 实战 从零教你用 Claude Code 干活

Claude Code 实用指南:AI 编程助手的核心功能与使用技巧 Claude Code 是 Anthropic 推出的智能编程助手,可直接在本地环境中执行操作,相比传统 AI 对话工具具有显著优势:能直接读取项目文件、自动执行修改、记忆项目规则,并支持连接外部服务。本文详解其安装配置、三大核心场景(资料搜索、网页抓取、文章撰写)及进阶功能(Skills、MCP协议、斜杠命令)。特别提供了工作模式切换、CLAUDE.md配置文件等实用技巧,并附常见问题解决方案,帮助用户高效利用这一"坐在身边的

2401_84052244的博客 7402

046篇:数据统计:分组、求和、平均值、最大最小值

本文介绍了在RPA中实现数据分组统计的方法。通过字典+循环组合,可以完成按单字段或多字段的分组聚合操作,包括求和、计数、求平均值及最大/最小值等。文章详细讲解了分组统计的原理,并提供了单级分组、多级分组的具体实现步骤,最后通过销售数据按月分组的实战案例,演示了如何从原始数据到生成汇总报表的完整流程。这些方法可以灵活应用于各类数据统计分析场景。

weixin_59649563的博客 214

POJ 2002 Squares

题目链接:https://vjudge.net/problem/POJ-2002 题目大意   多组数据,每组给定 n 个不同的点,问从这 n 个点中选 4 个,使之能连成正方形,有多少种不同的选法? 分析   思路是枚举 2 个点,然后计算出可能的另外两个点,看它们存不存在。   最优解应该是用哈希表(O(n2))做,不过POJ万年不更新,都不能用 unordered_map...

weixin_30646315的博客 138

【NVMEM子系统】二、NVMEM驱动框架

该子系统整体架构不算太大,还是比较容易去理解的,下面我们一起去一探究竟!,该子系统主要用于实现EEPROMEfuse等非易失存储器的统一管理。在早期,像EEPROM驱动是存放于目录下,由于没有做到好的抽象,每次需要去访问相应内存空间,都需要去复制几乎一样的代码,去注册sysfs,这是一个相当大的抽象泄露。NVMEM子系统就是为了解决以往的抽象泄露问题。

Donge's Blog 1714

POJ - 2002(静态哈希链表找正方形)

POJ - 2002(静态哈希链表找正方形) 第一次做OJ,卡了好久, 稍微总结下. 原理 注意如果正方形有两个点是整数, 余下的两个点一定是整数. 计算公式如下: 已知:(x1,y1),(x2,y2)(x1,y1) ,(x2,y2) 则: x3=x1+(y1−y2)y3=y1−(x1−x2)x3=x1+(y1-y2) \quad y3= y1-(x1-x2) x4=x2+(

leonhe27的博客 702

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

POJ2002 数组Hash方法(代码以及一些关键问题的解释说明)

Q1:知道两点坐标,怎么获得可以构成正方形的另外两点坐标? ------ 利用全等三角形,可以找到向上(斜)平移或者向下(斜)平移的直线构成正方形,图如下: 已知: (x1,y1) (x2,y2)则: x3=x1+(y1-y2) y3= y1-(x1-x2) x4=x2+(y1-y2) y4= y2-(x1-x2) 或 ...

眼里一片海 616

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

POJ - 2002 - Squares (hash算法)

题目:poj-2002 题意:给一些点的坐标,问最多可以构成多少个正方形。 直接四个点四个点地枚举肯定超时的,不可取。 普遍的做法是:先枚举两个点,通过数学公式得到另外2个点,使得这四个点能够成正方形。然后检查散点集中是否存在计算出来的那两个点,若存在,说明有一个正方形。 但这种做法会使同一个正方形按照不同的顺序被枚举了四次,因此最后的结果要除以4. 题解: 已知: (x1,y1) ...

Rotepad的博客 446

poj 2002 (hash map)

Squares Time Limit: 3500 MSMemory Limit: 65536 KB 64-bit integer IO format: %I64d , %I64u Java class name: Main [Submit][Status][Discuss] Description A square is a 4-sided polygon who

ilblue的博客 385

poj2002 STL set

题意:给n个点,问最多能构成多少个正方形?思路:枚举两个点,计算组成正方形所需的另外两个点,若这两个点在所给的点集合中,则cnt++,最后的答案为cnt/2;(set 里 count() 返回整数,且只为 0 或 1 find() 返回迭代器)//#include&lt;bits/stdc++.h&gt; #include&lt;iostream&gt; #include&lt;set&gt; ...

紫芝的博客 422

POJ 2002

#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #define MAXN 1111 using namespace std; class Point{ public: i...

weixin_34072458的博客 180

POJ2002---正方形

题目描述 正方形是边长相等且相邻边形成90度角的4边多边形。它也是一个多边形,围绕其中心旋转 90 度会得到相同的多边形。然而,它不是唯一具有后一特性的多边形,因为正八边形也具有此特性。 所以我们都知道正方形是什么样子的,但是我们能找到所有可能由夜空中的一组星星组成的正方形吗?为了使问题更容易,我们假设夜空是一个二维平面,每颗星星都由它的 x 和 y 坐标指定。 输入 输入由许多测试用例组成。每个测试用例以整数 n (1 <= n <= 1000) 开始,表示要跟踪的点数。接下来的 n 行中的每

LXYDSF的博客 929

java 二分法 应用_poj 2002 二分法的强大应用

自认为是一道很有难度的题,,同时也再一次体会到了二分的强大,,,,题目:A square is a 4-sided polygon whose sides have equal length and adjacent sides form 90-degree angles. It is also a polygon such that rotating about its centre by 90...

weixin_34740753的博客 203

POJ 刷题系列:2002. Squares

POJ 刷题系列:2002. Squares 传送门:2002. Squares 题意: 在二维坐标系下,给出若干点,求这些点最多能组成多少个正方形。 思路: 可以观察输入n只有1000,所以我们可以把这些点全部存入内存中(hash),因为已知正方形的两个点,可以求出另两个点的坐标。这样暴力枚举每个点,判断是否存在构成正方形的两个点。 代码如下: import java.

Demon-初来驾到 492

poj2002 哈希

Squares Time Limit: 3500MS   Memory Limit: 65536K Total Submissions: 17666   Accepted: 6735 Description A square is a 4-sided polygon whose sides have equal length and ...

weixin_33910434的博客 148

STL之pair对组

Pair模版是C++ STL中短小精干的结构体,被定义在头文件中,把两个值视为一个结构单元,如map和multimap都利用了很多pair对组模版,即键/值>为成对元素,另外函数需要返回两个值的时候,也常用pair模版(当然,结构体也一样方便)。 注意:pair被定义为结构体而不是类,这样一来他的成员都是公有属性,可以直接访问和赋值。 Pair的定义: std::pair p(3,“

K神丶的专栏 1749

poj2002

已经正方形的两个点,那么其余两个点的可能坐标是: 已知: (x1,y1)  (x2,y2) 则:   x3=x1+(y1-y2)   y3= y1-(x1-x2) x4=x2+(y1-y2)   y4= y2-(x1-x2) 或 x3=x1-(y1-y2)   y3= y1+(x1-x2) x4=x2-(y1-y2)   y4= y2+(x1-x2) 将所有点散列到一个hash表

xcszbdnl的专栏 489
上一篇: 全排列函数 next_permutation && prev-permutation
下一篇: POJ2643 Election(MAP)
muximuxi525
博客等级 码龄15年 134粉丝 294原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值