小美在玩一项游戏。该游戏的目标是尽可能抓获敌人。
敌人的位置将被一个二维坐标 (x, y) 所描述。
小美有一个全屏技能,该技能能一次性将若干敌人一次性捕获。
捕获的敌人之间的横坐标的最大差值不能大于A,纵坐标的最大差值不能大于B。
现在给出所有敌人的坐标,你的任务是计算小美一次性最多能使用技能捕获多少敌人。
输入描述
第一行三个整数N,A,B,表示共有N个敌人,小美的全屏技能的参数A和参数B。
接下来N行,每行两个数字x,y,描述一个敌人所在的坐标。
1 ≤ N ≤ 500,1 ≤ A , B ≤ 1000,1 ≤ x , y ≤ 1000
输出描述
一行,一个整数表示小美使用技能单次所可以捕获的最多数量。
样例输入
3 1 1
1 1
1 2
1 3
样例输出
2
本题相当于给定一个矩形区域,需要使用矩形区域框出最多数量的敌人。考虑使用循环遍历每一个节点,而后再次进行二重循环遍历剩余的每一个节点,我们需要确保一开始的节点为当前举行区域的左上角,而后统计当前区域中的敌人个数。
考虑到数据量不大,可以直接构建二维矩阵用于记录每个坐标上是否有敌人,最终只需要遍历二维矩阵寻找在一个矩形区域中能够获得敌人的最大数量即可。值得注意的是,可能会出现多个敌人有着相同坐标的情况,因此不能单纯将矩阵的值设置为 1 。同时为了方便求解区间和,可以使用前缀和进行进一步优化。
int g[N][N];
int main() {
int n, a, b;
cin >> n >> a >> b;
for (int i = 1; i <= n; i++) {
int x, y;
cin >> x >> y;
g[x][y]++;
}
for (int i = 1; i <= 1000; i++) {
for (int j = 1; j <= 1000; j++) {
g[i][j] += g[i - 1][j] + g[i][j - 1] - g[i - 1][j - 1];
}
}
int ans = 0;
for (int i = 1; i <= 1000; i++) {
for (int j = 1; j <= 1000; j++) {
ans = max(ans, g[i][j] - g[max(0, i - a - 1)][j] - g[i][max(0, j - b - 1)] + g[max(0, i - a - 1)][max(0, j - b - 1)]);
}
}
cout << ans << endl;
return 0;
}
题目描述:
小美现在有一串彩带,假定每一厘米的彩带上都是一种色彩。
因为任务的需要,小美希望从彩带上截取一段,使得彩带中的颜色数量不超过K种。
显然,这样的截取方法可能非常多。于是小美决定尽量长地截取一段。
你的任务是帮助小美截取尽量长的一段,使得这段彩带上不同的色彩数量不超过K种。
输入描述
第一行两个整数N,K,以空格分开,分别表示彩带有N厘米长,你截取的一段连续的彩带不能超过K种颜色。
接下来一行N个整数,每个整数表示一种色彩,相同的整数表示相同的色彩。
1 ≤ N , K ≤ 5000,彩带上的颜色数字介于 [ 1 , 2000 ] 之间。
输出描述
一行,一个整数,表示选取的彩带的最大长度。
样例输入
8 3
1 2 3 2 1 4 5 1
样例输出
5
利用数组记录彩带上的每一种颜色,利用哈希集合控制彩带的类型以及数量。我们一次遍历每一个节点,探索从他开始最多能访问几种颜色。在探索过程中利用哈希集合判断当前颜色是否以获得并及时更新哈希表的大小,若哈希表大小超出范围则立刻终止。最终计算并更新当前的最大长度。
int main() {
int n, k, res = 0;
scanf("%d%d", &n, &k);
vector<int> line(n);
for (int i = 0; i < n; ++i) {
int temp;
scanf("%d", &temp);
line[i] = temp;
}
unordered_set<int> hs;
for (int i = 0; i < n; ++i) {
int j = i;
for (; j < n; ++j) {
if (!hs.count(line[j])) {
hs.insert(line[j]);
}
if (hs.size() > k) {
break;
}
}
res = max(res, j - i);
hs.clear();
}
printf("%d", res);
}
题目描述:
现在小美获得了一个字符串。小美想要使得这个字符串是回文串。
小美找到了你。你可以将字符串中至多两个位置改为任意小写英文字符 ’a’ - ‘z’
你的任务是帮助小美在当前制约下,获得字典序最小的回文字符串。
数据保证能在题目限制下形成回文字符串。
注:回文字符串:即一个字符串从前向后和从后向前是完全一致的字符串。
例如字符串 abcba , aaaa, acca 都是回文字符串。字符串 abcd , acea 都不是回文字符串。
输入描述
一行,一个字符串。字符串中仅由小写英文字符构成。
保证字符串不会是空字符串。
字符串长度介于 [ 1 , 100000 ] 之间。
输出描述
一行,一个在题目条件限制下所可以获得的字典序最小的回文字符串。
样例输入
acca
样例输出
aaaa
考虑到题目要求最多修改两个字符就能让当前字符串变成回文子串,且要求返回的回文子串应当是字典顺序最小的。我们可以使用双指针找到对应位置不相等的序号并记录下来,而后进行讨论:
int main() {
string s;
cin >> s;
int low = 0, high = s.size() - 1, diff = 0;
vector<int> it;
while (low < high) {
if (s[low] != s[high]) {
++diff;
it.emplace_back(low);
it.emplace_back(high);
}
++low;
--high;
}
low = 0;
high = s.size() - 1;
if (it.empty()) {
while (s[low] == 'a') {
++low;
--high;
}
s[low] = 'a';
s[high] = 'a';
} else if (it.size() == 2) {
if (s.size() % 2 && (s[it[0]] == 'a' || s[it[0]] == 'a')){
s[s.size() / 2] = 'a';
}
s[it[0]] = 'a';
s[it[1]] = 'a';
} else {
s[it[0]] = min(s[it[0]], s[it[1]]);
s[it[1]] = min(s[it[0]], s[it[1]]);
s[it[2]] = min(s[it[2]], s[it[3]]);
s[it[3]] = min(s[it[2]], s[it[3]]);
}
cout << s;
}
题目描述:
现在商店里有N个物品,每个物品有原价和折扣价。
小美想要购买商品。小美拥有X元,一共Y张折扣券。
小美需要最大化购买商品的数量,并在所购商品数量尽量多的前提下,尽量减少花费。
你的任务是帮助小美求出最优情况下的商品购买数量和花费的钱数。
输入描述
第一行三个整数,以空格分开,分别表示N,X,Y。
接下来N行,每行两个整数,以空格分开,表示一个的原价和折扣价。
1≤N≤100, 1≤X≤5000, 1≤Y≤50,每个商品原价和折扣价均介于[1,50]之间。
输出描述
一行,两个整数,以空格分开。第一个数字表示最多买几个商品,第二个数字表示在满足商品尽量多的前提下所花费的最少的钱数。
样例输入
3 5 1
4 3
3 1
6 5
样例输出
2 5
应该是 01 背包的变形,需要使用动态规划。而且考虑到优惠券,还存在一个原始价格到优惠价格之间的映射,没写完。代码参考。
int a[N],b[N];
int dp[105][5005][55],cost[105][5005][55];
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n, x, y;
cin >> n >> x >> y;
for (int i = 1; i <= n; i++)
cin >> a[i] >> b[i];
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= x; j++) {
for (int k = 0; k <= y; k++) {
dp[i][j][k] = dp[i - 1][j][k];
cost[i][j][k] = cost[i - 1][j][k];
if (j - a[i] >= 0) {
if (1 + dp[i - 1][j - a[i]][k] > dp[i][j][k]) {
dp[i][j][k] = 1 + dp[i - 1][j - a[i]][k];
cost[i][j][k] = cost[i - 1][j - a[i]][k] + a[i];
} else if (1 + dp[i - 1][j - a[i]][k] == dp[i][j][k])
cost[i][j][k] = min(cost[i][j][k], cost[i - 1][j - a[i]][k] + a[i]);
}
if (j - b[i] >= 0 && k >= 1) {
if (1 + dp[i - 1][j - b[i]][k - 1] > dp[i][j][k]) {
dp[i][j][k] = 1 + dp[i - 1][j - b[i]][k - 1];
cost[i][j][k] = cost[i - 1][j - b[i]][k - 1] + b[i];
} else if (1 + dp[i - 1][j - b[i]][k - 1] == dp[i][j][k])
cost[i][j][k] = min(cost[i][j][k], cost[i - 1][j - b[i]][k - 1] + b[i]);
}
}
}
}
int mn = 1e9;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= x; j++) {
for (int k = 0; k <= y; k++) {
//cout<<i<<" "<<j<<" "<<k<<" "<<dp[i][j][k]<<" "<<cost[i][j][k]<<endl;
if (dp[i][j][k] == dp[n][x][y])
mn = min(mn, cost[i][j][k]);
}
}
}
cout << dp[n][x][y] << " " << mn << endl;
return 0;
}
我正在使用i18n从头开始构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在rubyonrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi
我看到这个错误:translationmissing:da.datetime.distance_in_words.about_x_hours我的语言环境文件:http://pastie.org/2944890我的看法:我已将其添加到我的application.rb中:config.i18n.load_path+=Dir[Rails.root.join('my','locales','*.{rb,yml}').to_s]config.i18n.default_locale=:da如果我删除I18配置,帮助程序会处理英语。更新:我在config/enviorments/devolpment
如果我使用ruby版本2.5.1和Rails版本2.3.18会怎样?我有基于rails2.3.18和ruby1.9.2p320构建的rails应用程序,我只想升级ruby的版本,而不是rails,这可能吗?我必须面对哪些挑战? 最佳答案 GitHub维护apublicfork它有针对旧Rails版本的分支,有各种变化,它们一直在运行。有一段时间,他们在较新的Ruby版本上运行较旧的Rails版本,而不是最初支持的版本,因此您可能会发现一些关于需要向后移植的有用提示。不过,他们现在已经有几年没有使用2.3了,所以充其量只能让更
大家好!我对我的:username字段进行了一个小的验证,它应该是4到30个字符。我写了一个验证::length=>{:within=>4..30,:message=>I18n.t('activerecord.errors.range')-我想显示一个错误各种错误的消息(不像,太长或太短),但这里有一个问题-我可以将最小值和最大值都传递给翻译,以便有类似的东西:用户名应该在4到30个字符之间。目前我有:range:"shouldbebetween%{count}and%{count}characters",这显然不起作用(只是为了检查)。是否可以从范围中获取这些值?谢谢大家的指教!
如果特定语言环境中缺少翻译,如何配置i18n以使用en语言环境翻译?当前已插入翻译缺失消息。我正在使用RoR3.1。 最佳答案 找到相似的question这里是答案:#application.rb#railswillfallbacktoconfig.i18n.default_localetranslationconfig.i18n.fallbacks=true#railswillfallbacktoen,nomatterwhatissetasconfig.i18n.default_localeconfig.i18n.fallback
我正在使用Enumerizegemhttps://github.com/brainspec/enumerize/它允许我以简单的形式使用漂亮的选择。并且此选择中的所有选项均已翻译。en:enumerize:user:sex:male:'Man'female:'Woman'所以,在我的表单中,我选择了变体“男人”和“女人”。当我用“男人”值保存记录时,我得到了“男性”值的性别属性。现在我想在显示页面上将该值显示为“Man”,但是=@user.sex输出为'male'而不是'Man' 最佳答案 我可能会使用.text方法(您可以通过使用
当音乐碰上区块链技术,会擦出怎样的火花?或许周杰伦已经给了我们答案。8月29日下午,B站独家首发周杰伦限定珍藏Demo独家访谈VCR,周杰伦在VCR里分享了《晴天》《青花瓷》《搁浅》《爱在西元前》四首经典歌曲Demo背后的创作故事,并首次公布18年前未发布的神秘作品《纽约地铁》的Demo。在VCR中,方文山和杰威尔音乐提及到“多亏了区块链技术,现在我们可以将这些Demos,变成独一无二具有收藏价值的艺术品,这些Demos可以在薄盒(国内数藏平台)上听到。”如何将音乐与区块链技术相结合,薄盒方面称:“薄盒作为区块链技术服务方,打破传统对于区块链技术只能作为数字收藏的理解。聚焦于区块链技术赋能,在
我正在根据Rails指南的建议开发Rails应用程序,以创建包含翻译的文件夹树和文件。我的文件夹树与此类似:|-defaults|---es.rb|---en.rb|-models|---book|-----es.rb|-----en.rb|-views|---defaults|-----es.rb|-----en.rb|---books|-----es.rb|-----en.rb|---users|-----es.rb|-----en.rb|---navigation|-----es.rb|-----en.rbconfig/locales/views/books/en.yml中的内容
类似的问题,但对于java,Keepingi18nresourcessynced如何保持i18nyamllocals的key同步?即,当将key添加到en.yml时,如何将它们添加到nb.yml或ru.yml?如果我在my_title:"atitle"旁边添加键my_label:"sometextinenglish"我想把它给我的其他本地人我指定,因为我不能做所有的翻译,它应该回到其他语言的英语例如en.ymlsomegroup:my_tile:"atitleinenglish"my_label:"sometextinenglish"othergroup:...我想发出命令,将整个键和
您可能知道,从Rails2.2开始,Rails附带了一个简单的本地化和国际化后端。默认情况下,您可以将需要翻译的字符串存储在config文件夹中的本地化文件中。config/locales/en.ymlconfig/locales/it.yml但是Rails也提供了本地化模板和局部的能力。例如,MainController#index操作可以根据模板文件名和当前区域设置选择本地化模板。apps/views/main/index.it.html.erbapps/views/main/index.en.html.erb当您需要翻译单个字符串或短段落时,第一个功能很有用。当同一Action根