Codeforces 991 车牌号组合数学计算
A
/*Huyyt*/
#include<bits/stdc++.h>
#define mem(a,b) memset(a,b,sizeof(a))
#define pb push_back
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int mod = 1e9 + ;
const int gakki = + + + + 1e9;
const int MAXN = 3e5 + , MAXM = 6e6 + ;
/*int to[MAXM << 1], nxt[MAXM << 1], Head[MAXN], tot = 1;
inline void addedge(int u, int v, ll val)
{
to[++tot] = v;
value[tot] = val;
nxt[tot] = Head[u];
Head[u] = tot;
}*/
int main()
{
ios_base::sync_with_stdio();
cin.tie();
int a, b, c, n;
cin >> a >> b >> c >> n;
if (max(c, max(a, b)) > n)
{
cout << - << endl;
return ;
}
if (c > min(a, b))
{
cout << - << endl;
return ;
}
if (n - a - b + c < )
{
cout << - << endl;
return ;
}
cout << n - a - b + c << endl;
return ;
}
B
*10后就不会有精度问题了
/*Huyyt*/
#include<bits/stdc++.h>
#define mem(a,b) memset(a,b,sizeof(a))
#define pb push_back
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int mod = 1e9 + ;
const int gakki = + + + + 1e9;
const int MAXN = 3e5 + , MAXM = 6e6 + ;
/*int to[MAXM << 1], nxt[MAXM << 1], Head[MAXN], tot = 1;
inline void addedge(int u, int v, ll val)
{
to[++tot] = v;
value[tot] = val;
nxt[tot] = Head[u];
Head[u] = tot;
}*/
int num[];
priority_queue<int, vector<int>, greater<int> > que;
int main()
{
ios_base::sync_with_stdio();
cin.tie();
int n;
cin >> n;
int sum = ;
for (int i = ; i <= n; i++)
{
cin >> num[i];
num[i] = num[i] * ;
que.push(num[i]);
sum += num[i];
}
int level = * n;
int ans = ;
while (sum < level)
{
sum += - que.top();
que.pop();
ans++;
}
cout << ans << endl;
return ;
}
C
一眼二分
/*Huyyt*/
#include<bits/stdc++.h>
#define mem(a,b) memset(a,b,sizeof(a))
#define pb push_back
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int mod = 1e9 + ;
const int gakki = + + + + 1e9;
const int MAXN = 3e5 + , MAXM = 6e6 + ;
/*int to[MAXM << 1], nxt[MAXM << 1], Head[MAXN], tot = 1;
inline void addedge(int u, int v, ll val)
{
to[++tot] = v;
value[tot] = val;
nxt[tot] = Head[u];
Head[u] = tot;
}*/
int num[];
priority_queue<int, vector<int>, greater<int> > que;
ll n;
ll check(ll x)
{
ll sum = ;
ll now = n;
while (now > )
{
ll duce = min(x, now);
sum += duce;
now -= duce;
now -= now / ;
}
return sum;
}
int main()
{
ios_base::sync_with_stdio();
cin.tie();
cin >> n;
ll aim = n / + n % ;
ll l = , r = * n;
ll mid;
while (l < r - )
{
mid = (l + r) / ;
if (check(mid) >= aim)
{
r = mid;
}
else
{
l = mid;
}
}
cout << r << endl;
return ;
}
D
DP或者贪心模拟即可
/*Huyyt*/
#include<bits/stdc++.h>
#define mem(a,b) memset(a,b,sizeof(a))
#define pb push_back
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int mod = 1e9 + ;
const int gakki = + + + + 1e9;
const int MAXN = 3e5 + , MAXM = 6e6 + ;
/*int to[MAXM << 1], nxt[MAXM << 1], Head[MAXN], tot = 1;
inline void addedge(int u, int v, ll val)
{
to[++tot] = v;
value[tot] = val;
nxt[tot] = Head[u];
Head[u] = tot;
}*/
char f[][];
char s[][];
string ch[];
int n;
int ans = ;
int main()
{
ios_base::sync_with_stdio();
cin.tie();
for (int i = ; i <= ; i++)
{
cin >> ch[i];
n = ch[i].size();
for (int j = ; j < n; j++)
{
f[i][j + ] = ch[i][j];
}
}
for (int i = ; i <= ; i++)
{
for (int j = ; j <= n; j++)
{
s[i][j] = f[i][j];
}
}
int sumnow;
for (int i = ; i <= n - ; i++)
{
sumnow = ;
for (int j = ; j <= ; j++)
{
for (int k = i; k <= i + ; k++)
{
if (s[j][k] == '')
{
sumnow++;
}
}
}
if (sumnow >= )
{
ans++;
for (int j = ; j <= ; j++)
{
for (int k = i; k <= i + ; k++)
{
if (s[j][k] == '')
{
s[j][k] = 'X';
}
}
}
if (sumnow == )
{
s[][i + ] = '';
}
}
}
cout << ans << endl;
return ;
}
E
题意:
给你一个最多18位的数 你可以任意排列或者删除某个数 但是出现过的数至少要有一个且不能有前导零
问你有几种方案
解:
统计下每个数的个数 然后DFS一下算下答案即可
/*Huyyt*/
#include<bits/stdc++.h>
#define mem(a,b) memset(a,b,sizeof(a))
#define pb push_back
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int mod = 1e9 + ;
const int gakki = + + + + 1e9;
const int MAXN = 5e2 + , MAXM = 6e6 + ;
/*int to[MAXM << 1], nxt[MAXM << 1], Head[MAXN], tot = 1;
inline void addedge(int u, int v, ll val)
{
to[++tot] = v;
value[tot] = val;
nxt[tot] = Head[u];
Head[u] = tot;
}*/
int num[MAXN];
int nownum[MAXN];
ll anser = ;
ll facnum[MAXN];
void init()
{
facnum[] = ;
for (int i = ; i <= ; i++)
{
facnum[i] = i * facnum[i - ];
}
}
ll calans ()
{
ll ansnow = ;
for (int i = ; i <= ; i++)
{
ansnow += nownum[i];
}
ansnow = facnum[ansnow];
for (int i = ; i <= ; i++)
{
ansnow /= facnum[nownum[i]];
}
return ansnow;
}
void getans (int x)
{
if (x > )
{
anser += calans();
if (nownum[] > )
{
nownum[]--;
anser -= calans();
nownum[]++;
}
return ;
}
if (num[x])
{
for (nownum[x] = ; nownum[x] <= num[x]; nownum[x]++)
{
getans(x + );
} }
else
{
getans(x + );
}
}
int main ()
{
ios_base::sync_with_stdio();
cin.tie();
init();
ll pop;
cin >> pop;
while (pop > )
{
num[pop % ]++;
pop /= ;
}
getans();
cout << anser << endl;
return ;
}
Codeforces 991 车牌号组合数学计算的更多相关文章
- iOS手机号,身份证,车牌号正则表达式
1.手机号判断,根据维基百科2016年6月修订的段号判断 是否是手机号 /** 手机号码 13[0-9],14[5|7|9],15[0-3],15[5-9],17[0|1|3|5|6|8],18[0- ...
- 基于TensorFlow的车牌号识别系统
简介 过去几周我一直在涉足深度学习领域,尤其是卷积神经网络模型.最近,谷歌围绕街景多位数字识别技术发布了一篇不错的paper.该文章描述了一个用于提取街景门牌号的单个端到端神经网络系统.然后,作者阐述 ...
- 【代码笔记】iOS-验证手机号,邮箱,车牌号是否合法
一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...
- 按要求编写Java应用程序。 (1)创建一个叫做机动车的类: 属性:车牌号(String),车速(int),载重量(double) 功能:加速(车速自增)、减速(车速自减)、修改车牌号,查询车的载重量。 编写两个构造方法:一个没有形参,在方法中将车牌号设置“XX1234”,速 度设置为100,载重量设置为100;另一个能为对象的所有属性赋值; (2)创建主类: 在主类中创建两个机动车对象。 创建第
package com.hanqi.test; public class jidongche { private String chepaihao;//车牌号 private int speed;// ...
- Android中手机号、车牌号正则表达式
手机号 手机号的号段说明转载自:国内手机号码的正则表达式|蜗牛的积累 手机名称有GSM:表示只支持中国联通或者中国移动2G号段(130.131.132.134.135.136.137.138.139. ...
- 车牌号对应归属地及城市JSON带简码
车牌号对应归属地及城市JSON带简码 car_city.json [ { "code": "冀A", "city": "石家庄&q ...
- (1)创建一个叫做机动车的类: 属性:车牌号(String),车速(int),载重量(double) 功能:加速(车速自增)、减速(车速自减)、修改车牌号,查询车的载重量。 编写两个构造方法:一个没有形参,在方法中将车牌号设置“XX1234”,速 度设置为100,载重量设置为100;另一个能为对象的所有属性赋值; (2)创建主类: 在主类中创建两个机动车对象。
package a; public class Jidongche { private String chepaihao; private int chesu; private double zaiz ...
- vue实战 - 车牌号校验和银行校验
在看这篇文章之前,我建议大伙可以去把项目demo拉到本地看看.如果觉得写得不好,可以一起提提issues,一起维护.或者大伙有刚需,可以留言,后期会不断完善. 使用方法: git clone http ...
- python的车牌号的检测
自己总结一下,从网上找到的关于车牌号的识别的一些博文.https://www.jianshu.com/p/fcfbd3131b84 https://www.cnblogs.com/do-hardwor ...
随机推荐
- Kibana 创建索引 POST 403 (forbidden) on create index
一.问题描述: Kibana创建索引:kibana > management > index patterns > create index pattern 索引名称: mercha ...
- Spring集成CXF获取HttpServletRequest,HttpServletResponse
最近的项目中,在Spring继承CXF中要用到request来获取IP,所以先要获取到HttpServletRequest对象,具体方法如下: 1.配置文件: <jaxrs:server id= ...
- python识别图片中的信息
好好学习的第一步 一心一意的干好一件事儿,问自己 我做什么 我怎么做 做的结果是啥 例子1 问题 回答 我做什么: 识别图片上的信息 我怎么做: 百度+谷歌 结果是啥: 完成识别 1 安装PIL pi ...
- Python之异常处理合集
PermissionError: [Errno 13] Permission denied open(filePath)中的filePath是一目录路径,而非目录路径 先前打开的file文件对象未被关 ...
- 基于OpenCV的循环行、列移动函数circShift()
///*12 在Matlab中有个circShift()函数,可以实现行.列的循环移动 /// 在返卷积运算中,会用到这个函数.所以,在Opencv中我也定义同样 /// 功能的函数 /// 该函数有 ...
- 网络实验 02-交换机的Telnet远程登录设置
交换机的Telnet远程登录设置 一.实验目标 掌握采用telnet方式配置交换机的方法 二.技术原理 1. 配置交换机的管理IP地址(计算机的IP地址与交换机管理IP地址在同一网段) 2. 为tel ...
- Java架构师 -- 知识库
1,CSDN知识库: http://lib.csdn.net/base/architecture 2,淘宝
- NLP自然语言处理中英文分词工具集锦与基本使用介绍
一.中文分词工具 (1)Jieba (2)snowNLP分词工具 (3)thulac分词工具 (4)pynlpir 分词工具 (5)StanfordCoreNLP分词工具 1.from stanfor ...
- WijmoJS 以声明方式添加 Vue 菜单项
WijmoJS 以声明方式添加 Vue 菜单项 在V2019.0 Update2 的全新版本中,Vue框架下 WijmoJS 的前端UI组件功能得到再度增强. 如今,向wj菜单组件添加项的方法将不限于 ...
- idea中模块累积编写
idea中新建Empty Project名为myproject,新建模块mymodel1 要想复制该模块,再在该模块的基础上开发怎么弄? 选中该模块右键Copy,在Project空白区域右键Paste ...