Time limit : 1 s | Memory limit : 32 mb |
---|---|
Submitted : 6 | Accepted : 2 |
64bit Integer Format : %lld |
---|
#include <stdio.h> #include <stdlib.h> #include <cstdio> struct info{ double val; int pos; }; int amount(info a[],int n) { int i,j; for(i=0;i<n;i++) { for(j=i+1;j<n;j++) { if(a[j].val>a[i].val) { double t; t = a[i].val; a[i].val=a[j].val; a[j].val=t; int tt; tt=a[i].pos; a[i].pos=a[j].pos; a[j].pos=tt; } } } return 0; } int main() { int M,N; int i; while(1) { scanf("%d %d",&M,&N); if(M==-1&&N==-1) break; info price[N]={0}; int F[N]={0},J[N]={0}; for(i=0;i<N;i++) { scanf("%d %d",&J[i],&F[i]); price[i].val=(double)J[i]/F[i]; price[i].pos=i; } amount(price,N); double output=0; for(i=0;i<N;i++) { if(M>=F[price[i].pos]) { output+=price[i].val*F[price[i].pos]; M-=F[price[i].pos]; } else if(M>0&&M<F[price[i].pos]) { output+=price[i].val*M; M=0; break; } } printf("%.3lf\n",output); } return 0; }
然而在oj里面。。。Runtime Error
没办法啊,只好看看哪里可以改进
2.sort
#include<stdio.h> #include<stdlib.h> #include<algorithm> using namespace std; const int MAXN = 1010; struct node { double j,f; double r; }a[MAXN]; /* int cmp(const void *a,const void *b)//从大到小排序 { struct node *c=(node *)a; struct node *d=(node *)b; if(c->r > d->r) return -1; else return 1; } */ bool cmp(node a,node b) { return a.r > b.r; } int main() { int N; double M; double ans; while(scanf("%lf%d",&M,&N)) { if(M==-1&&N==-1) break; for(int i=0;i<N;i++) { scanf("%lf%lf",&a[i].j,&a[i].f); a[i].r=(double)a[i].j/a[i].f; } //qsort(a,N,sizeof(a[0]),cmp); sort(a,a+N,cmp); ans=0; for(int i=0;i<N;i++) { if(M>=a[i].f) { ans+=a[i].j; M-=a[i].f; } else { ans+=(a[i].j/a[i].f)*M; break; } } printf("%.3lf\n",ans); } return 0; }
key3:without sort:
#include<stdio.h> #include<stdlib.h> const int MAXN = 1010; struct node { double j,f; double r; }a[MAXN]; int cmp(const void *a,const void *b)//从大到小排序 { struct node *c=(node *)a; struct node *d=(node *)b; if(c->r > d->r) return -1; else return 1; } int main() { int N; double M; double ans; while(scanf("%lf%d",&M,&N)) { if(M==-1&&N==-1) break; for(int i=0;i<N;i++) { scanf("%lf%lf",&a[i].j,&a[i].f); a[i].r=(double)a[i].j/a[i].f; } qsort(a,N,sizeof(a[0]),cmp); ans=0; for(int i=0;i<N;i++) { if(M>=a[i].f) { ans+=a[i].j; M-=a[i].f; } else { ans+=(a[i].j/a[i].f)*M; break; } } printf("%.3lf\n",ans); } return 0; }
输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0)。
你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。
初玩can,接触第三天的一道水题
第一程序为最初所写,第二个为参考优化后,
#include"stdio.h"
main()
{
char c;
while((scanf("%c",&c))!=EOF)
{
char a[1300];
long long int b[1300],sum=0;
int state=0,temp,k=0,i,j,l;
for(i=0;c!='\t'&&c!='\n'&&c!=' ';i++)
{
a[i]=c;
scanf("%c",&c);
}
a[i]='\0';
for(j=0;j<i;j++)
{
if(a[j]=='5')
{
if(state==1)
b[k++]=sum;
state=0;
sum=0;
}
else if(a[j]=='0')
{
state=1;
sum=sum*10+a[j]-'0';
}
else
{
sum=sum*10+a[j]-'0';
state=1;
}
}
if(state==1)
b[k++]=sum;
k--;
for(j=0;j<k;j++)
for(l=0;l<k-j;l++)
{
if(b[l]>b[l+1])
{
temp=b[l];
b[l]=b[l+1];
b[l+1]=temp;
}
}
for(i=0;i<=k-1;i++)
{
printf("%lld ",b[i]);
}
printf("%lld\n",b[i]);
}
}
2.
对于一个存在着标准输入输出的C++控制台程序,一般会在#include <iostream>的下一行发现一句话,using namespace std。
这句话其实就表示了所有的标准库函数都在标准命名空间std中进行了定义。其作用就在于避免发生重命名的问题。
#include <iostream> using namespace std; namespace ZhangSan { int a=10; //张三把10赋值给了变量a } namespace LiSi { int a=5; //李四把10赋值给了变量a } void main() { int a=1; cout<<"张三定义的a="<<ZhangSan::a<<endl; cout<<"李四定义的a="<<LiSi::a<<endl; cout<<"主函数定义的a="<<a<<endl; }
上例中的“ZhangSan::a”和“LiSi::a”分别表示了调用张三命名空间中的a变量和李四命名空间中的a变量。这样的好处显而易见,那就是虽然张三和李四这两个程序员都定义了一个变量a,但是并不会出现重名的危险。
2. 关于using namespace *
std::cout |
#include <iostream> using namespace std; namespace ZhangSan { int a=10; //张三把10赋值给了变量a } namespace LiSi { int a=5; //李四把10赋值给了变量a } void main() { int a=1; using namespace ZhangSan; using namespace LiSi; cout<<a<<endl; }
#include <iostream> using namespace std; namespace ZhangSan { int a=10; //张三把10赋值给了变量a } namespace LiSi { int a=5; //李四把10赋值给了变量a } void main() { using namespace ZhangSan; using namespace LiSi; cout<<a<<endl; }
吃糖果问题
复杂方法:
#include<stdio.h> #include<math.h> #include<stdlib.h> main() { int i,t,j,N,f[50]={0}; scanf("%d",&t); for(i=0;i<t;i++) { scanf(" %d",&N); for(j=0;j<N;j++) { scanf(" %d",&f[j]); } int k; for(j=0;j<N;j++) { for(k=0;k<N;k++) { if(f[i]<f[i+1]) { int middle = f[i]; f[i]=f[i+1]; f[i+1]=middle; } } } int flag=f[0]; for(k=0;k<N;k++) { flag=flag-f[k+1]; } if(flag>=2) printf("No\n"); else printf("Yes\n"); } }
简便算法:
# include<stdio.h> int main() { long T, N; double candy, max,sum; scanf("%d",&T); while(T--) { scanf("%d", &N); max = sum = 0; while(N--) { scanf("%lf", &candy); max = max > candy ? max : candy; sum += candy; } sum -= max; if(max <= sum + 1) printf("Yes\n"); else printf("No\n"); } }
#include <stdio.h> #include <stdlib.h> #include <math.h> int is_prime(int a) { int j; for(j=2;j<=sqrt(a);j++) { if(a % j ==0) { return 1; } } return 0; } int main() { int x,y; while(1) { int flag=0; scanf("%d%d",&x,&y); int i; if(x==0&&y==0) return 0; if(x>y) { int t=y; y=x; x=t; } for(i=x;i<=y;i++) { int s; s = i*i+i+41; if(is_prime(s)) { flag++; break; } } if(flag == 0) printf("OK\n"); else printf("Sorry\n"); } return 0; }
很简单的一道题,发出来纯粹是因为无聊。这个题一直不能Accept,本来以为是我写错了,最后老师查出来是hoj问题。。。
LaTex 的特点:
1.LaTeX是一类用于编辑和排版的软件,用于生成PDF文档。
2.LaTeX编辑和排版的核心思想在于,通过\section和\paragraph等语句,规定了每一句话在文章中所从属的层次,从而极大方便了对各个层次批量处理。
3.LaTeX在使用体验方面,最不易被Word替代的有四个方面:方便美观的数学公式编辑、不会乱动的退格对齐、非所见即所得
因此可以在编辑的时候用退格和换行整理思路,但生成PDF出来不影响美观、部分导师和刊物不接受Word排版的文章。
1.hello world
\documentclass{article} \begin{document} hello, world \end{document}
ps:why the first test sample is always hello world?
quote from my teacher:"Because this proves you have successfully installed the needed environment.
2.标题、作者和注释
\documentclass{article} \author{My Name} \title{The Title} \begin{document} \maketitle hello, world % This is comment \end{document}
默认是有时间的,如果不想要日期的话
\documentclass{article} \author{My Name} \title{The Title} \date{} \begin{document} \maketitle hello, world % This is comment \end{document}
3.章节和段落
\documentclass{article} \title{Brief Introduction} \begin{document} \maketitle \section{Hello China} China is in East Asia. \subsection{Hello Beijing} Beijing is the capital of China. \subsubsection{Hello Dongcheng District} \paragraph{Tian'anmen Square}is in the center of Beijing \subparagraph{Chairman Mao} is in the center of Tian'anmen Square \subsection{Hello Guangzhou} \paragraph{Harbin Institute of Technology} is the best university in the northeast China. \end{document}
4.加入目录
\documentclass{article} \begin{document} \tableofcontents \section{Hello China} China is in East Asia. \subsection{Hello Beijing} Beijing is the capital of China. \subsubsection{Hello Dongcheng District} \paragraph{Hello Tian'anmen Square}is in the center of Beijing \subparagraph{Hello Chairman Mao} is in the center of Tian'anmen Square \end{document}
5.数学公式
\documentclass{article} \usepackage{amsmath} \usepackage{amssymb} \begin{document} The Newton's second law is F=ma. The Newton's second law is $F=ma$. The Newton's second law is $$F=ma$$ The Newton's second law is \[F=ma\] Greek Letters $\eta$ and $\mu$ Fraction $\frac{a}{b}$ Power $a^b$ Subscript $a_b$ Derivate $\frac{\partial y}{\partial t} $ Vector $\vec{n}$ Bold $\mathbf{n}$ To time differential $\dot{F}$ Matrix (lcr here means left, center or right for each column) \[ \left[ \begin{array}{lcr} a1 & b22 & c333 \\ d444 & e555555 & f6 \end{array} \right] \] Equations(here \& is the symbol for aligning different rows) \begin{align} a+b&=c\\ d&=e+f+g \end{align} \[ \left\{ \begin{aligned} &a+b=c\\ &d=e+f+g \end{aligned} \right. \] \end{document}
如果想用其他格式的话可以是去查看手册或者参考别人的文档
5.插入图片
\documentclass{article} \usepackage{graphicx} \begin{document} \includegraphics[width=4.00in,height=3.00in]{Model.png} \end{document} 注:图片要和文档放在同一文件夹下面
6.插入表格
\documentclass{article} \begin{document} \begin{tabular}{|c|c|} a & b \\ c & d\\ \end{tabular} \begin{tabular}{|c|c|} \hline a & b \\ \hline c & d\\ \hline \end{tabular} \begin{center} \begin{tabular}{|c|c|} \hline a & b \\ \hline c & d\\ \hline \end{tabular} \end{center} \end{document}
7.中文支持
\documentclass{ctexart} \begin{document} 你好,世界 \end{document}
只需要把开头的\documentclass{atricle}换成\documentclass{ctexart}就可以了。
如果是第一次使用ctexart的话,会自动下载和安装宏包和模板,之后就不会再下载了。
1.宏包
\package{}就是在调用宏包,对计算机实在外行的同学姑且可以理解为工具箱。
每一个宏包里都定义了一些专门的命令,通过这些命令可以实现对于一类对象(如数学公式等)的统一排版(如字号字形),或用来实现一些功能(如插入图片或制作复杂表格)。
通常在\documentclass之后,在\begin{document}之前,将文章所需要涉及的宏包都罗列上。
对于新人而言比较常用的宏包有
编辑数学公式的宏包:\usepackage{amsmath}和 \usepackage{amssymb}
编辑数学定理和证明过程的宏包:\usepackage{amsthm}
插入图片的宏包:\usepackage{graphicx}
复杂表格的宏包:\usepackage{multirow}
差不多了,对于新人来说,这五个宏包已经基本够用了。如果有其他的特殊需求,就通过google去寻找吧。
补充说明一下,现在ctexart模板里集成了中文支持,所以CJK宏包并不是必需品。
2.模板
模板就是在\documentclass{}后面的大括号里的内容。
在这一份教程中,我们使用的是LaTeX默认自带的模板article,以及中文模板ctexart。
模板就是实现我之前所介绍的LaTeX的经验总结的第二点的实现方式。
一篇文章,我们定义了section,定义了paragraph,就是没有定义字体字号,因为字体字号这一部分通常来说是在模板中实现的。
一个模板可以规定,section这个层级都用什么字体什么字号怎么对齐,subsection这个层级用什么字体什么字号怎么对齐,paragraph又用什么字体什么字号怎么对齐。当然模板里还可以包含一些自定义的口令,以及页眉页脚页边距一类的页面设置。由于模板的使用,在我的使用经验里来看,绝对不可能算是基本入门级的内容,所以在正文里当然不会提及。如果有人实在想学,如果LaTeX已经接触到这个程度上了,那么再去翻其他厚一些的教材,也不亏了。
3.参考文献和制作幻灯片
做参考文献的时候,文章也已经快写到尾声了,而幻灯片更不是进阶一些的需求。对这两个功能有需求的LaTeX user,使用LaTeX也已经相当熟练了,自己去google一下或查阅其他厚教程是很理所当然的,一点也不冤枉。
在此我就只提供两个搜索关键词,参考文献可以搜bibtex,制作幻灯片可以搜beamer。
一. 实验目的
1. 掌握自定义类的创建和使用等操作
2. 掌握 matplotlib 模块的使用
二. 实验内容
文件UN.txt中存放193个联合国成员信息,每行包括一个国家的名称、所在大洲、人口(百万)和面积(平方英里),例如:
Canada,North America,34.8,3855000
France,Europe,66.3,211209
New Zealand,Australia/Oceania,4.4,103738
Nigeria,Africa,177.2,356669
Pakistan,Asia,196.2,310403
Peru,South America,30.1,496226
(a) 创建一个Nation类包括四个实例变量存储国家信息和一个名为pop_density方法计算一个国家的人口密度。用这个类编写一个程序包含193个词条的字典。每个词条形式如下:
name of a country: Nation object for that country
用文件UN.txt创建这个字典,将这个字典保存到一个名为nationsDict.dat的永久二进制文件中,同时将Nation类保存到nation.py文件中。
(b) 利用nationsDict.dat和nation.py文件编写一个程序(search.py),输入联合国成员国名字,显示这个国家所有信息。如:
Enter a country: Canada
Continent: North America
Population: 34,800,000
Area: 3,855,000.00 square miles
(c) 利用nationsDict.dat和nation.py文件编写一个程序(sort.py),输入一个大洲的名字,按照降序使用 matplotlib 的柱状图功能画出该大洲人口密度前10名的联合国成员国名字及对应的人口密度。
将文件 nationsDict.dat,nation.py,search.py,sort.py 打包上传,压缩文件命名为:学号_姓名_实验2
nation.py
import pickle class nation: def __init__(self, name='', continent='', pop='', area='', pop_density=''): self._name = name self._continent = continent self._pop = pop self._area = area self._pop_density =pop_density def setName(self, name): self._name = name def setContinent(self, continent): self._continent = continent def setPop(self, pop): self._pop = pop def setArea(self, area): self._area = area def getName(self, name): return self._name def getContinent(self, continent): return self._continent def getPop(self, pop): return self._pop def getArea(self, area): return self._area def pop_density(self): return (self._pop / self._area) def __str__(self): return ("The poplation density of" + str(self._name) + "is" + str(self.pop_density())) f = open('UN.txt') dict = {} for line in f: words = line.split(",") _nation=nation(continent='', pop='', area='', pop_density='') _nation.setName(words[0]) _nation.setContinent(words[1]) _nation.setPop(words[2]) _nation.setArea(words[3]) dict[words[0]] = _nation outfile = open("nationsDict.dat",'wb') pickle.dump(dict,outfile) outfile.close()
search.py
import pickle import nation def getDictionary(fileName): infile = open(fileName, 'rb') nations =pickle.load(infile) infile.close() return nations def inputNameOfNation(nations): nation = input("Input a name of a UN member nation: ") while nation not in nations: print("Not a member of the UN.Please try again.") nation = input("Input a name of a UN member nation: ") def displayData(nations,nation): print("Continent:", nations[nation]['continent']) print("Populaton:",nations[nation]['pop'], "million people") print("Area:",nations[nation]['area'],"square miles") nations = getDictionary("nationsDict.dat") nation = inputNameOfNation(nations) displayData(nations,nation)
sort.py
import matplotlib.pyplot as plt import nation import pickle def getDictionary(fileName): infile = open(fileName, 'rb') nations =pickle.load(infile) infile.close() return nations nations = getDictionary("nationsDict.dict") for i in nations[i]: nation.pop_density() nation.pop_density.sort plt.bar(data['x'], data['y'])
不建议任何人直接复制此代码
cd /usr/share/applications/ vim Pycharm.desktop //如果没有此文件,可以新建一个. [Desktop Entry] Type=Application Name=Pycharm GenericName=Pycharm3 Comment=Pycharm3:The Python IDE Exec=sh /sdb/python/pycharm-2016.2.3/bin/pycharm.sh //修改为你的地址 Icon=/sdb/python/pycharm-2016.2.3/bin/pycharm.png //修改为你的地址 Terminal=pycharm Categories=Pycharm;
我这个例子是给pycharm创建一个快捷方式。
给其他应用程序创建快捷方式,只需照猫画虎即可。
#!/usr/bin/env xdg-open [Desktop Entry] Categories=Development; Comment[zh_CN]= Comment= Exec=/home/obaby/soft/pycharm-2016.1/bin/pycharm.sh %f GenericName[zh_CN]=IDE GenericName=IDE Icon=/home/obaby/soft/pycharm-2016.1/bin/pycharm.png MimeType= Name[zh_CN]=PyCharm Name=PyCharm Path= StartupNotify=true Terminal=false Type=Application X-DBUS-ServiceName= X-DBUS-StartupType= X-KDE-SubstituteUID=false X-KDE-Username=obaby
上面是另一个人给的kde桌面的代码。
其实都是一个道理
wget https://bootstrap.pypa.io/ez_setup.py #安装easy_install-3.5 python3.5 ez_setup.py #安装完成后/usr/local/bin/目录下出现easy_install-3.5 #安装pip3.5 easy_install-3.5 pip #安装完成后/usr/local/bin/目录下出现pip3.5 #升级pip3.5版本 pip3.5 install --upgrade pip
十一月 | ||||||
---|---|---|---|---|---|---|
日 | 一 | 二 | 三 | 四 | 五 | 六 |
27 | 28 | 29 | 30 | 31 | 1 | 2 |
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |