codeforces AIM Tech Round 4 div 2
A:开个桶统计一下,但是不要忘记k和0比较大小
#include<bits/stdc++.h>
using namespace std;
char s[];
int cnt[];
int main()
{
int k;
scanf("%s%d", s, &k);
int n = strlen(s);
if(n < k)
{
puts("impossible");
return ;
}
for(int i = ; i < n; ++i)
{
int t = s[i] - 'a';
++cnt[t];
if(cnt[t] == ) --k;
}
printf("%d\n", max(k, ));
return ;
}
B:很明显只能在同一行同一列,所以一行一列的方案数就是power(2,cnt)-1,减去空集的情况,但是这样每个元素会算重一次,所以要减去n*m
#include<bits/stdc++.h>
using namespace std;
const int N = ;
int n, m;
long long ans = ;
int Map[N][N], row[N][N], col[N][N];
long long power(long long x, long long t)
{
long long ret = ;
for(; t; t >>= , x = x * x) if(t & ) ret = ret * x;
return ret;
}
int main()
{
scanf("%d%d", &n, &m);
for(int i = ; i <= n; ++i)
for(int j = ; j <= m; ++j)
{
scanf("%d", &Map[i][j]);
++row[i][Map[i][j]];
++col[j][Map[i][j]];
}
for(int i = ; i <= n; ++i) ans += power(2ll, row[i][]) + power(2ll, row[i][]) - ;
for(int i = ; i <= m; ++i) ans += power(2ll, col[i][]) + power(2ll, col[i][]) - ;
printf("%I64d\n", ans - (long long)n * (long long)m);
return ;
}
C:一个元素必须回到自己排名对应的位置,所以必然和自己对应位置上的元素连接,然后就和对应位置的元素用并查集连接,最后统计一下就行了
#include<bits/stdc++.h>
using namespace std;
const int N = ;
int n, ans;
int fa[N], a[N];
vector<int> v, vt[N];
inline int find(int x)
{
return x == fa[x] ? x : fa[x] = find(fa[x]);
}
int main()
{
scanf("%d", &n);
ans = n;
for(int i = ; i <= n; ++i)
{
scanf("%d", &a[i]);
v.push_back(a[i]);
}
sort(v.begin(), v.end());
for(int i = ; i <= n; ++i)
{
a[i] = lower_bound(v.begin(), v.end(), a[i]) - v.begin() + ;
fa[i] = i;
}
for(int i = ; i <= n; ++i)
{
int x = find(a[a[i]]), y = find(a[i]);
if(x != y)
{
fa[find(a[i])] = x;
--ans;
}
}
for(int i = ; i <= n; ++i) vt[find(a[i])].push_back(i);
printf("%d\n", ans);
for(int i = ; i <= n; ++i)
{
int sz = vt[i].size();
if(sz == ) continue;
printf("%d ", sz);
for(int j = ; j < sz; ++j) printf("%d ", vt[i][j]);
puts("");
}
return ;
}
D:随机化 考这种东西干什么 具体是先随机1000次,然后更新ans,同时记录找到的比x小的最大的数的位置,如果没有就从start更新,然后暴力向后枚举就行了
#include<bits/stdc++.h>
using namespace std;
const int N = ;
int n, start, x, cnt, ans, key, nxt;
vector<int> v;
int vis[N];
int main()
{
srand( + time());
scanf("%d%d%d", &n, &start, &x);
ans = ;
v.push_back(start);
int size = sqrt(n);
for(int i = ; i <= n; ++i) v.push_back(i);
random_shuffle(v.begin(), v.end());
random_shuffle(v.begin(), v.end());
random_shuffle(v.begin(), v.end());
int i = ;
while(i < v.size())
{
if(vis[v[i]])
{
++i;
continue;
}
++cnt;
if(cnt == )
{
printf("! %d\n", ans);
fflush(stdout);
exit();
}
printf("? %d\n", v[i]);
fflush(stdout);
scanf("%d%d", &key, &nxt);
if(key == x)
{
printf("! %d\n", x);
fflush(stdout);
exit();
}
if(nxt == -)
{
++i;
continue;
}
if(key < x)
{
vis[nxt] = ;
++i;
continue;
}
if(key > x)
{
vis[nxt] = ;
++i;
ans = min(ans, key);
}
}
printf("! %d\n", ans);
fflush(stdout);
return ;
}
感觉这个D题很无聊...
codeforces AIM Tech Round 4 div 2的更多相关文章
- 【Codeforces AIM Tech Round 4 (Div. 2) C】
·将排序限制于子序列中,又可以说明什么呢? C. Sorting by Subsequences ·英文题,述大意: 输入一个长度为n的无重复元素的序列{a1,a2……an}(1<= ...
- codeforce AIM tech Round 4 div 2 B rectangles
2017-08-25 15:32:14 writer:pprp 题目: B. Rectangles time limit per test 1 second memory limit per test ...
- Codeforces AIM Tech Round (Div. 2)
这是我第一次完整地参加codeforces的比赛! 成绩 news standings中第50. 我觉这个成绩不太好.我前半小时就过了前三题,但后面的两题不难,却乱搞了1.5h都没有什么结果,然后在等 ...
- AIM Tech Round 3 (Div. 2) (B C D E) (codeforces 709B 709C 709D 709E)
rating又掉下去了.好不容易蓝了.... A..没读懂题,wa了好几次,明天问队友补上... B. Checkpoints 题意:一条直线上n个点x1,x2...xn,现在在位置a,求要经过任意n ...
- Codeforces AIM Tech Round 5 (rated, Div. 1 + Div. 2)
A. Find Square time limit per test: 1 second memory limit per test: 256 megabytes input: standard in ...
- AIM Tech Round 3 (Div. 2) B 数学+贪心
http://codeforces.com/contest/709 题目大意:给一个一维的坐标轴,上面有n个点,我们刚开始在位置a,问,从a点开始走,走n-1个点所需要的最小路程. 思路:我们知道,如 ...
- AIM Tech Round 4 (Div. 2)(A,暴力,B,组合数,C,STL+排序)
A. Diversity time limit per test:1 second memory limit per test:256 megabytes input:standard input o ...
- AIM Tech Round 3 (Div. 1) B. Recover the String 构造
B. Recover the String 题目连接: http://www.codeforces.com/contest/708/problem/B Description For each str ...
- AIM Tech Round 3 (Div. 1) A. Letters Cyclic Shift 贪心
A. Letters Cyclic Shift 题目连接: http://www.codeforces.com/contest/708/problem/A Description You are gi ...
随机推荐
- UvaLive 4863 Balloons(贪心)
题意: 给定n个队伍, 然后A房间有a个气球, B房间有b个气球, 然后给出每个队伍所需要的气球数量和到A B房间的距离, 求把气球全部送到每个队伍的最短距离. 分析: 在气球充足的情况下, 那么我们 ...
- UVa 11998 破碎的键盘(数组实现链表)
题意: 输入一行字符,其中包含'[' 和 ‘]’, 意思为键盘上的home 和 end 键, 然后模拟字符在键盘上输入. 输入一行最终的结果 分析: 用数组模拟一个链表, 在链表的头尾插入字母然后输出 ...
- UVA 230 Borrowers (STL 行读入的处理 重载小于号)
题意: 输入若干书籍和作者名字,然后先按作者名字升序排列,再按标题升序排列,然后会有3种指令,BORROW,RETURN, SHELVE. BORROW 和 RETURN 都会带有一个书名在后面,如: ...
- xtu summer individual-4 D - Martian Strings
Martian Strings Time Limit: 2000ms Memory Limit: 262144KB This problem will be judged on CodeForces. ...
- sed和awk的常用实例
一.文本间隔 1.在每一行后面增加一空行 sed G guo.sh awk '{printf("%s\n\n",$0 ) }' 2.将文件中原来的空行删掉,并在在每一行后边增加一空 ...
- java springMVC 极致验证 非demo版
最近公司项目需要,做了个极致验证,自己在此做下记录. 先上效果图: 它的官网:http://www.geetest.com/ 里面有 身份验证.行为验证, 我这使用的为行为验证. 技术文档:ht ...
- [K/3Cloud] 树形单据体的应用说明
1.BOSIDE制作单据,支持动态表单,单据,基础资料,报表等域模型. 2.添加列,和原来单据体一样. 3.设置主键列名,父级主键字段名,行类型字段名,节点图片字段名(没有可以为空) 4.运行时展 ...
- 在workbench中导入.sql文件!(导入数据库文件)
第一步,登陆mysql workbench 第二步,打开自己的数据 ,此处默认(root) 打开数据库后页面 : 第三步,新建一个schema ,随便给个名字,这里起名为test : 可以看到test ...
- Redis事务【十二】
一.概述: 和众多其它数据库一样,Redis作为NoSQL数据库也同样提供了事务机制.在Redis中,MULTI/EXEC/DISCARD/WATCH这四个命令是我们实现事务的基石.相信对有关系型数据 ...
- 使用MediaPlayer播放、暂停、停止音乐
package com.pingyijinren.test; import android.media.MediaPlayer; import android.os.Environment; impo ...