7-11 种苹果 (30分)(未完成不AC)

7-11 种苹果 (30分)

最近流行种苹果的游戏,玩家种下一颗苹果树,初始成长值为0,每次浇水都会增加成长值,当成长值大于等于V时,就可以收获成熟的苹果了。玩家拥有五种颜色(红色、黄色、蓝色、绿色、紫色)的水壶若干个,每浇水一次就消耗一个水壶,不同颜色的水壶水量不一定一样,因此用不同颜色的水壶浇水苹果树获得的成长值也可能不一样。苹果成熟后剩余水壶中的水量仍然可以继续在下一局游戏中继续使用,因此,玩家想用最少的水量让苹果成熟,最大程度节约水量。请你帮他计算下苹果成熟的最少浇水量。

输入格式:

输入第一行为一个整数T(1<=T<=100),代表测试数据的组数,每组数据的第一行为一个整数V(0<=V<=1012),代表苹果成熟应达到的成长值,随后5行,每行包括三个整数N,G,W(0<=N<=1000,0<=W,G<=109),分别代表其中一种颜色水壶的个数,浇水后对应的成长值,水量,中间用空格分割,并且所有颜色水壶的总个数不超过1000。

输出格式:

每组数据都对应一行输出。如果苹果能够成熟,该行输出两个整数,分别代表苹果成熟时的最低浇水量和所获得的成长值。如果所有水壶的水量都浇上,苹果也成熟不了,则输出”Impossible!”。

输入样例:

3
100
20 5 5
16 10 4
3 20 10
15 2 2
5 8 6
60
2 3 2
3 5 6
1 3 5
2 6 1
3 4 2
50
2 20 10
3 10 20
2 5 6
20 4 10
12 6 5

输出样例:

40 100
Impossible!
30 52

只能通过第一个测试点的代码:(等待大佬的AC代码)

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
struct wpot{
	int N;
	long long G,W;
	float perwater;
};
bool cmp(struct wpot pot1,struct wpot pot2){
	if(pot1.perwater != pot2.perwater)
	return pot1.perwater > pot2.perwater;
	else
	return pot1.N*pot1.G > pot2.N*pot2.G;
}
int main(){
	int T;
	cin >> T;
	while(T--){
		long long num;
		cin >> num;
		struct wpot pot[7];
		long long sum = 0;
		for(int i = 0;i < 5;i++){
			cin >> pot[i].N >> pot[i].G >> pot[i].W;
			pot[i].perwater = 1.0*pot[i].G / pot[i].W; 
			sum += pot[i].N * pot[i].G;
		}
		sort(pot,pot+5,cmp);
		if(sum < num){
			cout << "Impossible!" << endl;
		}else{
			long long water = 0,grow = 0;
			for(int i = 0;i < 5;i++){
				if(pot[i].N*pot[i].G >= num){
					long long bei = (int)(1.0*num/pot[i].G+0.999999);
					water += bei * pot[i].W;
					grow += bei * pot[i].G;
					break;
				}else{
					water += pot[i].N * pot[i].W;
					grow += pot[i].N * pot[i].G;
					num -= grow;
				}
			}
			cout << water << " " << grow << endl;
		}
	}
}

大佬写出来的AC代码,及思想,借鉴一下:

