A Shortest Distance

  题意相当于一个环,找出两点间从不同方向得到的距离中的最小值。

 #include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector> using namespace std;
vector<int> disVec;
int main()
{
int N, tmpDis;
cin >> N;
disVec.resize(N+,);
for(int i = ; i <= N; ++ i)
{
cin >> tmpDis;
disVec[i] = disVec[i-] + tmpDis;
}
cin >> disVec[];
int M, tmpSt, tmpEnd;
cin >> M;
for(int i = ; i < M; ++ i)
{
cin >> tmpSt >> tmpEnd;
if(tmpSt > tmpEnd)
swap(tmpSt, tmpEnd);
tmpDis = min(disVec[tmpEnd]-disVec[tmpSt], disVec[tmpSt]+disVec[]-disVec[tmpEnd]+disVec[N]);
cout << tmpDis << endl;
}
}

B Student List for Course

  课程清单,这个题目有点意思,我是通过把cin,cout 改成printf和scanf让它不超时的

  试过用set会超时,暂时没有想到更好的方法。

 #include <cstdio>
#include <iostream>
#include <algorithm>
#include <set>
#include <string>
#include <vector> using namespace std;
vector<int> disVec;
vector<string> classInfo[];
int main()
{
int N, K, tmpNum, tmpClass;
string tmpStr;
cin >> N >> K;
for(int i = ; i <= N; ++ i)
{
cin >> tmpStr;scanf("%d", &tmpNum);
while(tmpNum--)
{
scanf("%d", &tmpClass);
classInfo[tmpClass].push_back(tmpStr);
}
}
for(int i = ; i <= K; ++ i)
{
vector<string> tmpVec = classInfo[i];
sort(tmpVec.begin(), tmpVec.end());
printf("%d %d\n", i, tmpVec.size());
for(auto it = tmpVec.begin(); it != tmpVec.end(); ++ it)
{
printf("%s\n", (*it).c_str());
}
}
return ;
}

C Find Coins

  因为需要两个硬币,所以可以排序后,用双指针法,从两端向中间找,因为在找到合适两个硬币前,一旦左侧硬币加右侧硬币超过了所需面值,右边这个硬币肯定是不可能满足条件的。

 #include <cstdio>
#include <iostream>
#include <algorithm>
#include <set>
#include <string>
#include <vector> using namespace std;
vector<int> coinVal;
int main()
{
int N, M, tmpVal;
cin >> N >> M;
coinVal.resize(N);
for(int i = ; i < N; ++ i)
cin >> coinVal[i];
int tmpLast = N-;
sort(coinVal.begin(), coinVal.end());
for(int i = ; i < tmpLast; ++ i)
{
while(coinVal[i] + coinVal[tmpLast] > M)
tmpLast --;
if(tmpLast != i && coinVal[i] + coinVal[tmpLast] == M)
{
cout << coinVal[i] << " " << coinVal[tmpLast];
return ;
}
}
cout << "No Solution";
return ;
}

D Counting Ones

  这个题目需要先利用数学知识找一下规律,会发现每一位产生的1的个数是有规律的,见代码while循环部分。

  (其中numArray[i]是第i位数值,multBase是0-9、0-99、0-999...中包含1的个数,digitBase是0,10,100,1000...)

 #include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <string>
#include <vector> using namespace std;
int charToNum(char c)
{
return c-'';
}
int n;
char numStr[];
int numArray[];
int len;
int numDeal(int tmpN)
{
int tmpNum = ;
int digitBase = ;
int multBase = ;
while(tmpN >= )
{
if(numArray[tmpN] == )
{
tmpNum += numArray[tmpN] * multBase + n%digitBase+;
}
else if(numArray[tmpN] > )
{
tmpNum += numArray[tmpN] * multBase + digitBase;
}
multBase = * multBase + digitBase;
digitBase *= ;
tmpN--;
}
return tmpNum;
}
int main()
{ cin >> n;
sprintf(numStr, "%d", n);
len = strlen(numStr);
for(int i = ; i < len; ++ i)
numArray[i] = charToNum(numStr[i]);
int num = numDeal(len-);
cout << num;
return ;
}

