Rather than giving monsters the average HP listed in their stat block, give them the maximum.
Now that I've solved the titular problems for you, what do I win?
One solution I've used is to run encounters in waves. Say the party encounter a frost giant hunting party. Maybe they only meet a couple at first. Assuming a fight breaks out, the party thinks they only have to worry about a couple giants. On round four, a half dozen winter wolves arrive, on round eight, the two giants that were tracking with the wolves arrive. An hour after the fight ends, the huntsman and his pack find the dead giants. He immediately begins tracking the party.
Alternately, the fight with the giants attracts other creatures, say a local bear that is protecting her young, or some fey that think it would be great fun to play tricks on the combatants. If one of the fey is slain, however, they stop playing.
If you want players to manage short-term resources (rage,
bless, etc.), space the waves a few minutes apart, instead of a few rounds.
I don't do this every time, of course. Just enough so the players don't think they can safely nova against a single encounter.
One other thought: there's nothing wrong with giving the party an easy encounter now than then. Let them run into some orcs who quickly flee when they realize the party are not easy prey. The players feel good about their characters, maybe they pick up some useful info, and play continues. Parties don't have to be challenged every adventuring day, just often enough that the players have a sense of accomplishment when they succeed.