你最愿意做的哪件事,才是你的天赋所在

0%

题目链接

HDU-1024

思路

动态规划,d[i][j]表示在选取第j个数字的情况下,将前j个数字分成i组的最大和, 考虑第j个数字加入,得到状态转移方程

dp[i][j]=max(dp[i][j-1],dp[i-1][i-1~j-1])+num[i];
前面部分就是把当前这个数与前面一个子序列连续起来,后面一个则是另起一个序列

阅读全文 »

题目链接

Codeforces Round #598(div3)

A

思路

就是问x个n和b个1能否组成S,贪心,先用n,不够的再用1即可。

实现代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{
int q;
scanf("%d",&q);
while(q--)
{
int a,b,n,s;
cin>>a>>b>>n>>s;
if(1ll*a*n>s)s=s%n;
else s=s-(a*n);
if(b>=s)printf("YES\n");
else printf("NO\n");
}
}
阅读全文 »

调度的类型

长期调度

将已进入系统并处于后备状态的作业按某种算法选择一个或一批,为其建立进程,并装入主机,当该作业执行完毕时,负责回收系统资源。

中期调度(交换调度)

能将进程从内存或者从CPU竞争中移出,从而降低多道程序设计的程度,之后能被重新调入内存,并从中断处继续执行。主要的任务是按照给定的原则和策略,将处于外存交换区中的就绪状态或等待状态的进程调入内存,或把处于内存就绪状态或内存等待状态的进程交换到外存交换区

阅读全文 »

进程的概念

程序的执行顺序

顺序性

处理机的操作严格按照程序所规定的顺序执行,即每一操作必须在下一操作开始之前结束。

封闭性

程序一旦开始运行,其执行结果不受外界因素影响。因为程序运行时独占系统的各种资源,故这些资源的状态(除初始状态外)只有本程序才能改变。

可再现性

只要程序执行时的初始条件和执行环境相同,当程序重复执行时,都将获得相同的结果。

阅读全文 »

操作系统的四种技术

手工操作阶段

操作人员将纸带(或卡片)装入输入及,然后启动输入及将程序和数据送入计算机,最后得出结果,每次只能一个用户使用。
1.资源利用率低
2.用户独占计算机资源

脱机输入/输出技术

为了减少CPU的空闲等待I/O时间,预先将数据和程序在一台外围机的控制下先低速传入磁带中,当需要的首,再从磁带告诉输入,得出的输出结果高速输出到磁带上,然后再低速送至外围机。
1.若输入/输出操作再主机控制下进行则称之为联机输入/输出

阅读全文 »

TCP

服务端

TCP的数据传送使用的是流,也就是通过DataInputStream,DataOutputStream来传递。
在服务器端,我们需要绑定监听端口,然后就可以获取该端口的输入流和输出流。
ServerSocket 是创建一个socket的服务,指定监听窗口。
然后用该对象能够返回一个Socket,通过这个Socket中的信息来通信

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package Socket;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.*;
public class Server {

public static void main(String[] args) {
ServerSocket socket = null;
Socket socket2 = null;
try {
//此处可以直接改为try-with-resoutce形式,避免使用finally语句关闭资源
socket = new ServerSocket(8000);
//创建一个ServerSocket对象,指定监听端口,与客户端程序保持一致
System.out.println("Listening on port 8000");
socket2 = socket.accept();
//监听并等待接受连接:accept
DataInputStream in = new DataInputStream(socket2.getInputStream());
DataOutputStream out = new DataOutputStream(socket2.getOutputStream());
//创建Data Input/Output 流
double radius = in.readDouble();
//从客户端接受圆的半径(通过DataInput流读取)
double area = radius*radius*Math.PI;
//计算圆的面积
out.writeDouble(area);
//把圆面积发给客户端
System.out.println("Send Area:"+area+" to client");
//输出提示信息
// 加入while循环,使得服务器不断接收半径并且发送面积
// 从客户端接受圆的半径
//半径小于0,则退出循环
//计算圆的面积
//把面积发送给客户端
//输出提示信息
in.close();
out.close();
socket2.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}finally {
}
}

}

阅读全文 »

调度方式

FIFO(first in first out)

Nonpreemptive(不可剥夺):进程一直在CPU上run,直到阻塞或者进程结束

优点

1.代码编写简单,利于理解

缺点

1.平均等待时间长
2.短作业有可能在长作业之后,导致等待的时间变长。

Round robin(分时调度)

优点

1.对于短期作业,很快就能运行完

阅读全文 »

学习步骤

java分成J2ME(移动应用开发),J2SE(桌面应用开发),J2EE(Web企业级应用),所以java并不是单机版的,只是面向对象语言。建议如果学习java体系的话可以这样去学习:

第一阶段

Java基础,包括java语法,面向对象特征,常见API,集合框架;

第二阶段

java界面编程,包括AWT,事件机制,SWING,这个部分也可以跳过,用的时候再看都能来及;

阅读全文 »

题目链接

HDU-6265

思路

因为$\phi$函数是积性函数,所以他的和函数也是积性函数,所以我们分别算出每一个质数对它的贡献然后相乘即可。

这样就能对每一个进行计算答案了,注意当i=0的时候的答案需要另外算。

阅读全文 »

创建线程的两种方式

1
2
3
4
5
6
7
8
9
package unit07;
public class HelloThread extends Thread {
public void run() {
System.out.println("Hello from a thread!");
}
public static void main(String args[]) {
(new HelloThread()).start();
}
}
阅读全文 »