PAT 2012 冬的更多相关文章

  1. Windows server 2012 添加中文语言包(英文转为中文)(离线)

    Windows server 2012 添加中文语言包(英文转为中文)(离线) 相关资料: 公司环境:亚马孙aws虚拟机 英文版Windows2012 中文SQL Server2012安装包,需要安装 ...

  2. Windows Server 2012 NIC Teaming介绍及注意事项

    Windows Server 2012 NIC Teaming介绍及注意事项 转载自:http://www.it165.net/os/html/201303/4799.html Windows Ser ...

  3. 1.初始Windows Server 2012 R2 Hyper-V + 系统安装详细

    干啥的?现在企业服务器都是分开的,比如图片服务器,数据库服务器,redis服务器等等,或多或少一个网站都会用到多个服务器,而服务器的成本很高,要是动不动采购几十台,公司绝对吃不消的,于是虚拟化技术出来 ...

  4. 0.Win8.1,Win10,Windows Server 2012 安装 Net Framework 3.5

    后期会在博客首发更新:http://dnt.dkill.net 网站部署之~Windows Server | 本地部署:http://www.cnblogs.com/dunitian/p/482280 ...

  5. windows 2012 r2 can't find kb2919355

    问题   解决: 1.手动安装了 Windows8.1-KB2919442-x64 2.手动下载 KB2919355 更新成功     Turns out to have been a result ...

  6. Windows Server 2012 磁盘管理之 简单卷、跨区卷、带区卷、镜像卷和RAID-5卷

    今天给客户配置故障转移群集,在Windows Server 2012 R2的系统上,通过iSCSI连接上DELL的SAN存储后,在磁盘管理里面发现可以新建 简单卷.跨区卷.带区卷.镜像卷.RAID-5 ...

  7. VMware下Windows Server 2012添加新磁盘

    系统管理员在VM下新装了一台Windows Server 2012服务器,我在上面安装了SQL Server 2014 Standard版数据库,安装之初,只分配了一个C盘,我想在这台服务器上添加了三 ...

  8. 在Windows Server 2012中如何快速开关桌面上经典的“计算机、我的文档”等通用图标

    我们都知道,在Windows Server 2012系列的服务器版本中都已经引入了Modern的现代界面作为默认的用户交互界面,同时满足视觉一致化,新版的服务器管理程序也做成了扁平化.因此传统的计算机 ...

  9. 《转载》PAT 习题

    博客出处:http://blog.csdn.net/zhoufenqin/article/details/50497791 题目出处:https://www.patest.cn/contests/pa ...

随机推荐

  1. Java8 使用LocalDate计算两个日期间隔多少年,多少月,多少天

    最近项目遇到一个需要计算两个日期间隔的期限,需要计算出,整年整月整日这样符合日常习惯的说法,利用之前的Date和Calendar类会有点复杂,刚好项目使用了JDK8,那就利用起来这个新特性,上代码: ...

  2. JavaScript深入理解对象方法——Object.entries()

    Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for...in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环也枚举原型链中的属性) 示例 ...

  3. 021、Java中汉子与数字的相互转换,利用字符变量保存中文

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  4. 【Jasypt】给你的配置加把锁

    前言 前几天,有个前同事向我吐槽,他们公司有个大神把公司的项目代码全部上传到了 github,并且是公开项目,所有人都可以浏览.更加恐怖的是项目里面包含配置文件,数据库信息.redis 配置.各种公钥 ...

  5. Good Bye 2019

    A.Card Game 题目大意:两个人都有共有n张卡牌,每张卡牌上都有一个数xi,没有两张牌上的数相同,且xi不小于1不大于n.每次两个人选出一张牌来,牌上数字大的人赢得此局,如果谁最后手上拥有所有 ...

  6. tornado 获取 路径上的参数

    https://www.cnblogs.com/quzq/p/10975766.html class JavaHandler(RequestHandler): #重写RequestHandler中in ...

  7. 实训23 功能FC的建立与调用

    第4章:实训23 功能的生成与条用 功能简称FC 是用户编写的没有自己存储区的逻辑块 . 功能主要用来执行条用一次就可以完成的操作. 类似于C语言中的 函数 步骤一 单击确定 以后 出现了 在下面图框 ...

  8. OSDA - 一个以MIT协议开源的串口调试助手

    市场其实有很多开源的串行端口调试助手(Open Serial Port debug assistant),但其中很大一部分没有明确的开源协议,还有一部分只限个人使用,所以编写了一个并以MIT协议授权开 ...

  9. 云时代架构阅读笔记二——Java性能优化(二)

    承接上文Java性能优化(一)https://www.cnblogs.com/guo-xu/p/11019267.html 4)尽量确定StringBuffer的容量 在说和这个标题相关之前,先说一下 ...

  10. 038-PHP向返回的闭包函数实例中,传递外部变量参数

    <?php # 向返回的闭包函数实例中,传递外部变量参数 # 直接调用将不会输出$txt的内容 function demo(){ $txt = '我爱PHP'; # 1.function()内的 ...