3449

思路:我们首先可以这样考虑,如果所给的字母是有序的,比如

aabbcc,很显然我们只需将这个字符串右移两位即可达到要求

ccaabb, 移动的大小其实就等于整个字符串中出现次数多的字符的个数,注意不能组成的情况,所以我们直接排序然后移动即可

#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <sstream>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <utility>
#include <bitset>using namespace std;
#define LL long long
#define pb push_back
#define mk make_pair
#define fi first
#define se second
#define lson (rt << 1)
#define rson ((rt << 1) | 1)
#define pill pair<int, int>
#define mst(a, b)   memset(a, b, sizeof a)
#define REP(i, x, n)    for(int i = x; i <= n; ++i)
const int MOD = 1e9 + 7;
const int qq = 1e5 + 10;
const int INF = 1e9 + 10;
struct Node {char ch;int id;bool operator < (const Node &a) const {return ch < a.ch;}
}p[qq], ans[qq];
char st[qq];
int vis[30];
bool cmp(const Node &a, const Node &b) {return a.id < b.id;
}int main(){scanf("%s", st);int len = strlen(st);for (int i = 0; i < len; ++i) {p[i].ch = st[i];p[i].id = i;vis[p[i].ch - 'a']++;}int maxn = 0;for (int i = 0; i < 26; ++i) {maxn = max(maxn, vis[i]);}if (maxn > len / 2) {puts("impossible");return 0;}sort(p, p + len);for (int i = 0; i < len; ++i) {ans[i].id = p[i].id;ans[i].ch = p[(i + maxn) % len].ch; }sort(ans, ans + len, cmp);for (int i = 0; i < len; ++i) {printf("%c", ans[i].ch);}puts("");return 0;
}

3451

思路:这题二分匹配还是能想到的,WA了几发才发现不是一般的二分图匹配,这里有一个限制,就是你要进入下一轮的前提是你这轮一定得过,也就是说如果在匈牙利算法中当前找不到增广路就结束算法,还有一个要注意的地方,就是需要注意每次memset的时候空间不能过大,我这里将能匹配的素数离散化了

#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <sstream>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <utility>
#include <bitset>using namespace std;
#define LL long long
#define pb push_back
#define mk make_pair
#define fi first
#define se second
#define lson (rt << 1)
#define rson ((rt << 1) | 1)
#define pill pair<int, int>
#define mst(a, b)   memset(a, b, sizeof a)
#define REP(i, x, n)    for(int i = x; i <= n; ++i)
const int MOD = 1e9 + 7;
const int qq = 1e5 + 10;
const int INF = 1e9 + 10;
int n, num[qq], mt[qq];
int ispm[qq * 10], mp[qq];
bool vis[3000 * 30];
vector<int> vt[qq];
bool dfs(int u) {for (int i = 0; i < vt[u].size(); ++i) {if (!vis[mp[vt[u][i]]]) {vis[mp[vt[u][i]]] = true;if (!mt[mp[vt[u][i]]] || dfs(mt[mp[vt[u][i]]])) {mt[mp[vt[u][i]]] = u;return true;}}}return false;
}
int main(){int n;   scanf("%d", &n);for (int i = 1; i <= n; ++i) {scanf("%d", num + i);int x = num[i];for (int j = 2; j * j <= x; ++j) {if (x % j == 0) {ispm[j]++;vt[i].pb(j);while (x % j == 0) x /= j;}}if (x > 1) {vt[i].pb(x);ispm[x]++;}}int cnt = 0;for (int i = 1; i < qq * 10; ++i) {if (ispm[i])   mp[i] = ++cnt;}int ans = 0;for (int i = 1; i <= n; ++i) {mst(vis, false);if (dfs(i)) ans++;else    break;}printf("%d\n", ans);return 0;
}