/*
刘哲轩
经典的多重背包问题,但是由于体积太大,不好使用动态规划,所以改用dfs+贪心剪枝。
这题采用7-8月饼类似的贪心方法可以拿到20分,但是这种做法是错误的,比如
1
100
3 30 10
2 20 9
5 11 5
5 7 7
5 8 8

由于30/10=3>20/9=2.222>11/5=2.2,所以采用贪心算法会选择三个第一种壶和一个第二种水壶总用水量是39,但是选择三个第一种壶和一个第三种壶用水量是35,显然更优,因此单纯的贪心算法是错误的。
但是这题dfs+二分的时间复杂度是O(n^4*logn),会超时。但是由于最优解一定在贪心算法所求的可行解的答案附近,所以可以dfs搜索贪心算法所求出的解的邻域。
*/
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct my {
    ll w, g;
    int num;
    double g_w;
    bool operator<(const my& t) { return g_w > t.g_w; }
}tr[5];
ll ans = 1e18, sum, res = 0, sres = 0;
double n[5];
void dfs(ll V, int u) {
    if (V <= 0) {
        if (ans > res) {
            ans = res;
            sum = sres;
        }
        return;
    }
    if (u == 4) {
        ll t = min((ll)tr[u].num, V / tr[u].g + 1);
        if (t * tr[u].g >= V) {
            if (ans > res + t * tr[u].w) {
                ans = res + t * tr[u].w;
                sum = sres + t * tr[u].g;
            }
        }
        return;
    }
    if (V % tr[u].g == 0 && V / tr[u].g <= tr[u].num) {
        if (ans > res + V / tr[u].g * tr[u].w) {
            ans = res + V / tr[u].g * tr[u].w;
            sum = sres + V;
        }
    }
    else {
        ll up = min((ll)tr[u].num, (ll)n[u] + 9), down = max(0ll, (ll)n[u] - 9);
        for (int i = down; i <= up; i++) {
            res += i * tr[u].w;
            sres += i * tr[u].g;
            dfs(V - i * tr[u].g, u + 1);
            res -= i * tr[u].w;
            sres -= i * tr[u].g;
        }
    }
}
void solve() {
    ans = 1e18, sum = 0, res = 0, sres = 0;
    ll Vt,V;
    scanf("%lld", &V);
    Vt = V;
    for(int i=0;i<5;i++) n[i]=0;
    for (int i = 0; i < 5; i++) { scanf("%d %lld %lld", &tr[i].num, &tr[i].g, &tr[i].w); tr[i].g_w = (double)tr[i].g / tr[i].w; }
    sort(tr, tr + 5);
    for (int i = 0; i < 5; i++) {
        if (!V) break;
        if (tr[i].g * tr[i].num >= V) 
        {        n[i] = (double)V / tr[i].g;
        V = 0;
        }
        else V -= tr[i].g * tr[i].num, n[i] = tr[i].num;
    }
    dfs(Vt, 0);
    if (ans == 1e18) puts("Impossible!");
    else printf("%lld %lld\n", ans, sum);
}
int main() {
    int Case;
    cin >> Case;
    while (Case--) solve();
    return 0;
}
<think>嗯,用户问的是苹果手机视频导出的方法。首先,我得考虑用户可能的使用场景,可能他们需要把手机里的视频传到电脑或者其他设备上保存或编辑。用户可能是普通用户,太熟悉技术操作,所以需要简单易懂的步骤。 接下来,我得想想苹果手机导出视频的常见方法。常见的有使用数据线连接电脑,通过iTunes或者直接访问文件。可能用户对iTunes太熟悉,所以需要步骤说明。另外,现在很多用户可能更倾向于无线传输,比如用AirDrop或者iCloud,这些方法也需要涵盖进去。 还要注意同操作系统的区别,比如Windows和Mac在连接时的同步骤。用户可能用的是Windows电脑,所以需要详细说明在Windows上如何操作,比如安装iTunes,找到DCIM文件夹等。 另外,可能用户会遇到一些问题,比如信任电脑的提示,或者照片应用无法识别视频,这时候需要给出解决方案,比如解锁手机并点击信任,或者使用第三方工具。还要提到视频格式的问题,比如HEVC格式在旧设备上的兼容性,可能需要转换格式。 还要考虑用户可能想用数据线,所以需要介绍无线方法,比如通过iCloud网页版或者第三方应用,如Google Photos、QQ等。这些方法可能更方便,但需要注意网络环境和存储空间。 需要确保每个步骤清晰,没有技术术语,让用户容易跟随。同时提醒注意事项,比如保持连接稳定,备份重要数据,避免导出过程中断导致文件损坏。最后,总结同方法的优缺点,帮助用户选择最适合自己的方式。</think>### 苹果手机视频导出全方案(2024适用) --- #### 一、基础有线传输法 **方法1:通过「文件资源管理器」直连** ```text 1. 使用原装Lightning/USB-C数据线连接iPhone与电脑 2. 解锁iPhone → 点击「信任此电脑」 3. 打开「此电脑」→ 双击「Apple iPhone」设备图标 4. 进入内部存储 → DCIM文件夹 → 直接复制视频文件 ``` *注:支持MOV/MP4/M4V等格式直接导出,HEVC(H.265)视频需Windows 10+系统兼容* **方法2:使用Windows照片应用** ```powershell 1. 连接设备后自动弹出导入提示(或手动打开「照片」应用) 2. 勾选需要导出的视频 → 设置导出路径(建议选择「按日期整理」) 3. 点击「导入」完成操作(自动跳过已传输文件) ``` --- #### 二、苹果生态专用方案 **方案1:AirDrop隔空投送** ```text 操作路径: iPhone端:选择视频 → 享按钮 → AirDrop → 选择Mac/其他苹果设备 Mac端:Finder侧边栏选择iPhone → 接收文件自动保存至下载文件夹 技术参数: - 传输速度:802.11ac Wi-Fi下可达30MB/s - 格式限制:支持ProRes 4K(需iOS 15+) ``` **方案2:iCloud云盘同步** ```mermaid graph LR A[iPhone拍摄视频] --> B[iCloud照片图库] B --> C[Mac访达] & D[Windows iCloud客户端] C --> E[本地文件夹] D --> F[指定同步目录] ``` *关键设置:需开启「设置→照片→iCloud照片→下载并保留原片」* --- #### 三、专业工作流解决方案 **场景1:Final Cut Pro X联动** ```text 1. 使用Lightning转SD卡读卡器(适用ProRes RAW素材) 2. 通过「文件」App将视频导入LumaFusion 3. 连接Mac使用「随航」功能直接拖拽时间线 ``` **场景2:批量导出商业拍摄素材** ```bash # 使用Apple Configurator 2命令行工具 ideviceinstaller -u <UDID> -o export /path/to/save # 获取设备UDID: idevice_id -l ``` --- #### 四、第三方工具推荐 | 工具名称 | 平台支持 | 核心功能 | 传输速度 | |----------------|-------------|-----------------------------|-------------| | iMazing | Win/Mac | 选择性导出+自动转码 | USB3.0满速 | | AnyTrans | Win/Mac | 4K无损传输 | 35MB/s | | 爱思助手 | Win | 免费HEVC转码 | USB2.0速率 | | Waltr Pro | Mac | 直传NAS/电视 | 网络依赖 | --- #### 五、特殊场景处理 **情况1:Live Photo动态照片** ```text 导出步骤: 1. 在Mac上使用「照片」App导出 → 选择「保留原片」 2. 得到两个文件: - IMG_1234.MOV(视频部- IMG_1234.HEIC(静态照片) ``` **情况2:ProRes格式视频** ```text 注意事项: - 需iPhone 13 Pro及以上机型 - 连接SSD使用「文件」App导出 - 建议使用Blackmagic Disk Speed Test验证写入速度 ``` --- #### 六、常见问题诊断 **Q1:提示「文件正在使用」无法导出** ```text 解决方案: 1. 关闭iPhone后台的「文件」App 2. 强制退出「相机」应用 3. 重启iPhone后重新连接 ``` **Q2:导出后音画同步** ```text 技术原因: - 高帧率视频(如240fps)在非编软件中未正确解释 修复方案: Premiere Pro → 右键素材 → 修改解释帧率为实际拍摄 ``` --- #### 进阶技巧 1. **EXIF信息保留**: ```python # 使用exiftool保留元数据 exiftool -tagsFromFile input.MOV -all:all output.MOV ``` 2. **加密传输**: ```text 通过「文件」App创建加密zip: 选择视频 → 享 → 压缩 → 设置密码 ``` --- ### 操作建议 1. **日常快速导出**:优先使用Lightning直连+DCIM文件夹复制 2. **商业级需求**:搭配iMazing+Final Cut Pro X工作流 3. **跨平台共享**:推荐iCloud网页版(icloud.com)直接下载 *最后提醒:iOS 17+系统需注意「粘贴板权限」设置,若遇传输中断请检查「设置→隐私与安全性→粘贴板访问」权限*
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

China-Rookie-LSJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值