BestCoder #Valentine's Day Round 1001 || hdu 5174
来源:互联网 发布:医疗器械注册 知乎 编辑:程序博客网 时间:2024/06/03 12:53
题目大意
一段非重复循环数列,找到所有满足(自身的值+左值)%INT_MAX==右值的值,计算它们的和。
INT_MAX=2147483647
解题思路
①map映射我么可以得到两样东西:关键字key+关键字对应的结果值value,即map(key,value>.key与value是一一对应的关系,类比于结构体
②unique(a,a+n)去重函数,将不重复的元素复制到序列前段,返回去重后最后一个元素的地址,使用前先排序。
③unique(a,a+n)-a返回非重复元素的个数
参考代码+部分解释
#include <iostream>#include <cstdio>#include <algorithm>#include <map>#include <vector>#include <cstring>#include <cmath>#include <climits>#define eps 1e-8using namespace std;typedef long long ll;const int maxx=INT_MAX;const int maxn = 1e5+10;ll a[maxn];int n;map<ll,int>mp;int main(){ // freopen("input.txt","r",stdin); int iCase=1; while(cin>>n){ mp.clear(); for(int i=0;i<n;i++){ cin>>a[i]; mp[a[i]]++; } sort(a,a+n);//unique()去重函数使用之前要排序,将不重复的元素复制到序列前段 int size=unique(a,a+n)-a;//返回去重后最后一个元素的地址,减去首地址得到非重复元素个数 //或者int size=mp.size(); if(size==1) {printf("Case #%d: -1\n",iCase++);continue;} ll ans=0; for(int i=0;i<size;i++){ if((a[i]+a[(i-1+n)%n])%INT_MAX==a[(i+1)%n]) ans+=mp[a[i]]; } printf("Case #%d: %lld\n",iCase++,ans); } return 0;}
当然,也可以int size=mp.size()返回非重复元素的个数,但是去重unique()过程必须要有!!
附另一参考程序:
#include <iostream>#include <cstdio>#include <algorithm>#include <map>#include <vector>#include <cstring>#include <cmath>#include <climits>#define eps 1e-8using namespace std;typedef long long ll;const int maxx=INT_MAX;const int maxn = 1e5+10;ll a[maxn];int n;map<ll,int>mp;int main(){ // freopen("input.txt","r",stdin); int iCase=1; while(cin>>n){ mp.clear(); for(int i=0;i<n;i++){ cin>>a[i]; mp[a[i]]++; } sort(a,a+n);//unique()去重函数使用之前要排序,将不重复的元素复制到序列前段 unique(a,a+n);//返回去重后最后一个元素的地址,减去首地址得到非重复元素个数 int size=mp.size(); if(size==1) {printf("Case #%d: -1\n",iCase++);continue;} ll ans=0; for(int i=0;i<size;i++){ if((a[i]+a[(i-1+n)%n])%INT_MAX==a[(i+1)%n]) ans+=mp[a[i]]; } printf("Case #%d: %lld\n",iCase++,ans); } return 0;}
0 0
- [Bestcoder] Valentine's Day Round 1001 - Ferries Wheel | HDU 5174
- BestCoder #Valentine's Day Round 1001 || hdu 5174
- 【BestCoder】#Valentine's Day Round
- BestCoder #Valentine's Day Round 1002 || hdu 5175
- HDU 5147 Ferries Wheel(暴力 数组)——BestCoder Valentine's Day Round
- Valentine's Day Round 1001 Ferries Wheel
- HDU 5175 Misaki's Kiss again(数学 最大公约数 异或运算)——BestCoder Valentine's Day Round
- Valentine's Day Round(HDU BC比赛)
- BestCoder(Valentine's Day Round C题) hdu5176 The Experience of Love
- Valentine's Day Round 1002 Misaki's Kiss again
- Valentine's Day Round 1002 Misaki's Kiss again
- valentine's day
- Valentine's Day
- St. Valentine's Day
- St.Valentine’s day
- White Valentine's Day
- Valentine's Day
- Problem F: Valentine's Day
- 如何为 SpringMVC 编写单元测试:从配置开始
- 关于网络通信
- 第一次接触 selenium
- 关于python的_init_()方法的一点解释
- Android SDK下载异常 的解决
- BestCoder #Valentine's Day Round 1001 || hdu 5174
- ViewPager中图片的动态删除
- 超越时空--读书感
- 选项卡式WebControl的制作
- linux调试早期启动问题
- 一步一步学Remoting
- 【BZOJ 1861】 [Zjoi2006]Book 书架
- ubuntu解决QT5不能输入汉字的问题
- android 解决输入法键盘遮盖布局问题