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的更多相关文章

  1. 【Codeforces AIM Tech Round 4 (Div. 2) C】

    ·将排序限制于子序列中,又可以说明什么呢? C. Sorting by Subsequences ·英文题,述大意:       输入一个长度为n的无重复元素的序列{a1,a2……an}(1<= ...

  2. 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 ...

  3. Codeforces AIM Tech Round (Div. 2)

    这是我第一次完整地参加codeforces的比赛! 成绩 news standings中第50. 我觉这个成绩不太好.我前半小时就过了前三题,但后面的两题不难,却乱搞了1.5h都没有什么结果,然后在等 ...

  4. 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 ...

  5. 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 ...

  6. AIM Tech Round 3 (Div. 2) B 数学+贪心

    http://codeforces.com/contest/709 题目大意:给一个一维的坐标轴,上面有n个点,我们刚开始在位置a,问,从a点开始走,走n-1个点所需要的最小路程. 思路:我们知道,如 ...

  7. 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 ...

  8. 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 ...

  9. 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 ...

随机推荐

  1. table JS合并单元格

    function _w_table_rowspan(_w_table_id,_w_table_colnum){ _w_table_firsttd = ""; _w_table_cu ...

  2. 集训第四周(高效算法设计)B题 (二分查找优化题)

    ---恢复内容开始--- Description   Before the invention of book-printing, it was very hard to make a copy of ...

  3. Swagger UI教程

    文档源地址 http://www.68idc.cn/help/makewebs/qitaasks/20160621620667.html Swagger-UI本身只提供在线测试功能,要集成它还需要告诉 ...

  4. 张小龙最新内部演讲:KPI 是副产品,警惕复杂流程

    张小龙最新内部演讲:KPI 是副产品,警惕复杂流程 各位 WXG(微信事业群)的同事们,大家早上好!又到我们一年一度的领导力大会. 大家都看到,我们微信团队膨胀还是比较快的,有 1500 多人了.对此 ...

  5. package control(转载)

    Package Control(扩展包管理器)   []Package Control 可以看做是一个ST的扩展管理器,可以去下载.安装.删除 Sublime Text 3的各种插件.皮肤等.   [ ...

  6. 【07】Ajax status和statusText状态对照表

    Ajax status和statusText状态对照表   XMLHttpRequest 对象的 status 和 statusText 属性保存有服务器返回的 http 状态码,不同的是,statu ...

  7. Xcode8、 iOS10 适配问题

    调用相机.相册.麦克风.位置等隐私问题崩溃解决办法 你的项目中访问了隐私数据,比如:相机,相册,联系人等,在Xcode8中打开编译的话,统统会crash,控制台会输出下面这样的日志: 这是因为iOS对 ...

  8. SharedPreferences保存用户偏好参数

    package com.example.administrator.myapplication; import android.content.Context; import android.cont ...

  9. cogs——7. 通信线路

    7. 通信线路 ★★   输入文件:mcst.in   输出文件:mcst.out   简单对比时间限制:1.5 s   内存限制:128 MB 问题描述 假设要在n个城市之间建立通信联络网,则连通n ...

  10. 洛谷——P1062 数列

    洛谷——P1062 数列 题目描述 给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是: 1,3,4,9,10,12,1 ...