https://codeforces.com/contest/898

A:
题意;
给出一个数字 ,四舍五入一下。

题解 :
四舍五入

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
int main()
{int n;while(cin>>n){if(n%10<=5) cout<<n-n%10<<endl;else cout<< n-n%10+10 <<endl;}
}

B
题意:
给出三个数字 N,A,B。
找到两个数字 x,y
xa+yb==n

题解;
使得n%a 的余数 依次增加a ,直到可以整除b为止

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
int main()
{int n,a,b;while(cin>>n>>a>>b){int mod=n%a;int x=n/a,y=0;while(mod&&x){mod=(mod+a)%b;x--;}if(mod==0) cout<<"YES"<<endl<<x<<' '<<(n-x*a)/b<<endl;else cout<<"NO"<<endl;}
}

C

前导0好烦啊。还要保留前导0 ,有毒。

#include<bits/stdc++.h>
using namespace std;
const long long maxn = 1e5 + 5;
map<string, long long > tag;
map<string, vector<string > > phone;
long long huan ( string &s )
{long long ans = 0;for ( int i = 0; s[i]; i++ )ans = ans * 10 + s[i] - '0';return ans;
}
bool cmp ( string &a, string &b )//引用可以降低空间损耗和时间。
{long long x = huan ( a );long long y = huan ( b );if ( x != y )return x > y;elsereturn a.size() > b.size();
}
int main()
{long long n;while ( cin >> n ){string str, x;long long m;for ( long long i = 0; i < n; i++ ){cin >> str >> m;for ( long long i = 0; i < m; i++ ){cin >> x;phone[str].push_back ( x );}}cout << phone.size() << endl;for ( auto i = phone.begin(); i != phone.end(); i++ ){vector<string > &temp = i->second, pl;sort ( temp.begin(), temp.end(), cmp );cout << i->first << ' ';tag.clear();for ( long long j = 0; j < temp.size(); j++ ){string num = temp[j];if ( !tag[num] ){string e;for ( long long i = num.size() - 1; i >= 0; i-- ){e = num[i] + e;tag[e] = 1;}pl.push_back ( num );}}cout << pl.size() << ' ';for ( long long j = 0; j < pl.size(); j++ )cout << pl[j] << ' ';cout << endl;}}return 0;
}

程序员就要反复推敲代码已追求代码的极致。

D

一直在调边界- -