EOJ 3449 3451相关推荐

  1. 数据库设计之area区域表改版后,数据库设计之区域表

    原先版本:http://blog.csdn.net/u012012240/article/details/51221080 原先版本直辖市的省级别和市级别为1条记录,1条记录即代表省又代表市,操作起来 ...

  2. 数据库设计之area区域表

    这个用起来还可以的比较全,是2015年更新的 在这个版本的数据上我做了个小的改动,如果你使用不方便可以参考改版后的数据:http://blog.csdn.net/u012012240/article/ ...

  3. hdu 3449 Consumer 01背包

    http://acm.hdu.edu.cn/showproblem.php?pid=3449 这个题AC的有点稀里糊涂(是1A过的),采用的01背包的方法: 思路:定义了两个数组用来存储最终结果和但购 ...

  4. hdu 3449 有依赖性的01背包

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=3449 Consumer Description FJ is going to do som ...

  5. EOJ Monthly 2019.11 E. 数学题(反演 + 杜教筛 + 拉格朗日插值)

    EOJ Monthly 2019.11 ∑i=1n∑a1=1i∑a2=1i∑a3=1i⋯∑ak−1i∑aki[gcd(a1,a2,a3,-,ak−1,ak,i)==1]=∑i=1n∑d∣iμ(d)⌊i ...

  6. EOJ 3344.送命题

    题目链接:EOJ 3344.送命题 题目乍一看以为是斐波那契数列.其实不然. #include <stdio.h> #include <stdlib.h> #include & ...

  7. c语言编程*三角形图形右看齐,EOJ 3213 向右看齐

    题目描述 N 头奶牛被紧急动员起来了,它们排成了一条长列.从左向右看,排在第 i 个位置的奶牛身高为 Hi.约翰一声令下,所有奶牛向右看齐.假设每头奶牛只能看到比自己高的牛.请问它们各自看到的最近的一 ...

  8. EOJ Monthly 2019.3 (based on March Selection) -D .宇恒棋

    D.宇恒棋 EOJ传送门 Q小方以前不会下宇恒棋,现在他会了,所以他急切的想教会你. 宇恒棋的规则是这样的:在一个 n×m 的棋盘上,QQ小方和你各有一枚棋子.你们轮流行动,每一次轮到一方的回合时,他 ...

  9. EOJ Contest61 2018研究生面试机考(软件工程)个人题解

    本人ECNU大一学渣一枚.闲来无事做了EOJ Contest61(EOJ 2018研究生面试机考(软件工程)),发现全是水题,正好练一下刚开始学的C++.然后闲来无事就发个来自菜鸡的题解. A.西班牙 ...

最新文章

  1. SystemCenter2012SP1实践(15)共享库服务器和ISO
  2. oracle更改密码机制,Oracle密码机制以及常用操作
  3. lightinthebox程序bug zencart
  4. 原型模式——浅克隆和深克隆
  5. mysql 唯一索引 性能_普通索引和唯一索引的区别、性能差异,以及其他索引简介...
  6. python tkinter计算器实例_python小实例——tkinter实战(计算器)
  7. C++Persistent segment tree持久段树的实现算法(附完整源码)
  8. java executebatch_JDBC批量执行executeBatch
  9. java中访问修饰符_Java中的非访问修饰符是什么?
  10. Java高级工程师必看系列,从基础到源码统统帮你搞定
  11. 论文浅尝 | 二维卷积知识图谱嵌入
  12. 机器学习 —— 概率图模型(推理:采样算法)
  13. GARFIELD@09-11-2004
  14. 机器人带陀螺仪走钢丝_一言不合就走钢丝,机器人化身“七变美男子”,萌翻你!...
  15. 申报表计算机代码是什么,金税盘的维护费在申报表上面有一个要填写减免性质代码怎么填啊 ?那个代码是什么呢?...
  16. 11.scrapy框架持久化存储
  17. ROC曲线面积AUC详解
  18. Person Re-identification using Heterogeneous Local Graph Attention Networks(基于异构局部图注意力网络的人员再识别)
  19. window10系统ie设置代理,保存不了的问题
  20. Tool之synergyc:synergyc的简介、安装、使用方法(鼠标键盘控制两台或多台电脑)之详细攻略

热门文章

  1. windows下,OpenGL播放NV12
  2. crossdomain.xml的作用
  3. 淌入客户市场的“深水区”,锐捷云桌面体验再升级
  4. 4.前端开发工具介绍以及下载使用
  5. Excel 2007:双击文件打不开,提示“找不到”(解决方法)
  6. 微信小程序swiper图片尺寸_微信小程序 - swiper 高度自适应
  7. sqlserver2017等待数据库引擎恢复句柄失败个人经历参考
  8. 机房数据中心规划设计方案
  9. 逻辑回归原理详解(附手写推导)
  10. python中for循环流程图_Python for 循环