Yes, this can be done easily...
1) Create a query for each grouping of systems, define your query well enough so that only the systems you want to get the software do. Run the query to verify.
2) Can be done using the query you create above and by adding to it do exclude if "application A, B, OR C" are installed. This will take more effort and is a bit trickier than item 1, but can be done.
You then create "Policy" based jobs (A 'push' can be done as well) and set your deliver method to how you want it, and then drag the query to it.
Not sure if you have access to the training here or not, but you should look here if you do for more help
Please post back if you need more guidance
Thanks alot for your reply James, I didnt get a chance test this out will try the steps which you have provided and will let you know the results
Trying to create a query based on your inputs but not able understand how to provide exclusion command and how to include the applications comparision in the query, Request you to provide an example.