#include <bits/stdc++.h>const int maxn = 2e5 + 5;using std::cin;int a[maxn];std::queue<int > q;
int main()
{int n, m, k;while ( cin >> n >> m >> k ){for ( int i = 1; i <= n; i++ ){cin >> a[i];}std::sort(a+1,a+n+1);int ans=0;for(int i=1;i<=n;i++){if(q.size()<k-1){q.push(a[i]);}else if(q.size()&&a[i]-q.front()>m-1){while(q.size()&&a[i]-q.front()>m-1 ) q.pop();q.push(a[i]);}else{ans++;}//std::cout<<"asd   "<<a[i]<<std::endl;}std::cout<<ans<< std::endl;}
}

https://codeforces.com/contest/898/problem/E

题意:
每次可以让一个数字增加1,可以让一个数字减少1(当这个数字大于0的时候)

然后 ,要让一半的数字是平方数,另一半不是平方数,求最少的操作次数;

题解:
二分查找最近的平方数,按照差值排序
因为0想变成非平方数需要操作两次。所以 在寻找平方数的时候优先使用0;
最后求和。

#include <bits/stdc++.h>const long long maxn=2e5+5;
using std::cin;
using std::cout;
using std::endl;struct node
{long long x,y,z;
}a[maxn];
bool cmp(node a,node b)
{if(a.y!=b.y) return a.y<b.y;else return a.z>b.z;
}
bool cmp1(node a,node b)
{return a.z<b.z;
}
long long powe[maxn];
int main()
{long long n;for(long long i=0;i<=35000;i++) powe[i]=i*i;while(cin>>n){long long x,y;for(long long i=0 ;i< n ; i++ ){cin >> a[i].x;long long v=std::lower_bound(powe,powe+34000,a[i].x)-powe;x=v,y=std::max((long long)0,v-1);a[i].y=std::min( abs(powe[x]-a[i].x) ,abs(powe[y]-a[i].x) );if(a[i].x==0) a[i].z=2;else if(a[i].y==0) a[i].z=1;else a[i].z=0;}std::sort(a,a+n,cmp);long long ans=0;for(long long i=0;i<n/2;i++){ans+=a[i].y;//  cout<<ans<<' '<<a[i].x<<' '<<a[i].y<<' '<<a[i].z<<endl;}std::sort(a+n/2,a+n,cmp1);//  cout<<"xxxxxxxxxxxxx "<<endl;for(long long i=n/2;i<n;i++){ans+=a[i].z;//  cout<<ans<<' '<<a[i].x<<' '<<a[i].y<<' '<<a[i].z<<endl;}cout<<ans<<endl;}
}

https://codeforces.com/contest/898/problem/F
题意:
给一个字符串s,
把字符串分成a+b=c的形式;

题解 :
首先可以知道,只需要枚举位置 去判断a+b==c 就可以了
其实大数可做,但是大数的每次判断是o(n) 加上枚举位置
复杂度为n^2
所以 将大数需要判断的地方改成字符串哈希
为了准确,用两个哈希表去判断。
知识点:字符串哈希。加法运算;

注意判断间隔点,a,b,c 都至少包含一位数,并且不存在前导0

#include <bits/stdc++.h>
using namespace std;
const long long base = 10;
const long long mod1 = 1e8 + 7, mod2 = 1e7 + 7;
const long long maxn = 1e6 + 5;
long long hash1[maxn], hash2[maxn], mu1[maxn], mu2[maxn];
string s;
void show ( long long x, long long y, long long z )
{for ( int i = 0; i < x; i++ ){cout << s[i];}cout << "+";for ( int i = x; i < y; i++ )cout << s[i];cout << "=";for ( int i = y; s[i]; i++ )cout << s[i];cout << endl;
}
void check ( long long x, long long y, long long z )
{long long a = ( hash1[x] + hash1[y] - hash1[x] * mu1[y - x] % mod1 + mod1 ) % mod1;long long b = ( hash1[z] - hash1[y] * mu1[z - y] % mod1 + mod1 ) % mod1;long long aa = ( hash2[x] + hash2[y] - hash2[x] * mu2[y - x] % mod2 + mod2 ) % mod2;long long bb = ( hash2[z] - hash2[y] * mu2[z - y] % mod2 + mod2 ) % mod2;if ( ( s[x] != '0' || y - x == 1 ) && ( s[y] != '0' || z - y > 1 ) || aa == 0 && bb == 0 )if ( a == b && aa == bb && x && y > x && y < z ){// cout<<hash1[x]<<' '<<a<<' '<<b<<' '<<aa<<' '<<bb<<' '<<x<<' '<<y<<endl;show ( x, y, z );}}
int main()
{while ( cin >> s ){mu1[0] = mu2[0] = 1;for ( long long i = 0; s[i]; i++ ){hash1[i + 1] = ( hash1[i] * base + s[i] - '0' ) % mod1;hash2[i + 1] = ( hash2[i] * base + s[i] - '0' ) % mod2;mu1[i + 1] = mu1[i] * 10 % mod1;mu2[i + 1] = mu2[i] * 10 % mod2;}long long len = s.size();long long pj = s.size() / 3;for ( int j = 1; j < len - 1; j++ ){int y;if ( ( len - j ) / 2 >= j )y = ( len - j ) / 2;elsey = len - j * 2;if ( y >= 0 ){check ( j, j + y, len );check ( j, j + y + 1, len );check ( j, j + y - 1, len );}}}
}

Codeforces Round #451 (Div. 2)相关推荐

  1. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

  2. Codeforces Round #563 (Div. 2)/CF1174

    Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...

  3. 构造 Codeforces Round #302 (Div. 2) B Sea and Islands

    题目传送门 1 /* 2 题意:在n^n的海洋里是否有k块陆地 3 构造算法:按奇偶性来判断,k小于等于所有点数的一半,交叉输出L/S 4 输出完k个L后,之后全部输出S:) 5 5 10 的例子可以 ...

  4. Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解 比赛链接:h ...

  5. Codeforces Round #712 Div.2(A ~ F) 超高质量题解(每日训练 Day.15 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #712 Div.2(A ~ F) 题解 比赛链接:https:// ...

  6. Codeforces Round #701 (Div. 2) A ~ F ,6题全,超高质量良心题解【每日亿题】2021/2/13

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Add and Divide B - Replace and Keep Sorted C ...

  7. Codeforces Round #700 (Div. 2) D2 Painting the Array II(最通俗易懂的贪心策略讲解)看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 整场比赛的A ~ E 6题全,全部题目超高质量题解链接: Codeforces Round #700 ...

  8. Codeforces Round #699 (Div. 2) F - AB Tree(贪心、树上DP)超级清晰,良心题解,看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) F - AB Tree Problem ...

  9. Codeforces Round #699 (Div. 2) (A ~ F)6题全,超高质量良心题解【每日亿题】2021/2/6

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) (A.B.C)[每日亿题]2021/2/ ...

最新文章

  1. Servlet的基本架构
  2. 清华大学 现代软件工程 结对编程项目 (一)
  3. IDC_ Pro_Env _CentOS 5.4_Open×××
  4. Centos7更新阿里yum源
  5. hive--udf函数(开发-4种加载方式)
  6. 【深度】阿里巴巴万级规模 K8s 集群全局高可用体系之美
  7. 万字干货:教新手从0到1搭建完整的增长数据体系(30图)
  8. python2/python3安装pip/pip3及使用国内镜像源(python2/3同时安装)
  9. 如何使用 React 创建一个作品集网站
  10. mysql 1千万 like优化_MYSQL千万级数据量的优化方法积累
  11. jQuery教程06-基本筛选选择器
  12. QT D:\Program Files (x86)\SogouInput\Components\
  13. 基于Java的连连看游戏设计与实现(含源文件)
  14. win10用win7的图片查看器
  15. Ubuntu16.04配置deeplabv3+的pytorch版本
  16. python打字_使用Python编写打字训练小程序
  17. 系统设计原则之里氏代换原则
  18. python 监控手机屏幕_Python 让手机实现监控功能的办法,解决一些困扰一些人很久的比如偷情的信任问题...
  19. 海量数据处理-Python
  20. bravado哺乳内衣 这款哺乳胸罩,越早买越好,别等到下垂涨奶才知道后悔!

热门文章

  1. 从一位老工程师的心里话开始谈起IT行业职
  2. 教资综合素质 (笔记一)
  3. 取带runas的一些优秀小工具介绍
  4. python长沙培训学校,长沙python培训班价格
  5. 2019晋城一中开放日
  6. c语言中ioc有什么作用,IOC简介
  7. 数据库Navicat建表出现1064错误原因
  8. 2018几大主流的UI/JS框架——前端框架
  9. 纳米数据足球数据,足球赛事比分,体育数据api,卡塔尔世界杯
  10. 《程序员2013精华本》