Codeforces_844
A.统计字母个数。
#include<bits/stdc++.h>
using namespace std; string s;
int n;
map<char,int> mp; int main()
{
ios::sync_with_stdio();
cin >> s >> n;
int cnt = ;
for(int i = ;i < s.length();i++)
{
if(mp[s[i]] == ) cnt++;
mp[s[i]] = ;
}
if(s.length() < n) cout << "impossible" << endl;
else cout << max(,n-cnt) << endl;
return ;
}
B.统计每行每列0和1的个数,各自组合数计算数量,最后吧重复的n*m个减去。
#include<bits/stdc++.h>
using namespace std; int n,m,a[][]; long long c(int x)
{
long long ans = ;
for(int i = ;i <= x;i++) ans *= ;
return ans-;
} int main()
{
ios::sync_with_stdio();
cin >> n >>m;
for(int i = ;i <= n;i++)
{
for(int j = ;j <= m;j++) cin >> a[i][j];
}
long long ans = -n*m;
for(int i = ;i <= n;i++)
{
int cnt = ;
for(int j = ;j <= m;j++)
{
if(a[i][j] == ) cnt++;
}
ans += c(cnt);
ans += c(m-cnt);
}
for(int i = ;i <= m;i++)
{
int cnt = ;
for(int j = ;j <= n;j++)
{
if(a[j][i] == ) cnt++;
}
ans += c(cnt);
ans += c(n-cnt);
}
cout << ans << endl;
return ;
}
C.离散化后,统计环的数量。
#include<bits/stdc++.h>
using namespace std; int n,a[],b[],cnt,vis[] = {};
vector<int> v[],ans[];
map<int,int> mp; void dfs(int x)
{
vis[x] = ;
ans[cnt].push_back(x);
for(int i = ;i < v[x].size();i++)
{
int t = v[x][i];
if(vis[t]) continue;
dfs(t);
}
} int main()
{
ios::sync_with_stdio();
cin >> n;
for(int i = ;i <= n;i++) cin >> a[i],b[i] = a[i];
sort(b+,b++n);
for(int i = ;i <= n;i++) mp[b[i]] = i;
for(int i = ;i <= n;i++)
{
v[i].push_back(mp[a[i]]);
}
cnt = ;
for(int i = ;i <= n;i++)
{
if(!vis[i])
{
cnt++;
dfs(i);
}
}
cout << cnt << endl;
for(int i = ;i <= cnt;i++) sort(ans[i].begin(),ans[i].end());
for(int i = ;i <= cnt;i++)
{
cout << ans[i].size() << " ";
for(int j = ;j < ans[i].size();j++) cout << ans[i][j] << " ";
cout << endl;
}
return ;
}
D.随机1000个点,剩下线性找1000个,有连续1000个点不被随1000次随到的概率可以忽略。
#include<bits/stdc++.h>
using namespace std; int n,now,x;
map<int,int> mp; int main()
{
ios::sync_with_stdio();
srand(time());
cin >> n >> now >> x;
cout << "? " << now << endl;
int ne;
cin >> now >> ne;
if(now >= x)
{
cout << "! " << now << endl;
return ;
}
for(int i = ;i <= ;i++)
{
long long t = (long long)rand()*rand()%n+;
cout << "? " << t << endl;
int v,vv;
cin >> v >> vv;
if(v < x && v > now)
{
now = v;
ne = vv;
}
}
while(ne != -)
{
cout << "? " << ne << endl;
cin >> now >> ne;
if(now >= x)
{
cout << "! " << now << endl;
return ;
}
}
cout << "! -1" << endl;
return ;
}
Codeforces_844的更多相关文章
随机推荐
- vue学习--组件之间的传值方式
1.概述 vue由多个组件构成页面,在不同的组件中有不同的联系,组件之间的传值是十分有必要的 2.父子组件之间传值 --props和$emit 父传子:通过props 方法:子组件:props:['m ...
- 一个简易的 LED 数字时钟实现方法
这个应该是已经有很多人做过的东西,我应该只是算手痒,想写一下,所以,花了点时间折腾了这个,顺便把 Dark Mode 的处理也加上了. 首先可以很明确的一点,这个真没技术含量存在,只是需要点耐心. L ...
- Your Ride Is Here 你的飞碟在这儿 USACO 模拟
1001: 1.1.1 Your Ride Is Here 你的飞碟在这儿 时间限制: 1 Sec 内存限制: 128 MB提交: 9 解决: 9[提交] [状态] [讨论版] [命题人:外部导入 ...
- 状态压缩 hdu #10
You are playing CSGO. There are n Main Weapons and m Secondary Weapons in CSGO. You can only choose ...
- python requests 库 首次使用
安装requests库 执行pip3 install requests 使用resquests库获取百度网站首页 打开python idle终端.以python3为例,在终端执行python3并回车. ...
- Django 信号量
参考:https://www.cnblogs.com/wupeiqi/articles/5246483.html 一.信号:就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者 ...
- Java单体应用 - 架构模式 - 01.三层架构
原文地址:http://www.work100.net/training/monolithic-architecture-3level.html 更多教程:光束云 - 免费课程 三层架构 序号 文内章 ...
- centOS7.1安装nginx与可能遇见的问题
一,安装nginx(系统:CentOS7.1) 1.Nginx下载地址:http://nginx.org/download/nginx-1.6.2.tar.gz [root@linux src]# c ...
- ValidationAttribute特性的截图
- 树莓派通过模数转换芯片ADC0832读取LM35温度传感器数据
树莓派通过模数转换芯片ADC0832读取LM35温度传感器数据 今天和小朋友一起玩树莓派,打算来做一个测量室温的小实验.经过几个小时的研究和测试,终于能够成功读取LM35传感器的温度数据了.本文主要记 ...