核心内容摘要
如何用TinyPNG4Mac实现高效图片压缩与自定义设置
P12870 [蓝桥杯 2025 国 Python A] 铺设能源管道题目描述能源公司正着手建立新的基地。
为了确保基地的能源供应公司计划铺设一条长度至少为 n 公里的能源管道。
铺设管道的成本并非简单地与管道长度成正比而是由管道长度的各位数字之和决定。
例如铺设 123 公里的管道实际成本为 1236 。
为了尽可能降低成本公司希望找到一个长度为 m 公里的铺设方案使得 m 不小于 n并且 m 的数位和最小。
如果存在多个满足条件的 m则选择数值最小的方案以确保在成本相同的情况下尽可能减少资源浪费。
现在请你帮助能源公司计算出最优的管道铺设长度 m。
输入格式输入一行包含一个整数 n表示需要铺设的最低管道长度。
输出格式输出一行包含一个整数 m表示最优的管道铺设长度。
输入输出样例输入 #1复制9输出 #1复制10说明/提示【评测用例规模与约定】对于 30% 的评测用例1≤n≤100。
对于所有的评测用例1≤n≤109。
这题我想到用字符串这样直接能知道n是几位数不用慢慢数。
#includeiostream #includestring using namespace std; //如果是1后面跟x个0的形式已经是最小长度了直接输出即可 bool check(string n) { if(n[0]!
return false; for(int i1;in.size();i) { if(n[i]!
return false; } return true; } int main() { string n; cinn; if(check(n)true) coutnendl; //不是的话就输出1位数×0 else { cout1; for(int i1;in.size();i) cout0; } return 0; }插一句看到评论区有人打表能AC莫名有点好笑简直就是大力出奇迹代码如下#include bits/stdc.h using namespace std; #define int long long signed main() { int n; cin n; if (n
cout 1 endl; else if (n
cout 10 endl; else if (n
cout 100 endl; else if (n
cout 1000 endl; else if (n
cout 10000 endl; else if (n
cout 100000 endl; else if (n
cout 1000000 endl; else if (n
cout 10000000 endl; else if (n
cout 100000000 endl; else if (n
cout 1000000000 endl; return 0; }P1478 陶陶摘苹果升级版题目描述又是一年秋季时陶陶家的苹果树结了 n 个果子。
陶陶又跑去摘苹果这次他有一个 a 公分的椅子。
当他手够不着时他会站到椅子上再试试。
这次与 NOIp2005 普及组第一题不同的是陶陶之前搬凳子力气只剩下 s 了。
当然每次摘苹果时都要用一定的力气。
陶陶想知道在 s0 之前最多能摘到多少个苹果。
现在已知 n 个苹果到达地上的高度 xi椅子的高度 a陶陶手伸直的最大长度 b陶陶所剩的力气 s陶陶摘一个苹果需要的力气 yi求陶陶最多能摘到多少个苹果。
输入格式第 1 行两个数 苹果数 n力气 s。
第 2 行两个数 椅子的高度 a陶陶手伸直的最大长度 b。
第 3 行~第 3n−1 行每行两个数 苹果高度 xi摘这个苹果需要的力气 yi。
输出格式只有一个整数表示陶陶最多能摘到的苹果数。
输入输出样例输入 #1复制8 15 20 130 120 3 150 2 110 7 180 1 50 8 200 0 140 3 120 2输出 #1复制4说明/提示对于 100% 的数据n≤5000, a≤50, b≤200, s≤1000, xi≤280, yi≤100。
在vector里面套pairsort函数默认先按照第一个元素升序第一个元素相等再按照第二个元素升序。
其实 这题本来我想用map自动排序的功能但是后面想想发现如果力气相同新的力气会覆盖旧的力气不可行。
#includeiostream #includevector #includealgorithm using namespace std; vector pairint, int mp; int main() { int n, total_effort, chair_height, arm_len; int cnt 0; cin n total_effort chair_height arm_len; for (int i 0;i n;i) { int height, effort; cin height effort; mp.push_back({ effort,height }); } //先按照力气升序 //力气相同再按照高度升序 sort(mp.begin(), mp.end()); for (int i 0;i n;i) { int apple_effort mp[i].first; int apple_height mp[i].second; if (total_effort apple_effort chair_height arm_len apple_height) { total_effort total_effort - apple_effort; cnt; } } cout cnt endl; return 0; }但我这个还不是最好的方法我写完和科技交流了一下先筛选能够到的苹果再按力气排序因为有些苹果即使力气小但高度太高也摘不到#includeiostream #includevector #includealgorithm using namespace std; vector int e;//effort int main() { int n, total_effort, chair_height, arm_len; int cnt 0; cin n total_effort chair_height arm_len; for (int i 0;i n;i) { int height, effort; cin height effort; //先筛选能够到的苹果 if (chair_height arm_len height) e.push_back(effort); } //再按力气排序 sort(e.begin(), e.end()); //注意苹果的总数量不一定等于能够到的苹果的数量 //因此这一行应该写size而不是n for (int i 0;i e.size();i) { if (total_effort e[i]) { total_effort - e[i]; cnt; } } cout cnt endl; return 0; }B3637 最长上升子序列题目描述这是一个简单的动规板子题。
给出一个由 n(n≤
个不超过 106 的正整数组成的序列。
请输出这个序列的最长上升子序列的长度。
最长上升子序列是指从原序列中按顺序取出一些数字排在一起这些数字是逐渐增大的。
输入格式第一行一个整数 n表示序列长度。
第二行有 n 个整数表示这个序列。
输出格式一个整数表示答案。
输入输出样例输入 #1复制6 1 2 4 1 3 4输出 #1复制4说明/提示分别取出
1、
2、